在PHP中用户注销后,无法在会话中第二次存储值

在PHP中用户注销后,无法在会话中第二次存储值,php,mysql,session,Php,Mysql,Session,我有一个用户登录的登录脚本。用户信息存储在MYSQL数据库中。当我第一次登录时,它将信息存储在会话中并显示欢迎消息。但是,当我注销并尝试再次登录时,会话阵列显示为空,尽管它已登录 这是我的密码: reservation.php ers_header.php: logout.php 我不知道是什么问题。我试了很多,但都没找到。请任何人都能找出我的错误。您确实只需要取消设置$\u会话数组,而不是销毁会话和cookie数据,尝试删除这些行,还需要: mysql\u受影响的\u行应为mysql\u nu

我有一个用户登录的登录脚本。用户信息存储在MYSQL数据库中。当我第一次登录时,它将信息存储在会话中并显示欢迎消息。但是,当我注销并尝试再次登录时,会话阵列显示为空,尽管它已登录

这是我的密码:

reservation.php

ers_header.php:

logout.php


我不知道是什么问题。我试了很多,但都没找到。请任何人都能找出我的错误。

您确实只需要取消设置$\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')