2016-05-07 16 views
0

Ich habe viel gesucht, aber alles funktioniert nicht für mich.mysql record und post record ist gleich, aber nicht gleich

Ich habe eine einfache Tabelle in mysql:

id int 11      //user id 
log_meno varchar(255)   //user name 
cmp_heslo varchar(255)   //user password 

in dieser Tabelle i einen Datensatz haben:

id is 1 
log_meno is kuki 
cmp_heslo is 839512db1882dff3fcb596012982790870f6f06e //it is hashed word kuki by sha1 

als ich

in HTML-Anmeldeformular

<form action="login.php" method="post"> 
 
     <tr><td>Prihlasovacie meno: </td><td><input type="text" name="login_name" ></td></tr> 
 
     <tr><td>Heslo: </td><td><input type="password" name="login_password"></td></tr> 
 
     <tr><td colspan="2"><input type="submit" value="Prihlásiť"></td></tr> 
 
     <tr><td colspan="2"><a href="#">Zabudnuté heslo</a></td></tr> 
 
     </form>

und letzte i login.php haben

<?php 
 

 
include ('conn.php'); 
 

 
//Uzivatelsky vstup 
 
$log_meno = mysqli_real_escape_string ($Conn, $_POST['login_name']); 
 
$cmp_heslo = sha1($_POST['login_password']); 
 

 

 

 
$sql = "SELECT cmp_heslo FROM firmy WHERE log_meno='$log_meno'"; 
 
$result = mysqli_query($Conn, $sql); 
 

 
if (mysqli_num_rows($result) > 0) {  
 
while($row=mysqli_fetch_assoc($result)) { 
 
     echo "$row[cmp_heslo]<br>$cmp_heslo"; 
 
    } 
 
} else { 
 
    echo "0 results"; 
 
} 
 

 

 

 
if ($cmp_heslo == $row[cmp_heslo]) 
 
{ 
 
\t \t echo "logged"; 
 
} 
 
else 
 
{ 
 
\t echo "<br>bad password"; 
 
}  
 

 
mysqli_close($Conn); 
 

 

 
?>

mein Problem Datei ist, dass $ row [cmp_heslo] und cmp_heslo $ ist gleich, aber wenn ich Aktion Login tun habe ich dieses Ergebnis:

839512db1882dff3fcb596012982790870f6f06e 839512db1882dff3fcb596012982790870f6f06e falsches Kennwort

warum es schlecht ist Passwort Ich denke, dass es protokolliert werden sollte. Sorry für mein Englisch und vielen Dank für Ihre Antwort

+0

Anstatt 'echo' verwenden Sie' var_dump'. Sehen Sie, wie lange die Variablen sind. Vielleicht hat man einen führenden/nachgestellten Raum. Ihre Indizes sollten auch '$ row ['cmp_heslo']' in Anführungszeichen gesetzt werden. – chris85

Antwort

0

Warum Sie nicht tun:

$sql = "SELECT cmp_heslo 
     FROM firmy 
     WHERE log_meno='$log_meno' AND cmp_heslo = '$cmp_heslo' "; 

if (mysqli_num_rows($result) > 0) { 
    echo "logged"; 
} 
0

Vielen Dank an alle, Ive gesehen Antwort, die mein Problem gelöst, aber wenn ich Seite neu laden Ich kann nicht Sieh diese Antwort mehr. Aber diese Antwort war, meine if else-Schleife in die while-Schleife zu bringen. Vielen Dank.

+0

Sie beziehen sich auf die Antwort von @ jbrya029 - aber er löschte es ~ vor 1 Stunde. –