"username"と "password"が一致するとセッションを開始し、インデックスページにリダイレクトする単純な "checklogin"ファイルに送信するログインフォームがあります。インデックスページでは、セッションIDが一致しなくなった場合に、ログインフォームページにリダイレクトする機能があります。
インデックスページでecho $_SESSION['sid'];
を実行しましたが、session_idが正常に実行されたようです。ただし、ページをリロードすると、$_SESSION['sid']
は設定されておらず、値は割り当てられなくなりました。ログインページにリダイレクトされます。
以下は私のコードです。どんな援助も感謝します
FILE 1 - checklogin.php
<?php
session_start();
$uid = username;
$pw = password;
if (($uid == 'username' and $pw == 'password'))
{
$_SESSION['sid']=session_id();
header("location:index.php");
exit();
}
?>
FILE 2 - index.phpの
<?php
session_start();
if ($_SESSION['sid'] !== session_id()) {
header("location:login.php");
}
?>
ADDITIONAL INFO: サーバはPHP 5.4を実行しています。しかし、XAMPP(PHP 7)経由でlocalhost上で実行するとうまく動作します。回避策はありますか?
はあなたのインデックスページに破壊したセッションを持っているのですか?それを取り除く。 – shazyriver
私はsession_destroy()を持っていません。私のサイトのどこにでも。 @shazyriver –
セッションIDを更新するたびに、開始時にセッションが開始されるため、IDが変更されます。他の変数をチェックしてください。 – shazyriver