session_destroy() 不工作

Posted

技术标签:

【中文标题】session_destroy() 不工作【英文标题】:session_destroy() not working 【发布时间】:2014-06-19 23:01:23 【问题描述】:

我的 session_destroy () 不起作用。当我以用户身份注销并返回浏览器时,显示用户在线。我哪里有错误?谢谢。 :-)

文件 login.php

<?php
require_once('functions.php');
if(isset($_POST['submit']))
    if((isset($_POST['username']) && $_POST['username'] != '') && (isset($_POST['password']) && $_POST['password'] != ''))
        $connection = conectDatabase();
        $query = "SELECT * FROM users WHERE username='" . $_POST['username'] . "' AND password='" . $_POST['password'] . "';";
        $result = $connection->query($query);
        if ($result->num_rows >0)
             session_start(); 
             $_SESSION['username'] = $_POST['username'];
             header('LOCATION: users.php');  
         else 
             echo '<p class="formMessage">Username/password do not match !</p>';
        
     else 
        echo '<p class="formMessage">Username/Password field is empty</p>';
    
                        
?>

文件functions.php

<?php
function conectDatabase() 
    $connection = new mysqli('localhost', 'root', '', 'DB');     

    if(mysqli_connect_errno()) 
        die("error DB: " . mysqli_error() . "(" . mysqli_connect_errno() . ").");
    
    return $connection;

?>

文件 logout.php

<?php 
    session_start();
    session_destroy();
    header('LOCATION: login.php');
?>

【问题讨论】:

2014年了,你还觉得把用户的密码以明文的形式存储在数据库中是可以接受的吗?另外,"show user online" 是什么意思? ***.com/a/20939936/653513 请同时使用prepared statements,在SQL中直接使用$_POST元素是危险的。 SQL 注入一切! 【参考方案1】:

修改logout.php文件如下:

<?php 
    session_start();
    session_destroy();
    unset($_SESSION);
    session_regenerate_id(true);
    header('LOCATION: login.php');
?>

【讨论】:

还要检查 session_start 是否应该在 Shiv 提到的 login.php 文件中。 你好。我更改了文件,但仍然是同样的问题。 Thnaks :-( 添加 $_SESSION = array();在 header('LOCATION: login.php'); 之前 我的 info.php PHP 版本 5.3.10-1 ubuntu3.11 你试过 $_SESSION = array();在标头之前('位置:login.php');由于浏览器缓存,有时会刷新页面。【参考方案2】:

我认为您的登录也无法正常工作,因为您的 login.php 文件中没有 session_start。在您的 login.php 文件上启动会话可能会有所帮助。

【讨论】:

嗨。我的 login.php 上有 session_start() 但不工作。谢谢 好的,然后按照他提到的 Dinesh 更新您的文件。 感谢 Shiv,希望对您有所帮助。

以上是关于session_destroy() 不工作的主要内容,如果未能解决你的问题,请参考以下文章

session_destroy() 没有让我退出

session_destroy 没有取消设置 session_id

会话未设置,还是 session_destroy? [复制]

PHP session_destroy()警告会话对象销毁失败[重复]

PHP 中 unset($_SESSION[])、session_unset() 和 session_destroy() 的区别

从 dest_table 插入 src_ 表而不重复