1

セッション用の簡単なテスト 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.";
?>
4

5 に答える 5

7

私はあなたが入れたと思います

$_POST['destroy']

それ以外の

$_GET['destroy']

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

于 2008-08-19T19:52:03.930 に答える
4

ちなみにあなたは使うことができます

$_REQUEST['破棄']

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

于 2008-08-19T21:00:08.130 に答える
2

PHP マニュアルには、セッションを破棄するためのコード スニペットがあります。

session_start();
$_SESSION = array();
if (isset($_COOKIE[session_name()])) {
    setcookie(session_name(), '', time()-42000, '/');
}
session_destroy();
于 2008-08-19T22:54:33.990 に答える
1

ええ、あなたはやりたいと思うでしょう

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

また

if( isset($_GET['destroy']) )
于 2008-08-19T19:58:50.157 に答える
0

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

それがあなたが多くを学ぶ方法です;)それを楽しんでください...

于 2008-08-19T22:29:32.367 に答える