別のphpページに向けられたログインページがあります。この php ページは、ユーザーが入力したユーザー名を受け取り、それをセッション変数として保存してから、home.php にリダイレクトします (このコードは、情報が検証された後に実行されます)。
$username = $_POST['username'];
$update = mysql_query("UPDATE usertable SET loginStatus='Logged in' WHERE userName = '$username'");
session_start();
$_SESSION['loggedin'] = true;
$_SESSION['username'] = $_POST['username'];
header("Location: home.php");
これにより、適切な列が問題なく更新されます。次のコードを home.php ページに配置して、各ユーザーのログイン ステータスを表示します。
session_start();
$username = $_SESSION['username'];
if(empty($_SESSION['username'])){
header("Location: login.php");
}
$result = mysql_query("SELECT * FROM usertable");
echo "Logged in as ". $_SESSION['username'];
echo "<br />";
while($row = mysql_fetch_array($result))
{
echo $row['userName'] . " " . $row['emailAddress'] . " " .$row['loginStatus'];
echo "<br />";
}
?>
<p><a href=logout.php>Click here to logout</a></p>
ユーザーがログアウト リンクをクリックすると、次の php ページに移動します。
<?php
session_start();
$username = $_SESSION['username'];
$update1 = mysql_query("UPDATE usertable SET loginStatus='' WHERE userName = '$username'");
echo $username;
?>
<?php
session_destroy();
?>
<h1>You are now logged out</h1>
<p><a href=login.php>login</a></p>
ここに私の問題があります。MySQL は、対応するユーザー名の loginStatus を更新していません。私が持っているすべての変数 ($username、$username1) をテストすると、正しい情報が出力されます。ログアウト ページの場合、$_SESSION['username'] が正しいユーザー名を格納していることはわかっていますが、データベースの値が更新されない理由がわかりません。