- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个在线机票预订系统,在成功预订(付款后)后,我想清除 session ID。但问题是我无法清除它,尽管我使用了 session_destroy()
来销毁 session 。
注意:我已经回显了 session_id 以检查它是否已重置。
网址:http://7sisters.in/7sislabs/
function book_final_tickets()
{
//var_dump($_SESSION);
$session_id = session_id();
$sql = "
UPDATE
tbl_seat_book
SET
final_book = 'Y'
WHERE
session_id = '$session_id'
";
//session_unset();
if($r = $this->db->executeQuery($sql)){
if(session_destroy()){
unset($session_id);
echo 'Booking successfull';
}
}
}
最佳答案
单独使用
session_destroy()
不会删除客户端 cookie,因此用户下次访问时,他们仍将设置相同的 session ID(但他们的服务器端 session 信息将被销毁)。
来自文档(强调我的):
session_destroy() destroys all of the data associated with the current session. It does not unset any of the global variables associated with the session, or unset the session cookie. ... In order to kill the session altogether, like to log the user out, the session id must also be unset. If a cookie is used to propagate the session id (default behavior), then the session cookie must be deleted.
您可以使用 session_regenerate_id(true)
生成新的 session ID 并删除旧 session ID。请注意,这会将 $_SESSION
中的所有信息作为新 session ID 的一部分保留,因此如果您想清除 session 信息,您仍然需要使用 session_destroy
重新开始。
例如
<?php
session_start();
$_SESSION['blah'] = true;
var_dump(session_id()); // q4ufhl29bg63jbhr8nsjp665b1
var_dump($_SESSION); // blah = true
session_unset();
session_destroy();
setcookie("PHPSESSID", "", 1); // See note below
session_start();
session_regenerate_id(true);
var_dump(session_id()); // gigtleqddo84l8cm15qe4il3q3
var_dump($_SESSION); // (empty)
?>
并且 header 将显示在客户端更改的 session ID:
Request Header
Cookie:PHPSESSID=q4ufhl29bg63jbhr8nsjp665b1
Response Header
Set-Cookie:PHPSESSID=deleted; expires=Mon, 27-Dec-2010 16:47:57 GMT
PHPSESSID=gigtleqddo84l8cm15qe4il3q3; path=/
(您可以在此处不调用 setcookie()
,因为无论如何您都在创建一个新 session ,因此 cookie 将被新 ID 覆盖,但这很好练习显式销毁旧 cookie)。
关于php - session_destroy 没有取消设置 session_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641929/
是否有任何特别的理由来使用其中一个?我个人倾向于使用后者,因为它似乎更适合我。 最佳答案 它们做同样的事情, 关于php - 和 的区别,我们在Stack Overflow上找到一个类似的问题:
我一直在尝试在我的网站上查找 session ID,以便可以使用它来查询我的 MySQL 数据库,但我不断收到错误“ undefined variable :_SESSION in...” 这是我的代
我在 session 方面遇到了一些困难。 在我的本地 MAMP 测试服务器上,如果我这样做: session 开始();echo session_id( ); 我得到一个漂亮的 session ID
我无法理解下面的代码,我不知道我们什么时候在 session_start() 之前使用 session_id() 。 我要你解释一下!不只是复制 php.net 的描述! 另一方面,session_
我在使用 session_id() 时遇到问题,它每次在浏览器刷新/重新启动时都会返回一个新值。 阅读这篇文章 here但这并没有解决问题。我做了那里提到的所有事情 - 浏览器接受 cookie,权限
我使用 session_id 作为数据库中的 ID 列。还有一个名为“Sections”的列,其中添加了整个 xml。 xml 包含部分名称和用户在其中花费的时间。我想更新相同 session_ids
我应该在关系数据库课上多加注意,所以我需要一些帮助。 我有一个结构如下的表(还有更多,但我只发布相关信息): +------------------+-------------+------+----
我正在使用 JavaScript 发送 session_id。 session_id 在页面源中可见,例如: function startUpload(id){ var queryString
我正在开发一个在线机票预订系统,在成功预订(付款后)后,我想清除 session ID。但问题是我无法清除它,尽管我使用了 session_destroy() 来销毁 session 。 注意:我已经
我在云中“托管”的两个 Ubuntu Server VM 上使用 PHP 5.4.9,Windows Azure 和 Magento Enterprise 位于许多不同的域/子域下,这意味着有大量页面
我的生产服务器上出现了一个奇怪的情况。但是,在我本地的开发环境中这不是问题。这是一个测试脚本,我可以用它来重现问题: 如果我在浏览器中加载此页面并刷新页面 (CTRL+R),我每次都会
我尝试实现购物车。我将 session_id 存储在数据库中,以及购物车上的相关产品。登录后,我希望拥有相同的 session ,并且能够通过访问 session_id 将这些产品与用户连接起来。但是
我正在尝试在 python 3 上生成安全的 session_id。 首先,我只是生成时间戳的md5哈希值(包括微秒),然后通过cookie写入该值。但这种方法可能会被劫持。例如,从浏览器A的cook
无法在 PHP SESSIONS 中获取所有 session_id 的列表吗? 注意:我需要在服务器中维护一些文件。一个文件等于一个 session 。如果 SESSION 过期,我需要确定旧文件的行
我正在构建一个网络应用程序,用户可以上传某些文件并通过网络应用程序界面处理这些文件。我需要在用户 session 期间存储这些文件。我正在使用 session_id 作为文件夹名称为每个用户创建一个文
我的应用程序中有一些基本的 session 处理。在每个页面中,我检查用户是否已登录。如果已登录,则他们已被 $_SESSION['user_id'] 识别,并且他们的登录/注销记录在 MySQL 表
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: (PHP) How to destroy the session cookie correctly? 我正在
session_id($randomString) 和 session_regenerate_id() 之间有什么明显区别?两者似乎都改变了 session ID: session_regenerat
在标准 PHP 中,我可以通过以下方式设置 session ID: $my_session_id = $_GET['session_id']; //gets the session ID succes
我有一个 session_id,用于识别购物篮类型应用程序中的用户。 session_id 作为 session id 存储在数据库中。 当我更新购物车时,session_id、product_id
我是一名优秀的程序员,十分优秀!