2016-08-01 60 views
1

我有一個非常簡單的登錄/註銷腳本爲這個小私人'利基'網站,所以它不需要很多的安全性。堅持一個'簡單'登錄/註銷PHP腳本

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; 
} 

這是在一個單獨的PHP文件中的註銷腳本:

session_start(); 

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

問題是:無論我怎麼努力,我不斷收到「錯誤creds,但有會議,所以留。 「信息。我不知道我是否沒有正確檢查會話,或者我沒有正確關閉會話。

我一直在尋找和掙扎着這幾天,我開始感到很蠢。我之前完成了這項工作!所以我不得不問。提前致謝。

+0

回聲出所有的變量('$ lgns [$ USER]','$ pass'和'$ _SESSION [ '登錄'])'到確保它們符合你的期望。並使用手冊中的[示例](http://php.net/manual/en/function.session-destroy.php)來銷燬會話。 –

+0

我只是爲了清晰而添加了更多的代碼。更改$ _SESSION ['login']爲$ _SESSION ['user']這是它應該如何,但問題依然存在。用戶數組,登錄表單和用戶/密碼檢查按預期工作。 –

+0

你可以做一個小提琴嗎? – Sampad

回答

0

只要看看下面給出的代碼,我希望它能幫助你!

<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

謝謝你的時間,但我不知道你是否讀過我的問題。你的腳本不會使用會話,這是我的問題的唯一問題。用戶數組(迷你數據庫),登錄表單和用戶/密碼檢查工作正常。問題是,雖然我終止了會話,但腳本仍然認爲有一個會話,當我運行它而不從窗體發送用戶名和密碼時。它應該回應「錯誤的信用,沒有會話;重定向...」。 –