在PHP中用户注销后,无法在会话中第二次存储值
我有一个用户登录的登录脚本。用户信息存储在MYSQL数据库中。当我第一次登录时,它将信息存储在会话中并显示欢迎消息。但是,当我注销并尝试再次登录时,会话阵列显示为空,尽管它已登录 这是我的密码: reservation.php ers_header.php: logout.php在PHP中用户注销后,无法在会话中第二次存储值,php,mysql,session,Php,Mysql,Session,我有一个用户登录的登录脚本。用户信息存储在MYSQL数据库中。当我第一次登录时,它将信息存储在会话中并显示欢迎消息。但是,当我注销并尝试再次登录时,会话阵列显示为空,尽管它已登录 这是我的密码: reservation.php ers_header.php: logout.php 我不知道是什么问题。我试了很多,但都没找到。请任何人都能找出我的错误。您确实只需要取消设置$\u会话数组,而不是销毁会话和cookie数据,尝试删除这些行,还需要: mysql\u受影响的\u行应为mysql\u nu
我不知道是什么问题。我试了很多,但都没找到。请任何人都能找出我的错误。您确实只需要取消设置$\u会话数组,而不是销毁会话和cookie数据,尝试删除这些行,还需要: mysql\u受影响的\u行应为mysql\u num\u行 此外,这一行代码不正确:
$query2="UPDATE r_users SET token='$tokenid' WHERE user_id='$_SESSION[user_id]'";
$\u SESSION[user\u id]应该是$\u SESSION[user\u id],并且应该将其包装在{}中。PHP可能会对此发出警告
这一行代码很奇怪:
if(isset($_SESSION['user_id']) AND (substr($_SERVER['PHP_SELF'] AND $loggedin,-10)!='logout.php')
$loggedin,-10真的应该在substr中吗?为什么生成会话等于数组?它足以调用会话销毁。此外,如果设置了名称,则不应在注销时查看,只需销毁会话并删除标头即可。然后,按照@T_u01所说的操作,然后在头中打印$\u会话并在此处显示输出。代码看起来正确。我没有发现代码中有任何错误。只需删除setcookie会话\u name,time-300,“/”,0;从您的代码中删除并运行它。可能是它导致了问题。停止使用mysql_*函数,它们已被弃用,请改用mysqli/PDO…它们更好,而且更安全。我也有同样的问题,但有cookies。谢谢你@Zack Newsham
<?php
session_start();
require_once("./includes/config_db.php");
if ( !isset( $_SESSION['name'] ) ) {
header("Location: reservation.php");
exit();
} else {
$_SESSION = array(); // Destroy the variables.
session_destroy(); // Destroy the session itself.
setcookie( session_name(), ", time()-300, '/', ", 0 ); // Destroy the cookie.
header("Location:reservation.php");
}
$query2="UPDATE r_users SET token='$tokenid' WHERE user_id='$_SESSION[user_id]'";
if(isset($_SESSION['user_id']) AND (substr($_SERVER['PHP_SELF'] AND $loggedin,-10)!='logout.php')