如何通过单击按钮销毁会话?

时间:2014-11-20 19:31:34

标签: php forms session logout destroy

如果我解释得好,这应该是一个简单的。

我正在尝试创建一个网页,当用户输入名称时会话开始,名称会不断显示,直到用户按下注销按钮;哪个应该结束会议。我得到的最接近的是:

<if (isset($_POST['name'])) {

    $_SESSION['name'] = $_POST["name"];

    echo "<input type='submit' name='logout' method='logout' value='Log out'>";
                echo "</form>";
            echo "</h1>";
                            echo "</div>";

    if(isset($_POST['logout']) && ($_POST['logout'] == "Log out")) { 
    session_destroy(); }

但它不会结束会话,并且一旦输入,名称将不断显示。即没有办法结束会议。

如果您需要更多解释或更多代码需要了解,请告知我们。非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您可以按session_destroy()更改unset($_SESSION['name']),如下所示:

if (isset($_POST['name'])) {

    $_SESSION['name'] = $_POST["name"];

    echo "<input type='submit' name='logout' method='logout' value='Log out'>";
    echo "</form>";
    echo "</h1>";
    echo "</div>";

    if(isset($_POST['logout']) && ($_POST['logout'] == "Log out")) { 
        unset($_SESSION['name']); 
    }
}

答案 1 :(得分:0)

使用session_unset()销毁会话中的所有已注册变量,如果要取消设置name等特定变量,请使用unset($_SESSION['name'])

不要用unset($_SESSION)取消整个$ _SESSION,因为这将禁用通过$ _SESSION超全局注册会话变量。

答案 2 :(得分:0)

您可以尝试在session_destroy()之后添加对session_commit()的调用;

答案 3 :(得分:0)

下面的代码处理Logout超链接,因此它创建全局变量logout并取消会话

    <a href="?logout">Log out</a>
    <?php
    if(isset($_GET['logout'])) {
    session_unset();
    }
    ?>