2016-08-22 2 views
0

Ich versuche, Benutzereingabe-Passwort mit gespeicherten in der Datenbank übereinstimmen. Bis jetzt funktionierte es ganz gut Aber plötzlich begann sich seltsam zu benehmen.einfach === passender Fehler php

Skript gestartet Fehler von zeigt Ungültige E-Mail-ID oder Kennwort trotz der Information korrekt ist. Aktualisierungsfenster Unmittelbar nach dem angezeigten Fehler wird der Benutzername angezeigt, der in der Variablen $ _Session gespeichert ist (was bedeutet, dass der Benutzer angemeldet ist).

Aber wie ist das möglich, wenn der Benutzer den Punkt nicht erreicht hat, an dem der Benutzername in $ _session gespeichert wird.

Wie auch immer, ich habe versucht, Sitzungsvariable am Anfang des Skripts zu löschen, da $ _session nicht vollständig zerstört wurde (obwohl es war), aber das hat auch nicht funktioniert.

Ich habe bereits getestet mit strcmp um $ check_password === $ row ['password'] aber kein Erfolg. Ich habe das auch mit "==" -Operatoren getestet, aber kein Glück.

Überraschenderweise, wenn ich dies auf localhost versuche, funktioniert es gut, aber auf dem Server erzeugt es Fehler wie erwähnt.

Ich überprüfte Fehlerprotokoll, aber nichts war da. irgendein Hinweis, was verursacht das?

foreach($result as $row) 
{ 
    $pass = hash('sha256', $_POST['password'] . $row['salt']); 
    for($round = 0; $round < 65536; $round++) { $check_password = hash('sha256', $pass . $row['salt']); } 

    if($check_password===$row['password']) 
    { 
     // check if e-mail verification has been done or not 
     if(strcmp($row['activation'],"Active")==0) 
     {    
      $_SESSION['username'] = $row['username']; 

      $response['status'] = 'success'; 
      $response['message'] = 'Login successful.'; 
     } 
     else 
     { 
      $response['status'] = 'failure'; 
      $response['message'] = 'Your Account is Not verified Yet. Kindly verify your account via Login panel Verify Account link.'; 
     } 
    } 
    else 
    { 
     $response['status'] = 'failure'; 
     $response['message'] = 'Invalid Email id or password.'; <--- Error point   
    } 
} 

Bild von beiden gleichen Passwörtern hinzufügen. enter image description here

+2

'var_dump ($ check_password, $ row ['passwort'])' - sind sie gleich? Gleiche Anzahl an Charakteren? – aynber

+0

ja, sie sind beide gleich. Selbst es zeigte "Login erfolgreich" in der Konsole. –

Antwort

0

Ich weiß nicht, ob das die richtige Methode war, um dieses Problem zu lösen, aber irgendwie hat dies den Trick gemacht.

Hinzufügen der folgenden Zeilen nach $response['message'] = 'Login successful.'; das Problem zu lösen.

echo json_encode($response); 
exit; 

Aber ich bin immer noch zu verstehen, nicht in der Lage, wie 'Invalid Email id or password.' Fehler anzeigte, wenn if-Anweisung ausgeführt wurde erfolgreich auf erfolgreiche Nachricht einzuloggen.