• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

if = doof?

Status
Für weitere Antworten geschlossen.
Hallöle

Hab mir ne eigene Verschlüsselung gebastelt (Code geb ich jetz nich preis) und da gibt es ein RIESEN Problem, was ich einfach nich begreife.

Meine Funktion heist pw_encode_9090() und wenn ich dort mein Passwort eingebe kommt das raus:

63a9f2de599192ddf2e0abf9e02a80dd

So... Was steht in der Datenbank?

63a9f2de599192ddf2e0abf9e02a80dd

Hab den Wert in der Datenbank mehrmals mit dem Ergebnis aus pw_encode_9090 überschrieben.

So, warum erhalte ich bei

PHP:
if ( pw_encode_9090($_POST['pw_9090']) != $user_data['pass'] )
         {
                 return FALSE;
         }

ein FALSE, wenn mein Passwort richig ist?

Dass ist so als würde ich den fragen "Ist A = A?" und der würde sagen "Nein"
 
Werbung:
Werbung:
Anstatt zu vermuten, dass in der verwendeten Programmiersprache ein Fehler ist, gehe ich in solchen Situationen davon aus, dass ich einen Fehler gemacht habe, und dass die beiden Strings wirklich unterschiedlich sind. Also lasse ich mir einfach deren Inhalt ausgeben, sowie deren Länge, um auch nicht darstellbare Zeichen zu finden.
Dann hat man zwar oft noch Tomaten auf den Augen, aber irgendwann fällt es einem wie Schuppen aus den Haaren... ;-)
 
Werbung:
Efchen, ich habe mir Länge und Type ausgeben lassen, beides war identisch :roll:

Warum das dann auf einmal mit trim() geht, weis keiner. Ich hab einfach ma ne Mail an php.net geschickt. Mal sehen, ob die sich damit auseinander setzen.
 
Das ist allerdings seltsam, wo doch trim() Whitespaces, also auch nicht darstellbare Zeichen entfernt. Deswegen schlug ich das mit der Länge vor.

Wiederum weiß ich auch, dass man oft den Wald vor lauter Bäumen nicht sieht und ich war schon oft daran, Fehler bei anderen zu suchen, und erst nach Stunden hab ich gemerkt, dass ich das offensichtliche übersehen habe ;-)

Naja, hauptsache es geht.

Schönes Wochenende,
-Efchen
 
Probiere es mal so

Code:
if ( pw_encode_9090($_POST['pw_9090']) != $user_data['pass'] ) 
         {return FALSE;} 
         else{return TRUE;}

Denn du gibst ja nur an das er ein False zurückliefern soll, wenn die Eingabe falsch ist. Wenn jedoch eine richtige Eingabe von statten geht, kommt von der Funktion ja nichts zurück auf gut deutsch es läuft ein leeres If

Code:
$a="";
if($a){echo"hallo";}
Also da erscheint kein hallo auf meinem Bildschirm, mit
Code:
$a=TRUE;
if($a){echo"hallo";}
jedoch erscheint das Hallo
 
Werbung:
Also ich denk warum es mit trim geht und ohne nicht ist , dass am anfang oder am ende einfach einleerzeichen war
... und if nimmt sowas ganz genau ...
... normalerweiße zählt strlen oder was du benutzt hast um den string zu zählen die leerzeichen nicht mit ...
 
Nightmare... Der soll ja nur was zurückliefern wenns nich gleich is, ansonsten soll der mit dem Rest der Abfragen weitermachen, und ich hab ehrlich gesagt keinen Nerv auf überdimensionale Verschachtelungen von if
 
Werbung:
Spuckt er vielleicht ein Notice aus? Auserdem frage ich mich, warum das std. md5() nicht für passwortverschlüsselungen reicht. Schließlich verschlüsseln aktuelle Betriebsysteme auch mit nichts anderem
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben