【问题标题】:session_destroy() not workingsession_destroy() 不工作
【发布时间】: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" 是什么意思?
  • 请同时使用prepared statements,在SQL中直接使用$_POST元素是危险的。
  • SQL 注入一切!

标签: php session logout


【解决方案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,希望对您有所帮助。
猜你喜欢
  • 2016-10-20
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 2013-04-29
  • 2014-01-08
  • 1970-01-01
相关资源
最近更新 更多