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 回答