Beste leden ,
Wie kan mij hieruit helpen ? Ik probeer een ip adres dat in mysql zit naar men scriptje op te roepen maar ik krijg bv ipv 127.0.0.1 ==> 127.0.0.1.127 . Hoe kan dit ? Heb even in phpmyadmin gezien en daar staat het ook goed ( 127.0.0.1 ) . Ik snap er even niets van .
Oproepen gebeurd door :
En de mysql tabel is een tabel met :PHP Code:
<?php
$result = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($result))
{
echo $row['IP'] ."";
}
?>
Naam : IP
Type : Varchar
Lengte : 32
Standaardwaarde : NULL
Collatie : latin1_german1_ci
Null : aangevinkt .
Met Vriendelijke Groeten
- Magische Mysql
-
16-08-2010, 20:43 #1
- Berichten
- 459
- Lid sinds
- 15 Jaar
Magische Mysql
-
-
16-08-2010, 20:50 #2
- Berichten
- 1.410
- Lid sinds
- 16 Jaar
En als je de sql aanroept via een queryBrowser?
Als die gewoon 127.0.0.1 weergeeft dan zit de fout niet in de sql.
-
16-08-2010, 21:03 #3
- Berichten
- 459
- Lid sinds
- 15 Jaar
Het blijft het zelfde , heb verschillende browsers geprobeert . Heb echt geen idee waarom hij dat laatste stukje laat zien ..
-
16-08-2010, 21:21 #4
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Is je mysql client en mysqlserver wel dezelfde versie? Heb dat al vaker gezien als de versie nummers niet gelijk lopen. Dan denk je echt dat je gek wordt ;)
-
16-08-2010, 21:52 #5
- Berichten
- 459
- Lid sinds
- 15 Jaar
Ja de versie is het zelfde : 5.0.51a . Ik snap hier echt niets van éh ..
-
16-08-2010, 21:58 #6
- Berichten
- 1.499
- Lid sinds
- 17 Jaar
Schitterend, is dit alleen bij local loopback IP? (127.0.0.1)
-
16-08-2010, 22:24 #7
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Damn, nu breek ik me weer de kop hierover :)
Ergens vaag meen ik me te herinneren dat ik het ooit heb gehad na een conversie van een weird utf-8 formaat. Maar ik weet niet meer zeker of dat fout ging bij de alter table of dat de fetch van php hier idioot ging doen. Ik heb toen wel een paar libs geupdate en toen was het probleem opgelost, maar hoe het nu precies zat... geen idee meer... waarschijnlijk had ik toen al een emmer valium achter de kiezen :)
Edit: Je hebt niet toevallig het ip adres als unicode in een latin tabel gestopt, he ?Laatst aangepast door John Timmer : 16-08-2010 om 22:39
-
17-08-2010, 17:37 #8
- Berichten
- 459
- Lid sinds
- 15 Jaar
unicode ? Het Ip adres wordt gewoon geupdate naar de database . Dus snap niet goed wat je bedoelt ?
-
17-08-2010, 17:50 #9
- Berichten
- 691
- Lid sinds
- 15 Jaar
Misschien kun je beter kijken naar een andere methode van opslaan:
http://arjen-lentz.livejournal.com/44290.html
http://www.mybelovedphp.com/2007/05/...bers-in-mysql/
-
17-08-2010, 17:51 #10
- Berichten
- 1.053
- Lid sinds
- 17 Jaar
Haha, dat wordt een lang verhaal dan. Controleer eerst even of je wel de goede gegevens/database/host uitleest. Verander de waarde eens en lees 'm dan opnieuw uit, iets veranderd?
-
17-08-2010, 17:59 #11
- Berichten
- 459
- Lid sinds
- 15 Jaar
@robert , heb al eerder de waarde via phpmyadmin veranderd , maar nog steeds het zelfde . Maar nu heb ik een extra account gemaakt , maar nu leest hij de waarde dubbel :s . Dus elke keer dat ik een gebruiker toevoeg met een ander ip adres , leest hij dat ipx het aantal gebruikers .. Ik ga maar is even de volledige code plaatsen . Let niet op de tabellen die zijn tijdelijk !!
<?php
error_reporting(E_ALL);
include("config.php");
if($data->admin != "1") {
echo "Fout ! U bent geen Administrator";
exit;
}
?>
<head>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
</head>
<body bgcolor="#E6E6E6" style="background-color: #E6E6E6; background-image: url('')">
<table border="1" width="100%" cellspacing="0" cellpadding="0" bordercolor="#CCCCCC" id="table2">
<tr>
<td height="30"> <b><font face="Arial" color="#6F6F6F">IP Adressen
</font></b> </td>
</tr>
<tr>
<td></p>
<table border="0" width="100%" id="table3" cellspacing="0" cellpadding="0" bgcolor="#E6E6E6">
<tr>
<td width="1%" align="center">
<table border="0" width="100%" id="table4" cellspacing="0" cellpadding="0" height="1100%">
<tr>
<td width="2%"> </td>
<td><font color="#336699"><span style="font-size: 9pt"><i>Welkom
bij IP Beheer , hier kan u zien welke IP adressen geregistreerd
staan in het systeem .</i></span></font><hr color="#CCCCCC">
<p> </td>
<td width="2%"> </td>
</tr>
<tr>
<td width="2%"> </td>
<td repeat-x height="25">
<table border="1" width="100%" cellspacing="0" id="table6" bordercolor="#CCCCCC">
<tr>
<td height="24" bordercolor="#CCCCCC" background="images/tabelachtergrond.JPG"> <span style="font-weight: 700; font-size: 9pt">Ip-Adres</span></td>
</tr>
</table>
</td>
<td width="1178"> </td>
</tr>
<tr>
<td width="2%"> </td>
<td>
<table border="1" width="100%" id="table5" bordercolor="#CCCCCC" cellspacing="0">
<tr>
<td width="6%" height="25" align="center"><font color="#4F4F4F">
<span style="font-weight: 700; font-size: 9pt">ID </span></font></td>
<td width="6%" height="25" align="center"><font color="#4F4F4F">
<span style="font-weight: 700; font-size: 9pt">Status</span></font></td>
<td width="55%" height="25" align="left">
<font color="#4F4F4F">
<span style="font-weight: 700; font-size: 9pt">Gebruiker
:</span></font></td>
<td width="30%" height="25" align="left">
<font color="#4F4F4F">
<span style="font-weight: 700; font-size: 9pt">IP Adres
:</span></font></td>
</tr>
<?
$dbres = mysql_query("SELECT * FROM `users` ORDER BY `power` DESC LIMIT 0,99");
while($list = mysql_fetch_assoc($dbres))
{
$j++;
$user1 = mysql_query("SELECT * FROM `users` WHERE `login`='$list[login]'");
$user = mysql_fetch_object($user1);
$online1 = mysql_query("SELECT * FROM `users` WHERE UNIX_TIMESTAMP(NOW())-UNIX_TIMESTAMP(`online`) < 300 AND `login`='$user->login'");
$online = mysql_fetch_object($online1);
?>
<tr>
<td width="6%" height="25" align="center">
<font color="#565656"><span style="font-size: 9pt"><?echo$j;?></span></font></td>
<td width="6%" height="25" align="center"><?
if($online->login != $user->login){
?>
<img src="images/icons/status_offline.gif" title="Offline">
<?}
if($online->login == $user->login){
?>
<img src="images/icons/status_online.gif" title="Online">
<?}?></td>
<td width="55%" height="25" align="left">
<font color="#565656"><span style="font-size: 9pt">
<a><?if($user->admin > 0){?><FONT color=red><?}?><?if($user->moderator > 0){?><FONT color='#336699'><?}?><?echo$list[login];?><?if($user->admin > 0 || $user->moderator > 0){?></FONT><?}?><?if($user->vipdays > 0){?><img src="images/star.gif" border="0" width="10" height="10" alt="Betaald account"><?}?></font></a><FONT color=red>
</font></span></td>
<td width="30%" height="25" align="left">
<font color="#565656"><span style="font-size: 9pt">
<?php
$result = mysql_query("SELECT * FROM users");
while($row = mysql_fetch_array($result))
{
echo $row['IP'] ."";
}
?>
</span></font></td></td>
</tr>
<?}?>
</table>
</td>
<td width="1178"> </td>
</tr>
<tr>
<td width="2%"> </td>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </td>
<td width="1178"> </td>
</tr>
</table>
</td>
</tr>
</table>
-
17-08-2010, 18:12 #12
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Het is even lastig uit te leggen, maar je hebt een paar gangbare character sets. ISO-8859-1 veel gebruikt voor normale ascii teksten), windows-1252 (uitbreiding op de voorgaande, ook latin1 genoemd met wat extra tekens zoals het euro teken), UCS (codeert tekens altijd in 2 bytes) en UTF-8.
Hoe iets wordt opgeslagen is afhankelijk van de manier waarop en het 'target' waar het in komt te staan. Stel je webpage werkt zonder character set definitie. Dan krijg je standaard ISO-8895-1 (behalve als je IE gebruikt, die maakt er Windows-1252 van) en daarna komt het uiteindelijk in je utf-8 tabel terecht. Je hebt dan te maken met een aantal 'onzichtbare' conversies die niet voor álle tekens goed gaan. Deels is dit afhankelijk van de default charset van de serversettings zelf. 99 van de 100 keren gaat dit gewoon goed, maar de 100ste keer word je langzaamaan gek...
Dit gebeurd wel eens bij servers die in de US gehost worden of in een andere taal zijn geďnstalleerd.
Waarom gaat dit goed in phpmyadmin en niet in je php script? Phpmyadmin zal voor een utf-8 eerst een 'set names utf-8' doen om de default conversie van de server setting te overrulen. Je script doet dat waarschijnlijk niet en gebruikt de default server setting dan voor de conversie. In ongelukkige gevallen denkt de server 'onder water' dat ie iets van A naar B moet converteren en als dat niet goed staat, 'mist' ie op het einde van je data een teken. Die 127 die je op het einde ziet zijn waarschijnlijk het resultaat van het niet herkennen van de voorgaande bit '\0' als zijnde het einde van de data binnen het veldje.
Ik kan hier nog verder over gaan maar dan krijg je vast koppijn ;)
Wat je eens kunt proberen is:
- een set names 'utf-8' uitvoeren voordat je de data select's en
- controleren wat de default charset van de server is
- je webpage een juiste charset encoding meegeven indien je deze gebruikt om het ip op te slaan.
Vast een antwoord waar je me niet erg dankbaar voor gaat zijn :)
-
17-08-2010, 18:49 #13
- Berichten
- 1.053
- Lid sinds
- 17 Jaar
John, denk je dat de encoding zelfs een string gaat herhalen/concatten? Ik bedoel, het zou natuurlijk kunnen, maar da's dan wel een worst case scenario?
Ik vind het overigens een erg duidelijke en toegankelijk uitleg. :)
-
17-08-2010, 20:09 #14
64BitsWebhosting.EU
- Berichten
- 2.085
- Lid sinds
- 18 Jaar
Dit probleem krijg je ook nooit in het begin of in het midden van een string (normale conversiefouten niet in acht genomen) maar altijd op het einde. De encoder denkt een 0x00 0x00 te vinden , terwijl het maar 1 keer een 0x00 vindt. De 0xff die erna komt is onderdeel van het volgende blokje, veldje, nieuw veld indicator of whatever. De 0-9 en punt zijn onderdeel van de normale asciiset en worden daardoor in dezelfde lengte gecodeerd. Vrijwel alle sets coderen die even lang, puur omdat ze standaard ASCII zijn net zoals de a-zA-Z maar er zijn ook sets (chinese tekens bv.) die een variabel aantal gebruiken (Big5 dacht ik).
In principe moet je zorgen dat alles in een volledig compatibel charset wordt gedaan, anders kan het resultaat ondefineerbaar zijn.
Dus keyboard settings -> webserver -> tcp verbinding -> - db -> webbrowser -> scherm moet allemaal in staat zijn om zonder problemen alle data te kunnen omzetten. In het geval van TS, zal dit probleem waarschijnlijk met een serversetting zoals AddDefaultCharset utf-8 (en idem charset in de webpage) opgelost kunnen worden. Maar het kan tijdrovend zijn om het precies uit te zoeken.
-
17-08-2010, 20:13 #15
- Berichten
- 1.053
- Lid sinds
- 17 Jaar
Conclusie, gewoon altijd UTF-8/16 gebruiken? Ben benieuwd of het probleem van de TS hiermee verholpen wordt, ik heb in ieder geval weer wat geleerd. Rare tekens kende ik, maar deze heb ik nog niet meegemaakt. Succes TS, thanks John.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic