我有一个非常简单的登录/注销脚本为这个小私人'利基'网站,所以它不需要很多的安全性。坚持一个'简单'登录/注销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,但有会议,所以留。 “信息。我不知道我是否没有正确检查会话,或者我没有正确关闭会话。
我一直在寻找和挣扎着这几天,我开始感到很蠢。我之前完成了这项工作!所以我不得不问。提前致谢。
回声出所有的变量('$ lgns [$ USER]','$ pass'和'$ _SESSION [ '登录'])'到确保它们符合你的期望。并使用手册中的[示例](http://php.net/manual/en/function.session-destroy.php)来销毁会话。 –
我只是为了清晰而添加了更多的代码。更改$ _SESSION ['login']为$ _SESSION ['user']这是它应该如何,但问题依然存在。用户数组,登录表单和用户/密码检查按预期工作。 –
你可以做一个小提琴吗? – Sampad