我今天已经花了很多时间研究这个网站的解决方案,但是我没有运气。我目前正在尝试学习php,并正在进行第二个项目。我只能使用PHP。我最初有删除会话,并在一个单独的logout.php文件中重定向。这是可行的,但是后来我发现我做不到。有人指示我需要“清除登录名,删除会话,然后重定向回登录页面”,并在results.php文件的isPostBack中执行此操作。经过大量研究后,我认为我已经了解如何执行此操作,但无法使其正常工作。希望我能得到一些帮助。
<?php
session_start();
//require_once('cookies.php');
$isPostBack = filter_input(INPUT_GET, 'submit');
//this is where I need to do the isPostBack for user clicking "logout".
if ($isPostBack) {
// clear ALL session data from memory
// clean up the session and remove the session ID.
// redirect to index.php
endSession();
session_destroy();
header("Location: index.php");
} else {
// user did not click logout doNothing();
}
?>
<html lang="en">
<head>
<title>Results</title>
<link rel="stylesheet" type="text/css" href="">
</head>
<body>
<form action="results.php">
<input type="submit" id="submit" name="submit" value="Logout" />
</form>
<section>
<?php
foreach($_SESSION['answers'] as $answer){
echo "<p>$answer</p>";
}
?>
</section>
</body>
答案 0 :(得分:1)
尝试提供名称属性
<input type="submit" id="submit" value="Logout" name="logout"/>
,仅使用登出变量代替提交或提供两个不同的字段
$isPostBack = filter_input(INPUT_GET, 'submit');
$isPostBack = filter_input(INPUT_GET, 'logout');
答案 1 :(得分:0)
我似乎找到了解决方案。我需要给isPostBack变量一个名称,该名称与给注销按钮的名称匹配。我还需要在isPostBack之后包含!== NULL。我改变了endSession();到$ _SESSION = array();根据我的研究,endSession(); “删除所有会话变量”。它似乎正在按现在的方式工作。这是我编辑的代码。
<?php
session_start();
$isPostBack = filter_input(INPUT_GET, 'submit')!==NUll;
//this is where I need to do the isPostBack for user clicking "logout".
if ($isPostBack) {
// clear ALL session data from memory
// clean up the session and remove the session ID.
// redirect to index.php
$_SESSION = array();
session_destroy();
header("Location: index.php");
} else {
// user did not click logout doNothing();
}
?>
<html lang="en">
<head>
<title>Results</title>
<link rel="stylesheet" type="text/css" href="">
</head>
<body>
<form action="results.php">
<input type="submit" id="submit" name="submit" value="Logout" />
</form>
<section>
<?php
foreach($_SESSION['answers'] as $answer){
echo "<p> $answer</p>";
}
?>
</section>
</body>
答案 2 :(得分:0)
如果您需要删除特定的会话值,则可以使用unset()
unset ($_SESSION['userid'])