md5 Überprüfung

Alles, was PHP betrifft, kann hier besprochen werden.

md5 Überprüfung

Postby airis » 25. November 2004 09:42

Hi Zusammen,

ich habe folgendes Query eines Anmeldescripts:
Code: Select all
$result = mysql_query("SELECT count(*) AS anzahl FROM `linker_wait`WHERE `passwd` LIKE  BINARY '$_POST[password]' AND `name` LIKE  BINARY '$_POST[name]'");
$dat    = mysql_fetch_object($result);

if($dat->anzahl > 1 ){
     /*** Bei Erfolg ***/
    header ("Location: http://localhost/1ht/modi.php");
}
else {
    /*** Bei falschem PW bzw. Usernamen ***/
    header ("Location: http://localhost/1ht/safetycheck/sc3.htm");
}

nun habe ich es um md5 erweitert:
Code: Select all
$result = mysql_query
      (
      "
           SELECT count(*) AS anzahl
           FROM `linker_wait`
           WHERE `passwd`='".md5($_POST['password'])."' AND `name`='".$_POST['name']."'");
$dat    = mysql_fetch_object($result);

if($dat->anzahl > 1 ){
     /*** Bei Erfolg ***/
    header ("Location: http://localhost/1ht/ modi.php");
}
else {
    /*** Bei falschem PW bzw. Usernamen ***/
    header ("Location: http://localhost/1ht/safetycheck/sc3.htm");
}


In der Datenbanktabelle "linker_wait" sind md5-Passwort (passwd) und Username (name) vorhanden.
Es kommt kein mysql-error, womit ich vermute, daß der Select funktioniert. Aber er gibt kein Ergebnis und ich werde auf die ELSE-Seite "sc3.htm" weitergeleitet. Kann mir jemand helfen?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby deepsurfer » 25. November 2004 15:19

lass dir das ergebniss anzeigen statt auf die Seite geschickt zu werden, dann hast du einen anhaltspunkt was für ein wert im speicher ist der zu dem PW false führt.

chirio
Deep
User avatar
deepsurfer
AF Moderator
 
Posts: 6440
Joined: 23. November 2004 10:44
Location: Cologne
Operating System: Win-XP / Win7 / Linux -Debian

Postby airis » 25. November 2004 15:35

Hi deepsurfer,

kannst Du mir sagen, wie ich das Ergebnis angezeigt bekomme?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby MoC » 25. November 2004 15:41

Code: Select all
$result = mysql_query
      (
      "
           SELECT count(*) AS anzahl
           FROM `linker_wait`
           WHERE `passwd`='".md5($_POST['password'])."' AND `name`='".$_POST['name']."'");
$dat    = mysql_fetch_object($result);

echo($dat->anzahl);

// if($dat->anzahl > 1 ){
//      /*** Bei Erfolg ***/
//     header ("Location: http://localhost/1ht/ modi.php");
// }
// else {
//     /*** Bei falschem PW bzw. Usernamen ***/
//     header ("Location: http://localhost/1ht/safetycheck/sc3.htm");
// }


desweiteren mach ma $HTTP_POST_VARS[''] draus ned nur $_POST['']
User avatar
MoC
 
Posts: 25
Joined: 02. September 2004 14:26

Postby airis » 25. November 2004 16:07

Hi MoC,

es wird mir eine "0" ausgegeben.


desweiteren mach ma $HTTP_POST_VARS[''] draus ned nur $_POST['']


ändert auch nichts an der Weiterleitung nach sc3.php

Hast Du eine andere Idee?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby MoC » 25. November 2004 18:55

Code: Select all
$password=md5($_POST['password']);

und dann in der querry halt auch $password
User avatar
MoC
 
Posts: 25
Joined: 02. September 2004 14:26

Postby airis » 25. November 2004 19:44

Hi MoC,

das mit "passwd" ist nicht das Problem.
1. es funzte vorher ohne die md5 Variante bestens so.
2. ich greife in der Tabelle "linker_wait" auf eine vorhande Spalte mit Namen "passwd" zu, diese wird ebenfalls durch andere Scripts genutzt.

Trotzdem Danke für Deinen Tipp, vieleicht hast Du ja eine andere Idee was es sein könnte.

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby BlackbirdHakke » 25. November 2004 19:49

Moinsen..

if($ dat->anzahl > 1 ){

wieso grösser 1? Hat jeder User mehrere Zeilen? Ausserdem würde ich den Query ändern, indem das PW vorher mit md5 verschlüsselt, in eine Variable gespeichert, und dann erst die Variable im Query abgefragt wird.

LG
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby airis » 25. November 2004 20:28

Hallo BlackbirdHakke

wieso grösser 1?
hat sich so ergeben( habe das Script aus diesem Forum und es war im Original < 1) und funzte ohne md5 prima.
Ausserdem würde ich den Query ändern, indem das PW vorher mit md5 verschlüsselt, in eine Variable gespeichert, und dann erst die Variable im Query abgefragt wird.

Ich bin nicht so fit in PHP, hast Du einen Lösungsansatz für mich?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 25. November 2004 20:49

$verschluesselt = md5($passwort);

Und schon hast du den md5 Wert und kannst ihn direkt in der Abfrage verwenden.
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby BlackbirdHakke » 25. November 2004 21:00

Code: Select all
$pass_md5 = md5($_POST['password']);
$login_name = $_POST['name'];
$result = mysql_query
      ("SELECT COUNT(name) AS anzahl
           FROM linker_wait
           WHERE passwd ='$passmd5' AND name='$login_name'");
$dat = mysql_fetch_assoc($result);
// echo($dat->anzahl);

 if($dat['anzahl'] >= 1 ){
// oder auch == 1

      /*** Bei Erfolg ***/
     header ("Location: http://localhost/1ht/ modi.php");
 }
 else {
     /*** Bei falschem PW bzw. Usernamen ***/
     header ("Location: http://localhost/1ht/safetycheck/sc3.htm");
 }



Probiers mal so, im Test hats grad funktioniert. Allerdings solltest du Passwort und Name noch durch ein Regex laufen lassen, um einschleusen von bösem Code zu vermeiden (Google: SQL injection). Grund zur Änderung: wenn ich PW und Name eingebe, sollte die Datenbank ein Resultat finden. Genau eines, nicht mehr oder weniger. Wenn du aber auf grösser als eins abfragst, wird natürlich immer etwas falsches ausgegeben, da ja nur ein Datensatz betroffen sein kann/sollte.

LG
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby airis » 26. November 2004 09:23

Hi BlackbirdHakke,

besten Dank für Deine Antwort auf mein Posting.
Es führt aber auch nicht zum Erfolg, nachwievor Weiterleitung nach sc3.htm.
Folgendes ist mir aufgefallen und ich habe es mal geändert:
Code: Select all
WHERE passwd ='$passmd5' AND name='$login_name'");

Habe einen Unterstrich eingefügt
'$pass_md5'

was aber auch nichts brachte. Dann habe ich versucht mir das Ergebnis direkt anzeigen lassen, es kommt nur eine leere Seite.

Ich weis nicht woran es liegt, hast DU eine Idee?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby Jan H. Krüger » 26. November 2004 09:29

Sind denn auch tatsächlich Daten in der DB drinnen? Ist das Passwort welchesin der DB hinterlegt ist dort auch md5-Verschlüsselt eingetragen ?
Jan H. Krüger
 
Posts: 152
Joined: 24. October 2004 19:42

Postby airis » 26. November 2004 10:22

Hallo Jan,

habs halbwegs am laufen. Gerade habe ich festgestellt, das alle md5-Passworter gleich sind (d41d8cd98f00b204e9800998ecf8427e). Habe gestern mit der Tabelle gespielt, werde sie schnell neu einspielen.
Melde mich später noch mal.

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Postby airis » 26. November 2004 11:48

Hallo Jan,

es funzt jetzt.
Ich komme aber von einem Problem zum nächsten:
Alle neu eingegebenen Passwörter sehen nach dem Verschlüsselen gleich aus und zwar
d41d8cd98f00b204e9800998ecf8427e
.
Den Befehl zum Verschlüsseln gebe ich wie folgt:
Code: Select all
$query = "insert into {$Stb_name}_WAIT SET
sid = '$maxnum',
name = '$name',
email ='$email',
passwd = '" . md5($password) . "',
....
";
}
}


Wenn ich ganz normal
Code: Select all
passwd = '$passwd',

eingebe werden die Passwörter nicht verschlüsselt, kommen aber richtig und unterschiedlich.

Hast Du eine Ahnung was es sein könnte?

Airis
airis
 
Posts: 134
Joined: 18. May 2004 12:33

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 15 guests