2016-06-20 18 views
0

Ich habe viele Artikel zu diesem password_hash gelesen und hat so viel wie ich angewendet, wenn nicht alle Dinge, die ich darüber gelesen immer noch verweigert das Passwort_verify noch Werte zu authentifizieren, egal wie viel ich versuchte. PHP Version 5.61.6 und SQL Version 5.7.9 jede Form von Hilfe ist willkommen, sind schon erschöpft von dem Versuch, viele String-Kombinationenphp password_verify funktioniert immer noch nicht

<!DOCTYPE html> 
<html> 
    <head> 
     <title>Administrator</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    </head> 
    <body> 
     <?PHP 
      //.......all variables are collected from html form.... 
      $conn = mysqli_connect("localhost", "uname", "pword", "dbname"); 
      mysqli_set_charset($conn, 'utf8'); 
      //.......`SN` column has the unique attribute 
      $sql = "SELECT * FROM Sign_Up WHERE `SN`=$sn"; 
      $result = mysqli_query($conn, $sql); 
      if (mysqli_num_rows($result) > 0) { 
       while ($row = mysqli_fetch_assoc($result)) { 
        $date = date('Y-m-j g:i:s'); 
        //.......idgen is a function previously defined 
        $id = idgen(); 
        //.......prints $id before hashing.... 
        echo $id."<BR>"; 
        $id = password_hash('$id', PASSWORD_DEFAULT); 
        //......string length before storing 
        echo strlen($id)."<BR>"; 
        //......table columns 
        $f = $row["FirstName"]; 
        $l = $row["LastName"]; 
        $bn = $row["BusinessName"]; 
        $ba = $row["BusinessAddress"]; 

        $sq = "INSERT INTO Distributors (`FirstName`, `LastName`, `BusinessName`, `BusinessAddress`) VALUES ('$f', '$l', '$bn', '$ba')"; 
        $res = mysqli_query($conn, $sq); 
       } 
      } 
     ?> 

    </body> 
</html> 

Und den Code für die Hash-Überprüfung ist

<html> 
    <head> 
     <meta charset="UTF-8"> 
    </head> 
    <body> 

     <?PHP 

      $conn = mysqli_connect($servername, $username, $password, $dbname); 
      mysqli_set_charset($conn, 'utf8'); 
      //.....phone number has a unique attribute 
      $sql = "SELECT `ID` FROM Distributors WHERE `PhoneNumber`='number'"; 
      $result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); 
      $result1= mysqli_num_rows($result); 
      $look = mysqli_fetch_array($result)['ID']; 
      print $look."<BR>"; 
      $look = trim($look); 
      print $look."<BR>"; 
      print strlen($look)."<BR>"; 
      //......all print statements yields expected results and hashed password is stored 
      //......in VARCHAR (255)...I also tried CHAR 
      $ver = password_verify('user input data', '$look'); 
       if ($ver) { 

        print "ok"; 
       } 
       else { 
        print "no"; 
       } 


    ?> 

    </body> 
</html> 
+1

Sie die wörtliche Hashing string' $ id' ... und in verifizieren Tests gegen die Zeichenkette '$ look'. Erfahren Sie, wie Sie [PHP Strings] (http://php.net/string) verwenden. –

+0

'password_verify ('Benutzereingabedaten', '$ look');' Wirklich? Vergleichen einer Passwort-Zeichenkette von 'Benutzereingabedaten' mit einem Hash-Wert, der wie '$ look' aussieht?!? –

+0

... und du verifizierst die literale Zeichenfolge '$ look'. –

Antwort

0

Verwenden pHP-Variablen ohne Anführungszeichen oder in doppelten Anführungszeichen, "":

$id = password_hash($id, PASSWORD_DEFAULT);   // no quotes around $id 

$ver = password_verify('user input data', "$look"); // double quotes around $look 

Einzel Zitat Strings werden also nicht analysiert behandelt, als wörtliche str Wenn Zeichenketten mit doppeltem Anführungszeichen analysiert werden, werden Variablennamen mit ihren Werten erweitert.

+0

Ich habe versucht, alle Anführungszeichen sowohl wenn die Variable Hashed ist und wenn es verifiziert ist und es funktioniert immer noch nicht –

+1

Sorry für den falschen Kommentar . Du hast recht, ich kann dir nicht sagen, wie glücklich ich bin. Es sind die Zitate. Ich habe $ ID und nicht den Inhalt der Variablen Hashing –

0

Bei Verwendung Hashing:

$id = "school"; 
Password_hash($id); 

Bei Verwendung Überprüfung:

Password_verify($id, $data_from_database); 
Verwandte Themen