2011-04-27 66 views
1

我有以下的源代码不同的会话ID每次在session_start执行

session1.php

<?php 

session_start(); 
echo session_id(); 

?> 

session2.php

<?php 

session_start(); 
echo session_id(); 

?> 

当访问I session1.php然后访问会话2 .php,我得到了不同的输出。

为什么这样做呢?

回答

3

浏览器不会将会话cookie发送回服务器。这可能有两个原因。

  1. 浏览器被配置为不发送cookie到服务器。您无法强制浏览器发送cookie。在这种情况下,唯一的选择是在URL中传递会话标识符,尽管这通常不是一个好主意。
  2. 服务器配置为不使用cookie作为会话标识符(通过session.use_cookies配置选项)。
+0

//刚刚检查phpinfo()。session.use_cookies设置为On,但session.save_path没有值。 session.save_path是否可能导致此问题? – Moon 2011-04-27 01:02:43

+0

@Moon这当然很奇怪。在我的phpinfo()中,即使它没有在php.ini中明确提到,它也会被设置。 – Oswald 2011-04-27 09:37:25

+0

我知道这是旧帖子,但只面对与IE相同的问题,并找到了解决方案,所以想分享以防万一有人面临同样的问题。我没有设置我的PHP代码中的所有全局变量和IE浏览器不工作 – 2016-12-15 13:23:35

0

如果你在* nix中运行,尝试设置的session.save_path到/ tmp。如果这不起作用,请查看浏览器的Cookie缓存以查看cookie是否确实正在被浏览器保存。

0

尝试将您的会话cookie存储在数据库中而不是一个服务器上。这为我节省了大量时间和其他会话cookie问题,特别是如果您在共享服务器上。这可能会帮助http://www.raditha.com/php/session.php好运

+0

我想当你保存会话密钥,然后使用类似memcache的东西。 – Stony 2012-10-29 08:20:52

相关问题