質問

セッション用の簡単なテストPHPスクリプトを実行しようとしています。基本的に、カウンターをインクリメントします( $_SESSION) そのページを更新するたびに。それは機能しますが、ページをリロードするセッションを破棄するリンクを設定しようとしています。 ?destroy=1 パラメータ。そのパラメータが設定されているかどうかを確認し、設定されている場合はセッションを破棄するためにいくつかの if ステートメントを試しましたが、うまくいかないようです。

パラメータが設定されている場合にメッセージをポップアップするために本体に if ステートメントを追加しましたが、それは認識されないようです。

何かばかげたことをしているのはわかっていますが(私はPHPの初心者です)、それが何なのかがわかりません...

ここのコードを参照してください:

<?php
if ($_POST['destroy']) {
    session_destroy();
} else {
    session_start();
}    
?>

<html>
    <head>
        <title>Session test</title>
    </head>
    <body>
    <?php
    if (isset($_POST['destroy'])) {
        echo "Destroy set";
    }

    $_SESSION['counter']++;

    echo "You have visited this page " . $_SESSION['counter'] . " times" . "<BR>";
    echo "I am tracking you using the session id " . session_id() . "<BR>";
    echo "Click <a href=\"" . $_SERVER['PHP_SELF'] . "?destroy=1\">here</a> to destroy the session.";
?>
役に立ちましたか?

解決

あなたが置いたと思います

$_POST['destroy']

の代わりに

$_GET['destroy']

$_POST 変数を使用したい場合は、フォームを使用する必要があります。$_GET 変数は URL に格納されます。

他のヒント

ちなみに使えるのは

$_REQUEST['破壊']

これは、データが POST リクエストで渡されるか GET リクエストで渡されるかに関係なく機能します。

の中に PHPマニュアル セッションを破棄するためのコード スニペットが含まれています。

session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();

そう、あなたはそうしたいでしょう

if( $_GET['destroy'] == 1 )

または

if( isset($_GET['destroy']) )

私が何か愚かなことをしていることはわかっていますが(私はphpの初心者です)、それが何であるかを見つけることができないようです...

そうすることで多くのことを学ぶことができます ;) 楽しんでください...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top