【发布时间】:2013-05-26 13:31:04
【问题描述】:
当我通过销毁会话注销并启动另一个会话时,它总是向我显示我启动的第一个会话信息 $_SESSION['username'];
我的意思是: 我第一次使用这个用户名登录时开始了一个会话 --> AAAAAA 并使用包含此代码的文件 logout.php 销毁会话:
session_start();
session_destroy();
header("location: login.php");
并使用另一个用户名登录 ---> BBBBBB 它总是显示我登录的第一个用户名---> AAAAAA
问题出在哪里
这里是代码(login.php)
<?php
session_start();
require_once "config/db.php";
if(isset($_POST['login'])){
$username = trim(mysql_real_escape_string($_POST['username']));
$password = trim(mysql_real_escape_string(md5($_POST['password'])));
$query = mysql_query("SELECT * FROM `users` WHERE username='$username' AND password='$password' ") or die(mysql_error());
$rows = mysql_num_rows($query);
if($rows == 1){
while($info = mysql_fetch_object($query)){
$dbusername = $info->username;
$dbpassword = $info->password;
}
if($dbusername == $username && $dbpassword == $password){
header("Location: index.php");
$_SESSION['username'] = $username;
}
}else{
}
}
?>
index.php:
<?php session_start();?>
<h3><?php echo $_SESSION['username']; ?></h3>
【问题讨论】:
-
您是否在发送标头后设置会话?它永远不会被更新。替换那些行,它应该可以工作。另一件事,根据:php.net/manual/en/function.session-destroy.php,考虑也删除 session_id 的 cookie
-
仅使用 MD5 散列密码是不够的。请改用 bcrypt。
标签: php