私はこの小さなプライベート「ニッチ」サイト用の非常にシンプルなログイン/ログアウトスクリプトを用意しています。「単純な」ログイン/ログアウト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をを得続けるませんが、セッションがありますので、ご利用いただけます。 "メッセージ。私はセッションを正しくチェックしていないのか、セッションを正しく終了していないのか分かりません。
私はこれを数日間探して苦労してきました。私は愚かに感じ始めています。私は前にこの仕事を作った!だから私は尋ねなければならなかった。前もって感謝します。
はに 'すべての変数(' $のLGN [$ユーザー] '、' $のpass'と '$ _SESSION [ 'ログイン'])をエコーそれらがあなたが期待しているものであることを確認してください。マニュアルの[example](http://php.net/manual/en/function.session-destroy.php)を使ってセッションを破壊してください。 –
わかりやすくするために、コードを追加しました。 $ _SESSION ['user']の$ _SESSION ['login']が変更されましたが、問題はそのまま残ります。ユーザーアレイ、ログインフォーム、およびユーザー/パスワードの確認は意図どおりに機能します。 –
あなたはそれのバイブルを作れますか? – Sampad