2017-01-25 5 views
0

Hallo alle zusammen Ich versuche, ein Login-Skript in PHP zu machen .. es funktioniert gut kann ich einloggen, aber ich habe diesen seltsamen Bug oder was auch immer es zu nennen ... Sie sehen, wenn ich mich als normaler Benutzer anmelden funktioniert es gut , aber wenn ich als Admin anmelden ich es sagt bekommen loged Anmeldungs ​​in aber in der gleichen Zeit gescheitert ...Login akzeptiert und fehlgeschlagen?

ich diese Begrüßungsnachricht erhielt:

<?php echo "<h3 id ='tjena'> Welcome ".$_SESSION['user']."</h3>";?> 

so weiß ich, dass ich actully angemeldet bin ... Aber ich habe auch einen Header, der mich zu "Erfolg führen soll, aber aus irgendeinem Grund schlägt es fehl und leitet mich an? Fehler

Hier ist mein Code:

while($row = $result->fetch_object()) { 
    if($username == $row->username) { 
     $checkPassword = password_verify($password,$row->password); 
     if($checkPassword){ 
      session_start(); 
      $_SESSION['loggedIn'] = true; 
      $_SESSION['user'] = $row->username; 
      $_SESSION['admin'] = $row->admin; 
      $_SESSION['LAST_ACTIVITY'] = time(); 
      header("Location:index.php?success"); 
      $fail = false; 
     } 
    } else { 
     $fail = true; 
    } 
} 

if($fail){  
    header("Location:index.php?error"); 
} 

Kennt jemand was diesen Fehler verursacht? Thans im Voraus!

+0

Verschieben Sie 'session_start' an die Spitze und sehen Sie, dass sich etwas ändert? Oben bedeutet erste Zeile Ihres Codes –

+0

Werfen Sie einige anmelden. Wird es zum password_verify? Wird password_verify bestanden? – aynber

+0

@HosseinShahsahebi kein Unterschied tho –

Antwort

1

Das PHP-Skript leitet den Benutzer auf eine andere Seite um, aber das Skript stoppt die Ausführung nicht, es sei denn, Sie sagen es ihm.

Deshalb denke ich, eine Zeile mit exit(); hinzufügen wird den Trick tun.

while($row = $result->fetch_object()) { 
    if($username == $row->username) { 
     $checkPassword = password_verify($password,$row->password); 
     if($checkPassword){ 
      session_start(); 
      $_SESSION['loggedIn'] = true; 
      $_SESSION['user'] = $row->username; 
      $_SESSION['admin'] = $row->admin; 
      $_SESSION['LAST_ACTIVITY'] = time(); 
      header("Location:index.php?success"); 
      exit(); 
      $fail = false; 
     } 
    } else { 
     $fail = true; 
    } 
} 

if($fail){  
    header("Location:index.php?error"); 
} 
0

Wo ist der Code, der prüft, ob Sie ein normaler Benutzer oder Administrator sind? Sie haben $ _SESSION ['user'] und $ _SESSION ['admin'], wenn $ checkpassword wahr ist. session_start(); sollte auf jeden Fall an die Spitze gesetzt werden + schreiben Sie eine einfache if-Anweisung für Benutzer oder Admin zu überprüfen.

  • sollten Sie $ fail = false setzen; vor der Überschrift ("Location: index.php? Erfolg") Anweisung.
Verwandte Themen