如何在客户端计算机上删除PHPSESSID

Ogu*_*nwu 26 php session

更新问题:

  • 在某些浏览器上,我们有两个PHPSESSID.
  • 我脚本中的任何地方都没有设置一个PHPSESSID
  • 它有HOST(而不是我设置的PHPSESSID的DOMAIN),如www.mywebsite.com
  • 我尝试使用setcookie删除它:setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/', 'www.mywebsite.com');但是这失败了.
  • 尝试使用以下命令删除cookie:setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/');导致我设置的PHPSESSID被删除.
  • 我试过session_name用来重命名我设置的SESSION.这可以工作,但几分钟后几次崩溃了我的服务器.
  • 我没有选择.

我正在我的网站上使用PHP会话.

会话路径是/文件夹,稍后我改为/以适应新目的.

现在,老用户无法登录.

看起来他们现在有两个PHPSESSID存储在他们的浏览器上 - 一个带有路径/文件夹,另一个带有/.

我该怎么做才能确保旧用户可以登录,同时确保会话在整个网站范围内使用"/".

更多信息

当我说两个phpsessionid时,请参考图像

两个PHPSESSID

  1. 如果我使用,登录工作

一个. session_set_cookie_params(864000, '/cv', '.website.com', 0, 1);

但如果我使用,则无法工作:

B. session_set_cookie_params(864000, '/', '.website.com', 0, 1);

  • 如果我使用上面的版本2A,会话将仅在/ cv中可用,而在其他网站文件夹中不可用,例如./夹.

使用JAVASCRIPT删除PHPSESSID的更新

  • 当我运行alert(document.cookie)时,它会显示除PHPSESSID之外的所有cookie
  • 因此,删除PHPSESSID cookie的所有尝试都会失败,而其他cookie可能会被删除.

使用PHP删除PHPSESSID的更新

  • 当我var_dump($_COOKIE['PHPSESSID']);返回的是具有path/cv的PHPSESSID的值
  • 尝试删除setcookie ("PHPSESSID", "", time() - 3600);失败.

dbr*_*ann 16

我认为你正在混淆事情,或者你应该详细了解你的设置/问题.

PHP的会话路径是会话数据存储在服务器上的位置,而不是客户端.请参阅文档:https://secure.php.net/manual/en/session.configuration.php#ini.session.save-path

您可以移动这些文件并在发生碰撞时替换/保留您认为合适的方式.这几乎只受访问/移动内容时的读/写权限以及您的web服务器用户(例如apache或nginx)或php-user用于从/向新位置读取/写入它们所限制.

如果通过"浏览器中的PHPSESSID"表示会话ID是您的网址的一部分,这是一个不同的PHP设置,无论如何应该禁用,请参阅文档中的注意事项:https://secure.php.net/manual /en/session.configuration.php#ini.session.use-trans-sid

根据您更新的问题进行修改:

已经有一个很好的基于JS的解决方案,用于使旧cookie过期.我会那样做的.如果你不能这样做,你可以做一个重定向,/cv在那里有一个php脚本,它读取cookie并将数据存储在某个地方(例如基于user_id的数据库)并使cookie过期.然后,您可以重定向到旧页面,查找"/" - cookie并恢复数据.这是一个非常丑陋的黑客,但我不认为你可以在PHP中获取每个路径的cookie,因为它是服务器端并且基于客户端提供的会话ID(但我可能是错的).


Mac*_*ity 5

我只是将cookie过期/folder.这应该只留下一个会话cookie/

setcookie('PHPSESSID', '', time() - 86400, '/folder/');
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以在session_start()之前使用session_name()更改新会话的cookie名称,并让问题在几天后自行解决.

session_name("SESSION_ID");
session_start();
Run Code Online (Sandbox Code Playgroud)