0

別の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'] が正しいユーザー名を格納していることはわかっていますが、データベースの値が更新されない理由がわかりません。

4

2 に答える 2

0

正確にはどこに問題がありますか??...ログイン時のデータベースの更新、またはhome.phpページでのデータベースの取得、またはログアウトページでのデータベースの更新...また、3つのページすべてにセッション開始機能があるセッションを何回開始しますか。

于 2013-03-11T15:48:53.797 に答える
0

これがすべてあなたのページに対するものである場合は、データベース接続がない可能性があります。少なくともクエリの戻り値を確認してください

$update1 = mysql_query("UPDATE usertable SET loginStatus='' WHERE userName = '$username'") or die(mysql_error());

本当の原因が見えてくるはずです。

さらに、関数は現在廃止されているため、mysqliまたはのいずれかに切り替えることを検討する必要があります。PDOmysql_*

于 2013-03-11T15:50:17.560 に答える