-1

ユーザーがログインフォームで「rememberme」をチェックしてCookieを設定できるようにしました。これで、ログアウトするとlogout.phpに移動し、Cookieを削除する必要があります。これらのエラーメッセージが表示されることを除いて、すべて機能します。

注意:未定義のインデックス:6行目のC:\ xammp \ htdocs \ mine\logout.phpのユーザー名

注意:未定義のインデックス:7行目のC:\ xammp \ htdocs \ mine\logout.phpのパスワード

logout.phpの私のコードは

<?php

session_start();

if (isset($_SESSION['username'])) {
    setcookie('username', $_POST['username'], false, '/');
    setcookie('password', $_POST['password'], false, '/');
    session_destroy();
    echo "You've benn logged out. <a href='index.php'>Click here</a> to return.";
} else {
    die ('You are not logged in!');
}
4

3 に答える 3

0

isset($_POST['username'])?$_POST['username']:''代わりに使用してください$_POST['username']

そしてisset($_POST['password'])?$_POST['password']:''代わりに$_POST['password']


参照:三項演算子

于 2012-04-13T01:06:38.880 に答える
0

ユーザーがログアウトしたい場合、ユーザー名またはパスワードもログアウトページに送信している可能性は低いため$_POST['username']$_POST['password']空になり、エラーが発生します。

ただし、Cookieの設定を解除するために値(実際のユーザー名またはパスワード)を知る必要はなく、キー(文字通り「ユーザー名」と「パスワード」)を知る必要があります。

<?php
session_start();
setcookie('username', '', time()-3600, '/');
setcookie('password', '', time()-3600, '/');
session_write_close();
header("Location: /");
?>

ログアウトして、フロントページにリダイレクトします。

于 2012-04-13T01:09:10.520 に答える
-1

これは、$_POSTスーパーグローバルがusernamepassword変数を持っていないためです。

index.phpからlogout.phpにリンクするとき、logout.phpにPOSTしていないと推測します(したがって、この呼び出しにはPOST変数がありません)。

あなたがする必要があるのはあなたのセッション(または他の形式の永続的なストレージ)にユーザー名とパスワードを保存することです:

session_start();の後のindex.php

if (isset($_POST['username']) && isset($_POST['password'])) {
    $_SESSION['username'] = $_POST['username'];
    $_SESSION['password'] = $_POST['password'];
}

$_SESSION次に、logout.phpで、の代わりにスーパーグローバルを使用してこれらの値をクリアできる場合があります$_POST

ちなみに、なぜユーザー名とパスワードをCookieとして設定するのかはよくわかりませんが、それはあなたの質問のポイントではありません。

于 2012-04-13T01:12:44.847 に答える