清除登录名,删除会话,然后使用isPostBack-PHP重定向回到登录页面

时间:2019-03-06 05:04:00

标签: php

我今天已经花了很多时间研究这个网站的解决方案,但是我没有运气。我目前正在尝试学习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>

3 个答案:

答案 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'])