我有一個基本的表單提交腳本,它可以從循環中設置多維$ _SESSION變量(2個級別) - 然後使用標題位置重定向。
我在我的本地機器(運行PHP 5.3.8的xampp/windows服務器)上開發了這個,沒有問題,但我在運行PHP 5.3.3的Web服務器上遇到了問題,甚至升級到5.3.21的問題。
這裏是我的腳本:
if($_POST['submitted']){
$_SESSION['c'] = array();
$_SESSION["RETURNING_DISCOUNT"] = array();
$seq = 1;
for($d=1; $d<=10; $d++){
if($_POST["COMPANY_$d"] && $_POST["PHONE_$d"]){
$_SESSION['c'][$seq] = array();
$_SESSION['c'][$seq]["COMPANY"] = str_replace("\'", "", str_replace('\"', '', $_POST["COMPANY_$d"]));
$_SESSION['c'][$seq]["PHONE"] = str_replace("\'", "", str_replace('\"', '', $_POST["PHONE_$d"]));
if($_POST["COUNTRY_$d"] == 'Canada'){
$_SESSION['c'][$seq]["STATE"] = str_replace("\'", "", str_replace('\"', '', $_POST["STATE_$d"]));
}else{
$_SESSION['c'][$seq]["STATE"] = str_replace("\'", "", str_replace('\"', '', $_POST["STATE_2_$d"]));
}
$_SESSION['c'][$seq]["COUNTRY"] = $_POST["COUNTRY_$d"];
$_SESSION['c'][$seq]["ADDY1"] = str_replace("\'", "", str_replace('\"', '', $_POST["ADDY1_$d"]));
$_SESSION['c'][$seq]["ADDY2"] = str_replace("\'", "", str_replace('\"', '', $_POST["ADDY2_$d"]));
$_SESSION['c'][$seq]["CITY"] = str_replace("\'", "", str_replace('\"', '', $_POST["CITY_$d"]));
$_SESSION['c'][$seq]["ZIP"] = str_replace("\'", "", str_replace('\"', '', $_POST["ZIP_$d"]));
$_SESSION["RETURNING_DISCOUNT"][$_SESSION['c'][$seq]["COMPANY"]] = $_POST["RETURNING_COMPANY_$d"];
$seq++;
}//end declare var in $_SESSION
}//end for
header("location: register3.php");
}//end usersubmit
,並將它設置什麼是以下幾點:
[RETURNING_DISCOUNT] => Array
(
[working] => 1
)
[c] => 11
它所應該設置(如果我停用頭的位置沒有設置)爲:
[RETURNING_DISCOUNT] => Array
(
[working] => 1
)
[c] => Array
(
[1] => Array
(
[COMPANY] => jk
[PHONE] => jhgk
[STATE] =>
[COUNTRY] =>
[ADDY1] =>
[ADDY2] =>
[CITY] =>
[ZIP] =>
)
)
因此,你可以看到問題是$ _SESSION ['c']數組。就像我說的那樣,當你禁用標題時(「location:register3.php」);它會起作用。就好像頁面在多維數組值正確設置之前重定向一樣。
難道這是一個output_buffering問題?我的php.ini文件中有output_buffering = off。我也打開它看看它會有所作爲,但沒有運氣。
任何有識之士將不勝感激。謝謝。
我沒有看到你的'session_start()'調用,你是否在最初調用它? – MrCode 2013-02-18 10:16:35
你有session_start()嗎? – vectorialpx 2013-02-18 10:17:54
是的,抱歉,它已經超出了我複製的代碼,但session_start()肯定設置在頁面頂部。 – 2013-02-18 10:18:13