没有cookie的PHP会话

Del*_*ani 56 php cookies session

有没有办法可以在PHP中启动持久会话而无需放置会话cookie?是否有其他方法可以跨页面维护会话,例如基于IP地址的解决方案?

我问的原因是,虽然大多数用户都有cookie,但我想看看登录系统是否有办法让那些禁用它的人(尽管我认为禁用cookie只是个人的不必要的偏执狂).

Pur*_*orm 59

我认为要求您的用户启用cookie太过分了.当人们完全关闭它时,我发现它很愚蠢.

否则,您可以将您设置session.use_only_cookies为"0"以强制将会话ID的附件发送到您的php中的URL.然而,这种方法有几个缺点.主要是将状态保持在URL中,而不是Cookie头.如果用户要复制并粘贴他们所在页面的URL,而其他人要点击它,则他们都将使用相同的会话.

<?php
     ini_set("session.use_cookies", 0);
     ini_set("session.use_only_cookies", 0);
     ini_set("session.use_trans_sid", 1);
     ini_set("session.cache_limiter", "");
     session_start();
Run Code Online (Sandbox Code Playgroud)

  • "(即使是蜘蛛现在也可以吃饼干)"噢.:)我说让他们,即使它给他们爱情处理. (14认同)
  • 应该注意的是,这些设置不会改变PHP代码中的JS超链接和Location头. (4认同)
  • Facebook应用程序在IFrame中运行,在IE上,不允许存储cookie(默认安全设置) (3认同)
  • @ w43L http://www.marco.org/2007/04/27/p3p-sucks-how-to-get-frame-cookies-unblocked-in-ie6 (3认同)

hal*_*dan 5

您可以将ini-Value设置session.use_trans_sid为true,以激活将会话ID附加到每个URL.看看这个.

出于安全考虑,您应该将会话限制为创建会话的IP.然而,这并不是完全安全的,因为具有相同IP的人(例如在代理之后)可以重用那个非常相同的会话.