【问题标题】:PHP session_destroy()PHP session_destroy()
【发布时间】:2023-03-24 11:17:01
【问题描述】:

在我的应用程序中,当用户注销时,我想销毁当前用户的所有会话。我是取消设置应用程序中使用的每个会话,然后调用 session_destroy() 还是只调用 session_destroy()?

谢谢!

【问题讨论】:

  • 哦,“会话”是指$_SESSION 变量的索引吗?或者实际上是用户会话?
  • 应用程序中设置的所有当前用户会话。
  • @Scott W:那么session_destroy() 本身不会削减它。我问你为什么要在只有一个用户注销的情况下让所有人都注销?
  • 乔纳,我想你误解了我的问题。正如我的问题所述,我只想在注销时销毁当前用户的会话。
  • 好的,我明白了,我打错了。我说的是用户而不是用户。我的坏...

标签: php session


【解决方案1】:

session_destroy() 不会破坏所有用户的会话。您需要写入持久存储介质(数据库、文本文件等),然后调用session_destroy() 来终止它自己的会话。然后,让所有页面在加载时检查它。如果它有一些特殊的命令(例如,正常是0,销毁命令是1),让他们调用session_destroy()

【讨论】:

  • Jonah,哪些会话没有被破坏?它们还能正常工作吗?
  • @Scott W:除了当前的。是的。每个访问该站点的人都有他/她自己的会话。 session_destroy() 只销毁其中一个,而不是全部。
【解决方案2】:

session_unset(): 删除所有会话变量。在1st F5中不再显示会话变量。

session_destroy():删除当前会话。在2dn F5中不再显示会话变量。

因此您的 logout.php 脚本可能是:

<?php
session_start();

...

// remove all session variables
session_unset(); 

// destroy the session 
session_destroy();

// Redirect to home
header("Location: home.php");
exit();

【讨论】:

    【解决方案3】:

    session_destroy() 函数应该取消设置您已设置的所有会话。所以是的,你应该只需要调用它。您可以通过调用session_destroy() 来测试它,然后尝试回显会话值,如果回显则它不起作用,如果出现某些描述的错误,则会话已成功销毁。

    【讨论】:

    • session_destroy() 只破坏 当前 会话,而不是全部。 php.net/session-destroy
    • 布拉德,谢谢!单独使用 session_destroy() 效果很好,我只是不确定这是否是我唯一需要做的事情。
    猜你喜欢
    • 1970-01-01
    • 2016-10-20
    • 2011-02-22
    • 1970-01-01
    • 2014-08-04
    • 2013-09-04
    • 2017-07-21
    • 2023-03-19
    • 1970-01-01
    相关资源
    最近更新 更多