0

我在一个注销功能不起作用的工具上工作。我有一个索引页面,其中包含带有 session_start() 的配置文件。

之后,我包含一个页面,其中有我的横幅以及我的登录和注销按钮。当我单击其中一个按钮时,我会转到另一个页面connec.php,我会破坏或创建连接。

连接没问题,我初始化了所有会话变量。对于断开连接,我这样做:

if(isset($_POST['logout'])){
    $_SESSION = array ();
    session_unset();
    session_destroy();
    $_POST['logout']=1; 
    //gotopage($GLOBALS["GLOBAL_URL_PSISITE"]);
    header("Location: ../index.php"); 

我仍然保持联系,并且当我确实print_r($_SESSION)存在时。

4

3 回答 3

2

首先确保页面已session_start()在最顶部定义,然后在页面上执行任何操作之前,其次确保您的输入字段包裹在form元素周围,并且您的submit buttonhasname=logout和您的表单设置为 method=post

<form method="post" action="your_logout_script_page.php">
  <input type="submit" name="logout" />
</form>
于 2012-10-31T15:48:08.687 回答
0

为了正确地“销毁”一个正在运行的会话,您必须首先告诉 PHP 您要杀死哪个会话。

如果您的会话没有自定义/手动名称(大多数情况下),您必须首先调用

session_start();

在你打电话之前

session_destroy();

... 所以:

<?php session_start(); session_destroy(); ?>
于 2012-10-31T15:54:00.070 回答
0

你会在你的文件中想要这样的东西

<?php
session_start();

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

    $_SESSION = array();

    if (ini_get("session.use_cookies")) {
        setcookie(session_name(), '', time() - 42000, '/');
    }

    session_destroy();

    //$_POST['logout']=1;  // this won't do anything since you're redirecting on the next line.

    header("Location: ../index.php");
    exit;

}
?>
于 2012-10-31T15:51:23.043 回答