作者knuckles (那克斯)
看板PHP
標題[請益] 詭異的session變數問題
時間Thu Dec 24 16:38:26 2009
剛發生了一點bug,研究了好久
session_start();
$tn = 0;
if(isset($_GET['tn'])) $tn = $_GET['tn'];
else if(isset($_SESSION['tn'])) $tn = $_SESSION['tn'];
echo $tn;
像這樣,當 $_SESSION['tn'] 有值時
最後 $tn 一樣是 0
可是當 $_GET['tn'] 有值時
$tn 就會是 $_GET['tn'] 的值
不過如果改成這樣
session_start();
if(isset($_GET['tn'])) $tn = $_GET['tn'];
else if(isset($_SESSION['tn'])) $tn = $_SESSION['tn'];
else $tn = 0;
echo $tn;
最後$tn就會是 $_SESSION['tn'] 的值了
所以我想是因為一般變數名稱如果和 session 陣列 的index名稱一樣會互相影響?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.117.233
※ 編輯: knuckles 來自: 114.43.117.233 (12/24 16:40)
1F:推 EragonJ:register_globals 要設定成 off 12/24 16:51
2F:推 EragonJ:register_gloabals的設定是說可以決定要不要把EGPCS變數 12/24 16:55
3F:→ EragonJ:視為全域變數以$NAME的方式去存取 12/24 16:55
5F:→ bobju:看不到$_SESSION['tn']被賦值的情境,還無法確認真正原因. 12/24 17:25
6F:→ knuckles:喔喔 謝謝 EragonJ 原來是忘了關那個 關了就正常了 ^^|| 12/24 18:14
7F:→ knuckles:測試用的電腦是裝appserv,預設這個是on 囧 12/24 18:18