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