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

如何在客户端计算机上删除PHPSESSID,php,session,Php,Session,问题更新: 在某些浏览器上,我们有两个phpsessid 我在脚本的任何地方都没有设置一个PHPSESSID 它的主机(而不是我设置的PHPSESSID的域)为www.mywebsite.com 我尝试使用setcookie删除它:setcookie(“PHPSESSID”,$\u COOKIE['PHPSESSID',time()-864000',/','www.mywebsite.com')但这失败了 尝试使用以下方法删除cookie:setcookie(“PHPSESSID”,$_coo

问题更新:

  • 在某些浏览器上,我们有两个phpsessid
  • 我在脚本的任何地方都没有设置一个PHPSESSID
  • 它的主机(而不是我设置的PHPSESSID的域)为www.mywebsite.com
  • 我尝试使用setcookie删除它:
    setcookie(“PHPSESSID”,$\u COOKIE['PHPSESSID',time()-864000',/','www.mywebsite.com')但这失败了
  • 尝试使用以下方法删除cookie:
    setcookie(“PHPSESSID”,$_cookie['PHPSESSID',time()-864000',/)导致PHPSESSID I集被删除
  • 我已尝试使用
    session\u name
    重命名我设置的会话。这可以正常工作,但几分钟后服务器分别崩溃
  • 我别无选择

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

会话路径是/folder,后来我改为/folder以适应新的用途

现在,老用户无法登录

现在,他们的浏览器上似乎存储了两个phpsessid,一个带有path/folder,另一个是/

如何确保老用户可以登录,同时确保会话在站点范围内使用“/”进行

更多信息

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

  • 如果我使用
  • A.
    session\u set\u cookie\u参数(864000,/cv,'.website.com',0,1)

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

    B.
    session\u set\u cookie\u参数(864000,“/”,“.website.com”,0,1)

    • 如果我使用上面的版本2A,则该会话将仅在/cv中可用,而在其他网站文件夹(如/folder)中不可用
    关于使用JAVASCRIPT删除PHPSESSID的更新

    • 当我运行alert(document.cookie)时,它会显示除PHPSESSID之外的所有cookie
    • 因此,删除PHPSESSID cookie的所有尝试都会失败,而其他cookie则可以删除
    关于使用PHP删除PHPSESSID的更新

    • 当我
      var_dump($_COOKIE['PHPSESSID'])返回的是带有路径/cv的PHPSESSID的值
    • 尝试使用
      setcookie(“PHPSESSID”,“time()-3600”)删除失败

    我认为你把事情搞混了,或者你应该更详细地了解你的设置/问题

    PHP的会话路径是会话数据存储在服务器上的位置,而不是客户端。请参阅文档:

    您可以移动这些文件并替换/保留,以防发生冲突。这几乎只受访问/移动内容时的读/写权限以及Web服务器用户(如apache或nginx)或php用户在新位置读/写内容时的读/写权限的限制

    如果“浏览器中的PHPSESSID”是指会话id是URL的一部分,这是一个不同的PHP设置,无论如何都应该禁用,请参阅文档中的注意事项:

    根据更新的问题进行编辑:


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

    我猜您的脚本不知道,在会话启动()时应该访问哪个会话

    尝试使用指定会话的正确路径

    ini_set('session.cookie_path', '/');
    

    取决于您的设置


    如果没有帮助,我建议使用它将当前会话id替换为新的会话id,并保留当前会话信息。

    您必须删除客户端的cookie。这在javascript中是可能的

    在您的站点上尝试以下javascript:

    <script type="text/javascript">
         document.cookie = "PHPSESSID=;Path=/cv;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
    </script>
    
    在控制台上,cookie消失了,如下图所示(我使用了表左下角的小刷新按钮,因为在本例中它只是临时的)


    在下一次重新加载时,在本例中,我再次获得cookie,因为Mozilla将其返回给我。在您的站点上,您不必再次创建旧的cookie,一切都很好。

    解决方案是让用户在会话过期期间转到/文件夹路径。在此路径上,使用setcookie函数()生成php脚本,用于将所有cookie从/folder复制到/path


    附加说明:Cookie与路径和域相关联,它很重要(默认情况下是/,但在您的情况下似乎不是这样)。因此,无法从父路径访问子路径(如/folder或/me)中的PHPSESSID。它们在父母之间传播。因此,来自/me的cookie与for/with-not-assigned-explicit相同

    如果您手动发送带有所需路径的新过期日期的标题,客户端应将其删除

    session_start();
    header("Set-Cookie:PHPSESSID=".session_id()."; expires=Sat, 07-Nov-1999 14:58:07 GMT; path=/cv/");
    
    第一次,您拥有旧的cookie路径,但从第二页调用时,将仅存储和传输路径
    /
    中的cookie


    当您知道客户机是否受到此问题的影响或此问题持续一个月时,您可以发送此标题。

    我只需从
    /folder
    使cookie过期即可。这将为
    /

    setcookie('PHPSESSID', '', time() - 86400, '/folder/');
    

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

    session_name("SESSION_ID");
    session_start();
    
    无法删除Cleint浏览器的Cookie 首先,您必须了解,您不能以任何方式删除客户端系统上的
    COOKIES
    。当您的cookie无效时,浏览器不会删除它,但会使cookie无效。cookie仍然在客户端上
    session_start();
    header("Set-Cookie:PHPSESSID=".session_id()."; expires=Sat, 07-Nov-1999 14:58:07 GMT; path=/cv/");
    
    setcookie('PHPSESSID', '', time() - 86400, '/folder/');
    
    session_name("SESSION_ID");
    session_start();
    
    session_start(); // initialize session
    session_destroy(); // destroy session
    setcookie("PHPSESSID","",time()-3600,"/"); // delete session cookie
    
    document.cookie = "PHPSESSID=; expires=Thu, 01 Jan 1970 00:00:00
            UTC;path=/;host=localhost";
    
     count=0;
    
     foreach($_COOKIE as $key => $value){
        if ( $key == "PHPSESSID" ){
           count++;
        }
     }
     if (count>1){
        //Destory all cookies here
        foreach($_COOKIE as $key => $value){
              setcookie($key,"",time()-3600,"/");
        }
    
        //Reload/redirect the current page to dispose of all things
        header("Locations:" . $your_url);
        exit(0);
     }
    
    setcookie('PHPSESSID', '', -3600, '/cv');
    
    setcookie('phpsessid','value',time()-1);
    
    setcookie ("PHPSESSID", "", time() - 3600, '/');