2016-08-01 61 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

谢谢你的时间,但我不知道你是否读过我的问题。你的脚本不会使用会话,这是我的问题的唯一问题。用户数组(迷你数据库),登录表单和用户/密码检查工作正常。问题是,虽然我终止了会话,但脚本仍然认为有一个会话,当我运行它而不从窗体发送用户名和密码时。它应该回应“错误的信用,没有会话;重定向...”。 –