更新问题:
setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/', 'www.mywebsite.com');但是这失败了.setcookie ("PHPSESSID", $_COOKIE['PHPSESSID'], time() - 864000, '/');导致我设置的PHPSESSID被删除.session_name用来重命名我设置的SESSION.这可以工作,但几分钟后几次崩溃了我的服务器.我正在我的网站上使用PHP会话.
会话路径是/文件夹,稍后我改为/以适应新目的.
现在,老用户无法登录.
看起来他们现在有两个PHPSESSID存储在他们的浏览器上 - 一个带有路径/文件夹,另一个带有/.
我该怎么做才能确保旧用户可以登录,同时确保会话在整个网站范围内使用"/".
更多信息
当我说两个phpsessionid时,请参考图像
一个. session_set_cookie_params(864000, '/cv', '.website.com', 0, 1);
但如果我使用,则无法工作:
B. session_set_cookie_params(864000, '/', '.website.com', 0, 1);
使用JAVASCRIPT删除PHPSESSID的更新
使用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(但我可能是错的).
我只是将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)
| 归档时间: |
|
| 查看次数: |
11894 次 |
| 最近记录: |