2016-08-01 4 views
1

Ich habe ein ziemlich einfaches Login/Logout-Skript für diese kleine private 'Nische' Website, so dass es nicht viel Sicherheit erfordert.Tage mit einem 'einfachen' Login/Logout stecken PHP-Skript

session_start(); 

// Array with users and passwords 
$lgns = array(
'firstuser' => '5d0a158df212de401a9509a88a8d9f96b060f6c5', 
'seconduser' => 'f8a913721596fffbf18a4777e6f163316154e6e5', 
'thirduser' => 'f8a913721596fffbf18a4777e6f163316154e6e5', 
); 

$user = isset($_POST['username']) ? $_POST['username'] : ''; 
$passu = isset($_POST['password']) ? $_POST['password'] : ''; 
$pass = sha1($passu); 

// Check if credentials are valid 
// If not... 
if(!isset($lgns[$user]) or $lgns[$user] != $pass) 
{ 
    // Check if session is valid 
    // If not... 
    if (!(isset($_SESSION['user']) && $_SESSION['user'] != '')) 
    { 
     echo "Wrong creds, no session; redirecting..."; 
    } 
    else 
    { 
     // If credentials are not valid but there IS session 
     echo "Wrong creds, but there IS session, so stay."; 
    } 

} 
// If credentials are valid, set session. 
else 
{ 
    echo "Correct credentials"; 
    $sessionUser = $_POST['username']; 
    $_SESSION["user"] = $sessionUser; 
} 

Dies ist das Logout-Skript in einer separaten PHP-Datei:

session_start(); 

unset($_SESSION["user"]); 
session_destroy(); 
header("Location: ../index.php"); 

Problem ist: Egal, was ich versuche, halte ich die „Wrong creds bekommen, aber es gibt Sitzung, so bleiben. " Botschaft. Ich weiß nicht, ob ich die Sitzung nicht richtig überprüfe oder ob ich die Sitzung nicht richtig schließe.

Ich habe seit Tagen gesucht und damit zu kämpfen und ich fühle mich dumm. Ich habe diese Arbeit vorher gemacht! Also musste ich fragen. Danke im Voraus.

+0

echo alle Variablen aus ('$ lgns [$ user]', '$ pass' und' $ _SESSION [ 'login']) 'zu stellen Sie sicher, dass sie das sind, was Sie erwarten. Und benutze [das Beispiel] (http://php.net/manual/en/function.session-destroy.php) aus dem Handbuch, um Sessions zu zerstören. –

+0

Ich habe gerade mehr Code für Klarheit hinzugefügt. $ _SESSION ['login'] für $ _SESSION ['user'] geändert, so wie es sein soll, aber das Problem bleibt bestehen. Das Benutzer-Array, das Login-Formular und die Benutzer-/Passwort-Überprüfung funktionieren wie vorgesehen. –

+0

Kannst du eine Fiedel daraus machen? – Sampad

Antwort

0

Schauen Sie einfach in den folgenden Code unten, ich hoffe, es wird Ihnen helfen !!

<html> 
    <head> 
    </head> 
     <title>Quiz</title> 
      <body> 
       <center>Log In Page</center> 
       <form action="" method='POST'> 
       Email ID : -<input name="email" type="text"><br/><br/> 
       Password : -&nbsp; <input name="password" type="text"><br/> 
       <input type='submit' value="Log In" name="login"> 
       </form> 
<?php 
    $con = mysqli_connect("localhost","root","","Database_name"); 
    if(isset($_POST['login'])){ 
    $login=mysqli_real_escape_string($con,$_POST['email']); 
    $pass=mysqli_real_escape_string($con,$_POST['password']); 
    $conv_md_pass=md5($pass); 
    echo "$conv_md_pass"; 
    $select_user="SELECT * FROM mst_user where email='".$login."' AND pass='".$conv_md_pass."'"; 
    $run_user=mysqli_query($con,$select_user); 
    $check_user=mysqli_num_rows($run_user); 
    echo "/$check_user"; 
    if($check_user>0) 
    { 
     echo "Successfully logged in"; 



    } 
    else 
    { 
     echo "Wrong username and password"; 
    } 

} 

?> 
</body> 
</html> 

SignOut

<?php 
session_start(); 
session_destroy(); 
header("Location: login.php"); 
?> 
+0

Vielen Dank für Ihre Zeit, aber ich frage mich, ob Sie meine Frage lesen. Ihr Skript verwendet keine Sitzungen und das ist der einzige Punkt meiner Frage. Das Benutzerarray (Minidatenbank), das Anmeldeformular und die Benutzer-/Passwortprüfung funktionieren ordnungsgemäß. Das Problem ist, dass, obwohl ich die Sitzung beende, das Skript immer noch denkt, dass es eine Sitzung gibt, wenn ich es ausführe, ohne den Benutzernamen und das Passwort aus dem Formular zu senden. Es soll "falsche Kredits, keine Sitzung, Umleitung ..." widerhallen. –

Verwandte Themen