2010-09-22 136 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或以前的那一個,這可能是問題!