MD5 zweier Strings gleich und doch nicht gleich
Gandelfdg
- php
Hi,
ich verzweifle gerade an md5() bzw sha1().
Ich habe einen String, sagen wir mal die URL. Diese wird einerseits in einem Cookie gespeichert (verschlüsselt mit blowfish und wieder entschlüsselt) und die Vergleichsurl direkt vom Nutzer ausgelesen.
In meinem Falle also 127.0.0.1
Nun will ich die beiden überprüfen ob sie identische sind und wandle beide mit md5() um und schon habe ich folgende Ergebnisse:
aus dem cookie ($ip1): f528764d624db129b32c21fbca0cb8d6
aus $_SERVER ($ip2): f528764d624db129b32c21fbca0cb8d6
Nun möchte ich in einer IF-Schleife überprüfen ob die beiden gleich sind:
if ($ip1 == $ip2) {
$check = "ok";
}
Die Schleife bricht aber immer mit FALSE ab! Gebe ich nun testweise die IP, die eigentlich aus dem Keks kommt, per Hand ein ( $ip2 = md5("127.0.0.1"); ), läuft die Schleife durch und gibt TRUE raus bzw. die Variable.
Nun ist meine Frage, wie kann es sein, dass die md5 Werte identisch sind, aber trotzdem die Abfrage eine FALSE ergibt?
Bin hier echt am Rad drehen. Das hält man doch nicht aus!
Bin für jede Antwort dankbar. :)
Hi,
wird irgend eine Kleinigkeit sein.
Mach doch mal das:
if ($ip1 != $ip2)
{
echo "<h5>IP1 = $ip1</ br>IP2 = $ip2</h5>";
}
zeig mal was dabei rauskommt.
carpe noctem
Pia
Finde ich wirklich großartig, dass um diese Zeit noch jemand wach ist :)
Das Ergebnis lautet:
IP1 = f528764d624db129b32c21fbca0cb8d6
IP2 = f528764d624db129b32c21fbca0cb8d6
Hi,
wird irgend eine Kleinigkeit sein.Mach doch mal das:
if ($ip1 != $ip2)
{
echo "<h5>IP1 = $ip1</ br>IP2 = $ip2</h5>";
}zeig mal was dabei rauskommt.
carpe noctem
Pia
Hi,
Das Ergebnis lautet:
IP1 = f528764d624db129b32c21fbca0cb8d6
IP2 = f528764d624db129b32c21fbca0cb8d6
Da haben wir den fehler doch schon ;-)
IP1 hat ein Leerzeichen am Schluss, nutze trim();
Pia
Ups, war ich zu voreilig?
Ick gloob et nich! Dit war dit!
Großartig! Tausend Dank! Wär mein Gehirn nicht mehr drauf gekommen.
Endlich kann ich in Ruhe schlafen gehen. :)
Wünsche gute Nacht (hab mir deine Posts mal durchgelesen und im moment türmen sich da eher Frgaezeichen als Antworten^^)
Hi,
Das Ergebnis lautet:
IP1 = f528764d624db129b32c21fbca0cb8d6
IP2 = f528764d624db129b32c21fbca0cb8d6Da haben wir den fehler doch schon ;-)
IP1 hat ein Leerzeichen am Schluss, nutze trim();
Pia
Ick gloob et nich! Dit war dit!
Großartig! Tausend Dank! Wär mein Gehirn nicht mehr drauf gekommen.
Endlich kann ich in Ruhe schlafen gehen. :)
Wünsche gute Nacht (hab mir deine Posts mal durchgelesen und im moment türmen sich da eher Frgaezeichen als Antworten^^)
Hi,
es ist generell in solchen Fällen bei der Ausgabe etwas drumherum zu packen. Also '-'.$var1.'-'.$var2.'-' oder ähnliches.
Ich habe mich an solchen Dingen schon halb totgesucht, weil da bei einer Variablen ein Steuerzeichen (z.B. \n) drin war.
Gruß
Reiner
Hallo Pia.
Das Ergebnis lautet:
IP1 = f528764d624db129b32c21fbca0cb8d6
IP2 = f528764d624db129b32c21fbca0cb8d6Da haben wir den fehler doch schon ;-)
IP1 hat ein Leerzeichen am Schluss, nutze trim();
Wie zum Geier warst du in der Lage, dies ohne Delimiter zu sehen?
Einen schönen Freitag noch.
Gruß, Mathias
Hi Mathias,
Wie zum Geier warst du in der Lage, dies ohne Delimiter zu sehen?
Weilbliche Intuition ;-)
Aber im Ernst:
Ich hatte schon ähnliches vermutet und war voreingenommen.
So hatte ich beim Markieren mit der Maus kein Leerzeichen
bei IP2, weil ich wohl nicht wirklich bis am Ende war.
Daher auch mein nächstes Ups als ich das bemerkte.
Aber meine Vermutung war wohl doch richtig ;-)
carpe noctem
Pia
Hallo Pia.
Wie zum Geier warst du in der Lage, dies ohne Delimiter zu sehen?
Weilbliche Intuition ;-)
Ah, gut. Damit kann ich leben. (Gut, ohne auch ganz gut.)
carpe noctem
Werde ich.
bed << this->author;
Einen schönen Freitag noch.
Gruß, Mathias
echo $begrüßung;
Nun will ich die beiden überprüfen ob sie identische sind und wandle beide mit md5() um und schon habe ich folgende Ergebnisse:
aus dem cookie ($ip1): f528764d624db129b32c21fbca0cb8d6
aus $_SERVER ($ip2): f528764d624db129b32c21fbca0cb8d6
Wenn du wieder mal zwei anscheinend gleiche Werte auf Gleichheit überprüfen möchtest und der Vergleich unwahr ergibt, bzw. wann immer du Zweifel am Inhalt von Variablen hast, schau dir die Werte mit var_dump() an, dann siehst du den Variablentyp, die Länge und den Inhalt. Strings sind dabei in "" eingerahmt, so dass auch Leerzeichen auffallen. Davor noch ein <pre> ausgeben, oder in den Seitenquelltext schauen ist auch noch hilfreich, sonst stört beim Betrachten eventuell die HTML-Eigenschaft, mehrfache Whitespace-Zeichen nur als eins darzustellen.
Nun möchte ich in einer IF-Schleife überprüfen ob die beiden gleich sind:
if ($ip1 == $ip2) {
$check = "ok";
}
Die Schleife bricht aber immer mit FALSE ab!
Es gibt keine IF-Schleife unter PHP und die IF-Konstruktion bricht auch nicht ab. Sie führt entweder den Anweisungsblock aus oder nicht bzw. den unter else.
echo "$verabschiedung $name";