2

セッションを設定するには、次のようにします。エコーが表示されるため、これは機能します。しかし、次のページまたは別のページに移動すると、セッションがありませんか?私は何が間違っているのですか?

$session_start();

if ($username==$dbusername&&$password==$dbpassword)
    {
        echo"<b>Login Successful</b><br><a href='systemadmin.html'><br>Click here to access the <strong>System Admin Page</strong></a>";
        $_session['username']=$dbusername;
        if($username == "admin")
        {
            $_session['admin'] = true;
        }

私はこれらのセッションで機能するように以下を取得しようとしています:

<?php
session_start();
if($_session['admin'] == true)
{
// do nothing
}else{
    header( 'Location: home.html' ) ;
}

?>

アップデート:

大文字のセッションは機能しますが、logout.phpを使用すると、セッションが破棄されなくなります。

<?php

session_start();

session_destroy();

header("location: home.html");

?>
4

4 に答える 4

5

$_session=>である必要があります$_SESSION

http://php.net/manual/en/reserved.variables.session.php

最初の機能は、「通常の」変数(要求に使用可能)を設定しているためです。

アップデート

セッションを破棄するには:

<?php
// Initialize the session.
// If you are using session_name("something"), don't forget it now!
session_start();

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
if (ini_get("session.use_cookies")) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params["path"], $params["domain"],
        $params["secure"], $params["httponly"]
    );
}

// Finally, destroy the session.
session_destroy();
?>

http://php.net/manual/en/function.session-destroy.php#example-4368

exit();さらに、スクリプトがそれ以上実行されないように、リダイレクトを実行した後は常に使用する必要があります。

于 2012-04-29T15:22:44.950 に答える
2

exit();を使用する必要があります。header();の後 これは、ユーザーが新しいページにリダイレクトした直後にスクリプトが終了するとは限らないためです。

于 2012-04-29T15:39:11.233 に答える
2

PHPサーバー/セッション/グローバル変数では大文字と小文字が区別されます。PHPにとって$_SESSIONは、と同じ変数ではありませんが$_session、英語では同じように見えます。期待どおりにPHPセッション変数にアクセスするため$_SESSIONではなく、を使用する必要があります。$_session

于 2012-04-29T15:25:27.630 に答える
0

スーパーグローバルの名前は$_SESSION大文字です。それを変更してみて、それが役立つかどうかを確認してください。

于 2012-04-29T15:22:10.283 に答える