题
我正在尝试为会话做一个简单的测试 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 新手),但我似乎找不到它是什么......
这就是你将学到很多东西的方式;)享受它......
不隶属于 StackOverflow