2014-10-02 63 views
1

在每次页面加载时,我都看到会话cookie的值正在改变,因此它每次都会创建一个新会话。我所做的全部是session_start(),并使用php.ini的默认值设置了一些样本测试数据,我自己也没有任何配置。PHP会话未加载

session.save_handler = files 
session.save_path = "C:\xampp\tmp" 
session.use_strict_mode = 0 
session.use_cookies = 1 
session.use_only_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 0 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 1000 
session.gc_maxlifetime = 1440 
session.referer_check = 

C:\xampp\tmp我观察每页面加载出现新的会话文件,并打开时,我看到我设置的数据在里面。所以我想,问题在于识别以前创建的会话文件。任何想法为什么发生这种情况?

编辑:

我设定的只是为了看看如果会话工作

session_start(); 
if(isset($_SESSION['test'])){ 
    $_SESSION['test']++; 
}else{ 
    $_SESSION['test'] = 1; 
} 
+0

如果加载页面一次,然后重新加载该页面不知提供会话ID,有仍然存储在您的浏览器中的会话cookie?如果没有cookie持续存在,它会产生这种行为 – Luke 2014-10-02 09:59:44

+0

是否有可能您禁用了Cookie /某种开发模式处于活动状态?尝试使用另一个浏览器的相同操作,看看结果是否相同。 – 2014-10-02 10:01:49

+0

@Coulton如果我手动删除cookie并删除'tmp'中的所有会话文件,并像第一次打开页面一样,我会看到cookie被设置以及在'tmp'中生成的会话文件持有测试数据。但是,当我立即刷新页面时,Cookie的值发生变化,并在'tmp' – 2014-10-02 10:02:32

回答

1

我的工作框架数据已经加载饼干到静态类的自定义cookie处理机制并清空$_COOKIE。显然session_start()依靠$_COOKIE检索默认会话ID,所以我不得不做的是从饼干类

session_id(\Cookie::get('PHPSESSID')); 
session_start();