[PHP] - MD5 macht alles zur Sau - VERZWEIFLUNG!



  • Hi Leute.

    Ich hab ein Formular und eine Datei mit daten drin.
    Nur, das klappt nicht.

    Wenn ich $passwort und $blog[9] (blog = aus der Datei) ausgeben lasse, sind diese beiden werte identisch!.

    Die beiden werte lauten wie folgt:
    passwortgibtdurchMD5folgendesaus:ea790e8e103fa1bfac5bdf08afbae8e3passwort gibt durch MD5 folgendes aus: ea790e8e103fa1bfac5bdf08afbae8e3 blog[9] das ausgelesen aus der Datei : ea790e8e103fa1bfac5bdf08afbae8e3

    also identisch. Warum checkt das PHP denn bei der IF - Anweisung net?

    Nur, bei der IF schleife sind die trotzdem nicht gleich, obwohl diese gleich sind! und dann springt der einfach weiter und fürht IMMER nur ELSE aus, das Usernam,e und passwort inkorrekt seien!

    Was ist da falsch?

    $oeffnen = $memb_dir.$username_portal."_dtr.usr";
    	$file = fopen($oeffnen, "r");
    	$dat = fgets($file);
    	$blog = explode("|", $dat);
    	$passwort = md5($passwort);
    
    	if(($username_portal == $blog[8]) && ($passwort == $blog[9]))
    	{
    	session_register("username_portal");
    	die("Loginprozess erfolgreich. Für eine gründliche SESSIONSID ist eine aktualisierung notwendig.<br>Klicken Sie zum fortfahren bitte <a href=\"index_svps.php?svps_id=6\">hier</a>.");
    	}
    	else
    	{
    	$memberlog = "<form action=\"index_svps.php?svps_id=6\" method=\"post\"><fieldset><legend>Memberlogin</legend><br><center>Username und Passwort stimmen nicht überein. &nbsp;&nbsp; <input type=submit value=Zurück><br></center><br></fieldset></form>";
    	}
    	}
    	fclose($file);
    

    mfg
    Pro

    PS: habe mit mike84 schon mehrere möglichkeiten erforfsch wie if(!strcmp(passwort,passwort,blog[9])) oder if(!strcmp((char)passwort,(char)passwort, (char)blog[9]))
    aber NICHTS klappt! ⚠

    VERZWEIFLUNG! kann mir jemand helfen?? 😕 😞

    MFG und danke zum Voraus, 😉
    programmer



  • PS: habe mit mike84 schon mehrere möglichkeiten erforfsch wie
    aber NICHTS klappt!

    Hey!

    du hast in der IF - Schleife anstatt der Abfrage "($passwort == blog[9])" das hier hingesetzt: if(!strcmp(passwort,blog[9])) bzw. if(!strcmp((char)passwort, (char)$blog[9]))??

    Wenn die Passwörter hier identisch sind, kann es ja auch nicht gehn 😃
    Denn hier springt er nur rein, wenn die Passwörter nicht identisch sind 😉
    Also Probiers doch einfach mal mit if(strcmp(passwort,passwort,blog[9]) == 0)

    Korrigiert mich, es ist noch früh, fals ich falsch liegen sollte 🙄

    Liebe grüsse



  • $string1 = "$blog[9]";
    	if(!strcmp($passwort,$string1))
    	{
    	echo "Gleich"; 
    	die("OK!");
    

    das funzt nicht!

    $string1 = "ea790e8e103fa1bfac5bdf08afbae8e3";
    	if(!strcmp($passwort,$string1))
    	{
    	echo "Gleich"; 
    	die("OK!");
    

    Das hingegen funzt ganz gut!

    Aber $blog[9] ist ja mit folgender variable "ea790e8e103fa1bfac5bdf08afbae8e3" angelegt, das gibt es mir auch aus wenn ich echo $blog[9]; schreibe. Aber warum geht denn das NICHT wenn $blog[9] steht und andersrum net?

    Da je nach user ein anderer MD5-Code vorhanden is, muss man demfall den Aaray $blog[9]; in einen String umwandeln? Aber wie?



  • hast du bedacht, dass fgets() den zeilenumbruch mit zurückgibt? ich glaub da könnte dir funktion trim() dein retter sein



  • fallen schrieb:

    hast du bedacht, dass fgets() den zeilenumbruch mit zurückgibt? ich glaub da könnte dir funktion trim() dein retter sein

    Wie meinen?
    fgets(file);trim(file); trim(file); ?



  • Er meinte, dass evtl. bei dem ausgelesenen String noch ein \n hinten dranhängt. Deswegen solltest du einfach mal nach dem Auslesen für den Vergleich noch ein trim um die Variable setzen 😉



  • Aso. Naja, trim funzt auch nicht.

    In der datei steht NUR eine Zeile, immer! Denn pro user = eine Datei.
    Das verschlüsselte PWD steht zuhinterst. Beispiel:

    Herr|test|test|strasse 22|828282 irgerndweas|0901111111|mail@domain.com|ja|USERNAME|eef8f92012k321verschlüsseltes28282passwort8383



  • Wenn du dir beide Strings ausgegeben hast und sie wirklich identisch sind (evtl. mal davor und dahinter einen Punkt setzen und dann im ausgegebenen Quelltext schauen, ob nicht unsichbare Zeichen mit dranhängen) dann muss auch ein Vergleich mit == klappen 😉



  • Unsichtbare Zeichen.... *g*

    Ein neues Wort für Leerschläge? *smile*.

    Ich hab jetzt einfach hinter dem Code in der Datei nur nochmals ein

    |END_OF_LINE

    hinzugefügt. Nun klappt es ganz gut. Der Fehler war, das der Ausschlaggeber am Ende der Zeile ein \r\n war. 😃

    Vielen Dank an Euch allen!
    mfg
    Pro



  • Programmer schrieb:

    Nur, bei der IF schleife sind die trotzdem nicht gleich, obwohl diese gleich

    if-Anweisung ist keine Schleife. Nur Informativ für Dich.
    While == Schleife
    for == Schleife



  • Programmer schrieb:

    Der Fehler war, das der Ausschlaggeber am Ende der Zeile ein \r\n war.

    was habsch gesagt?:)



  • fallen schrieb:

    Programmer schrieb:

    Der Fehler war, das der Ausschlaggeber am Ende der Zeile ein \r\n war.

    was habsch gesagt?:)

    ähhm... is egal... 😃
    Jedenfalls es funzt jetzt wie es muss.
    Thx.

    😃


Anmelden zum Antworten