Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何完全销毁存储的所有会话?_Php - Fatal编程技术网

Php 如何完全销毁存储的所有会话?

Php 如何完全销毁存储的所有会话?,php,Php,我通过下面的一段代码为登录用户存储这些会话: $_SESSION = $r-> fetch_array(MYSQLI_ASSOC); // Store the HTTP_USER_AGENT: $_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']); 然后我把它们打印出来: Array ( [user_id] => 1 [username] => asdfxc [user_level] => 0 [agent] =

我通过下面的一段代码为登录用户存储这些会话:

$_SESSION = $r-> fetch_array(MYSQLI_ASSOC); 

// Store the HTTP_USER_AGENT:
$_SESSION['agent'] = md5($_SERVER['HTTP_USER_AGENT']);
然后我把它们打印出来:

Array ( [user_id] => 1 [username] => asdfxc [user_level] => 0 [agent] => d30847a2ec9c978a0e4db5470b78b327 [lid] => 1 ) 
我想要的是在我的
logout.php
页面中销毁它们,我的代码如下:

   // If no first_name session variable exists, redirect the user:
if (!isset($_SESSION['agent']) OR ($_SESSION['agent'] != md5($_SERVER['HTTP_USER_AGENT']) ) ) {

$url = BASE_URL . 'index.php'; // Define the URL.
ob_end_clean(); // Delete the buffer.
header("Location: $url");
exit(); // Quit the script.

} else { // Log out the user.

$_SESSION = array(); // Destroy the variables.
session_unset();// remove all session variables
session_destroy(); // Destroy the session itself.
setcookie (session_name(), '', time()-3600); // Destroy the cookie.

}

// Print a customized message:
echo '<p>You are now logged out.</p>';
2/将其填充到
home.php
页面中


问题在于,当您的查询没有选择特定用户时,您为每个用户提供相同的id

SELECT user_id, username, user_level FROM users

应该有一个
WHERE
子句来标识您想要的用户

问题是您为每个用户提供相同的id,因为您的查询没有选择特定的用户

SELECT user_id, username, user_level FROM users

应该有一个
WHERE
子句来标识您想要的用户

您如何知道会话仍然存在?你是什么意思?“作为第二个用户ID,第一个用户ID的会话仍然被存储。”我通过查看
用户名
就知道了。当我尝试执行
print\r($\u会话)时,第一个用户ID的
username
始终会被回显。另外,我在
index.php
页面中添加了
if(isset($\u SESSION['agent']){echo Welcome:'.$\u SESSION['username'.!';}
的条件,作为登录用户的目标。相同的
数组(keys=听起来像是你如何填充会话的问题。会话是用户唯一的,所以你总是填充第一个idSo。我的代码(我存储和销毁会话的方式)有什么问题吗?我应该怎么做来纠正它?你真的能帮我给出答案吗?谁知道你的答案也能帮助社区!
从users中选择user\u id、username、user\u level
这样每个人都是一样的?如果没有一个
WHERE=
每个人都会有相同的id,你怎么知道会话仍然存在?你说“作为第二个用户id登录,第一个用户id的会话仍然被存储”是什么意思通过查看
username
,我就知道了。在测试时,当我尝试对第二个用户ID执行
print\r($\u SESSION);
时,第一个用户ID的
username
仍然会回显。此外,我还添加了
if(isset($\u SESSION['agent']){echo Welcome:'.$\u SESSION['username'.!}的条件
index.php
页面中作为登录用户的指向。相同的
数组(keys=听起来像是你如何填充会话的问题。会话是用户唯一的,所以你总是填充第一个idSo。我的代码(我存储和销毁会话的方式)有什么问题吗?我应该怎么做来纠正它?你真的能帮我给出答案吗?谁知道你的答案也能帮助社区!
从用户中选择用户id、用户名、用户级别
这样每个人都是相同的?如果没有
WHERE=
每个人都有相同的id
SELECT user_id, username, user_level FROM users