【问题标题】:PHP - end session IDPHP - 结束会话 ID
【发布时间】:2012-02-21 23:39:07
【问题描述】:

我正在尝试删除会话 ID,我尝试了以下所有 hereherehere。但它们都不起作用。

我应该做什么非常简单,只从当前 php 页面中删除会话 ID(但不是会话本身)。我想要完成的是调用一个 ajax,其中会话 ID 将被删除,而当前页面将继续与会话一起运行。

我应该用什么来做这个?

谢谢!

【问题讨论】:

  • 客户端不存在会话。所有会话数据都存储在服务器上,因此您所说的会话保持在当前页面上运行的说法没有多大意义。
  • 您可以在页面上进行身份验证,然后显示所有内容,通过 ajax 调用删除会话 ID。除非您向浏览器提供“令牌”或某种 id 以使其继续数据查询,否则每个受限区域都将无法访问。
  • @netcrash 好点,但我应该如何删除会话 ID?我尝试了很多方法,它似乎仍然可以识别会话...
  • 这就是我想要做的事情:see this question:我试图关闭会话只是为了发布到 facebook,而不是作为当前用户,而是作为另一个用户。我应该使用什么来删除会话 ID?谢谢!
  • @PaulP.R.O.查看我刚刚链接到的问题。会话仍在被授权方识别,我不知道如何!我如何让它消失?... :)

标签: php session


【解决方案1】:

对于特定页面,您可以取消设置会话 ID 未设置($_SESSION['id'])

但要将其保留在原始页面上,您需要将其打包到一个临时变量中,并在您的 ajax 调用后重新声明它

在原始页面上

$tmpsessionid = $_SESSION['id'];

ajax 调用完成 - 重新注册会话

$_SESSION['id'] = $tmpsessionid;

人们不得不问你为什么要这样做?

【讨论】:

  • 谢谢,我如何才能找到写在 'id' 中的内容呢? +请参阅我对上述答案的评论中的原始问题的链接,了解我为什么要这样做。
  • 我刚刚尝试过,但没有成功,如果你能澄清我应该怎么做,我将不胜感激,也许我做错了(我用session_id() 表示id财产)。谢谢!
  • 你在尝试销毁之前指定了 session_start 吗?您也可以删除用户端 cookie 以保证 session_id 离开用户端。
  • 是的,我尝试了使用和不使用 session_start,最终我设法使用旧的到期日期将其删除,但这仅删除了必要的 cookie 的一部分 - 请参阅here;我不确定你对用户端的意思是什么,但这可能是我在这里尝试的,这确实有帮助,但无论如何它只是部分的,并没有帮助我的最终目标:(
  • 也许更简单的方法是在 ajax 调用中传递会话 ID。不知道您使用的是 post 还是 get,但可以作为隐藏字段或 get 参数将 $thesessionid 传递给您的 ajax 页面,然后告诉会话使用该参数作为其会话 id。或者正如我最初所说的第 1 页 $tempvar = $_SESSION;第 2 页 ajaxpage 未设置($_SESSION);第 1 页 - 从 ajax 获取响应成功,因此重新创建会话 $_SESSION = $tempvar;
猜你喜欢
  • 2017-07-18
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2013-09-13
  • 1970-01-01
相关资源
最近更新 更多