没有cookie,PHP会话不会持久


PHP session not persistent without cookies

由于浏览器中禁用了cookie,我们的Web服务器上的会话不会坚持。这意味着,如果我转到下一页,我会收到一个新的会话ID。在我重新加载的每一页上,我都会成为一个新的会话ID。启用cookie后,外翻就可以了。

网络服务器的规格:

  • PHP版本5.3.3
  • Apache版本2.2.13
  • 使用SUSE Linux的Web服务器

在本地安装XAMPP时,一切正常。

更新:

我在每个页面上都有以下设置:

  • ini_set('session.use_cookies','0')
  • ini_set('session.use_trans_sid','1')
  • session_start()

会话ID存在于URI中,但当我在页面上检查会话ID时,它们是一个新的ID,每次重新加载时,它们都是另一个ID。

当然可以。由于HTTP是一种无状态协议,会话通过将会话ID存储在cookie中而链接到用户。删除(或拒绝)此cookie将结束您的会话。

如果你不想要cookie,你必须在URL:中传输会话ID

除非您使用的是PHP 4.2.0或更高版本,否则您需要启用它在构建PHP时手动执行。在Unix下,将--enable trans-sid传递给配置。如果此生成选项和运行时选项启用session.use_trans_sid时,相对URI将更改为自动包含会话id。

http://es.php.net/manual/en/session.idpassing.php

另请参见session.use_cookiessession.use_only_cookies

这种方法可以特别容易地通过共享链接泄露您的私人数据,因此现在几乎没有人使用它。