0

私のサイトでは、ユーザー名とログイン セッション用の Cookie を作成する単純なログイン システムを使用しています。誰かが home.php にアクセスし、ログイン セッションがログイン済みとして設定されている場合、ログイン済みエリアにプッシュされます。それ以外の場合は、単純なフォームとハンドラー ページを使用してログインします。ユーザーをログアウトするには、次のコードを含む logout.php に移動するリンクをクリックします。

<?

session_start();

setcookie(username, $username, time()-360000);

session_start($_SESSION['login']);
$_SESSION["Login"] = "no";

header("Location: home.php");
session_destroy();

?>

これが何が起こっているかです。ログアウト ボタンをクリックしたユーザーは、ページ home.php に正しく追い出されます。ページを更新すると、home.php ページに残ります。これまでのところ良さそうです。

ただし、ホームページから移動すると、ログイン領域に移動します。また、ログインしている領域の URL にアクセスしても、追い出されることはありません (セッション チェック スクリプトが、セッション値がログイン済みとして設定されていることを確認するため)。

私は唖然としています。私は決して PHP のプロではありませんが、何が間違っているのでしょうか?

4

1 に答える 1

0

セッションを無効にするには、Cookie を削除するだけです。

setcookie("username", "", time()-360000);

仕事をします。ユーザー名は引用符で囲む必要があることに注意してください"。そうしないと、Cookie 名を参照しません。

したがって、ログアウトのコードは次のようになります

<?
    session_start();
    setcookie("username", "", time()-3600);
    header("Location: home.php");
?>

ユーザーがログインして検証されたら、Cookie を設定し、認証済み URL にリダイレクトする必要があります。

また、次のように、認証された領域の各ページの開始時に Cookie を確認する必要があります。

<?
    session_start();
    if (!isset($_COOKIE["username"]))
        header("Location: home.php");
?>

お役に立てれば

これは、 Cookieの設定、使用、および削除の別のサンプルです。

于 2012-08-02T02:48:14.250 に答える