2010-09-22 145 views
1

在我的本地计算机和网络服务器, 我有一个文件夹 '测试' 和三个文件在它(one.php,two.php,three.php) .会话不工作

one.php

<?php 
ob_start(); 
session_start(); 
$_SESSION['one'] = 1; 
header('Location:two.php'); 
exit(); 
?> 

two.php

<?php 
ob_start(); 
session_start(); 
$_SESSION['two'] = 2; 
header('Location:three.php'); 
exit(); 
?> 

three.php

<?php 
ob_start(); 
session_start(); 
echo '<pre>';print_r($_SESSION); 
?> 

而我在浏览器中采取one.php我得到一个输出

//本地机器

array[one] =1 
array[two] =2 

这是正确的

//在线服务器

array[one] =1 

这是不正确的

这是什么问题? 我没有得到任何警告,

任何人都请告诉我,什么问题?

回答

3

我得到了这个问题的原因。

它与session.save_pathphp.ini文件有关。

确保会话保存路径目录设置为php.ini,存在并且是可写的。

1

尝试调用session_write_close();在发送标题之前。

+0

没有变化,得到相同的结果 – 2010-09-22 22:02:41

+0

嗯...尝试添加error_reporting(E_ALL);到脚本的顶部,看看它是否告诉你任何事情。 – Kris 2010-09-22 22:15:06

+0

没有警告显示,我认为在服务器设置是这样的 – 2010-09-22 22:31:07

2

您应该始终在代码的第一行添加* session_start(); *。在5.2.11版本中已经修复了一个问题。

此代码不起作用:

<?php 
    session_start(); 
?> 

此代码工作正常:

<?php session_start();?> 

所以,如果你检查你的php主机版本与版本是5.2.11或以前的那一个,这可能是问题!