有去查 Google 大神,但是還是沒感覺到哪邊出問題,現在啟動的是替代方案。
Login 頁面:
if(!(strlen($_SESSION['id'])<1 || strlen($_SESSION['name'])<1))
{
$id=$_SESSION['id'];
$name=$_SESSION['name'];
}
而我在其他網頁會重複使用相同的變數名稱,每當該頁有 session_start()
不管 $name,$id...etc 是否有使用到,他的值一定會變樣(也就是植被更改)
某一頁(問題):
if(!(strlen($_SESSION['id'])<1 || strlen($_SESSION['name'])<1))
{
$id=$_SESSION['id'];
}
// SQL 區段
$id='46564122';
$query="select * from table where id='$id'";
$result=mysql_query($query);
只是連到這頁而已,完全沒用到 session 的變數(頂多是覆蓋)
但是呢,session的值再第三頁讀取發現他已經變樣了,變成剛剛的 46564122。
##CONTINUE##
替代方案(解決頁):
if(!(strlen($_SESSION['id'])<1 || strlen($_SESSION['name'])<1))
{
$id=$_SESSION['id'];
}
// SQL 區段
$ida='46564122';
$query="select * from table where id='$ida'";
$result=mysql_query($query);
竟然改一個變數名稱就可以解決( $id => $ida ),天啊~~
不知道是為啥,這樣來看不用到 session 就別 session_start() 的樣子,
這有可能讓別頁的相同名稱變數改到我的資訊,實在驚人。
應該有正確的解釋方式吧?我只能暫時先這樣做,改天要好好找出問題。
沒有留言:
張貼留言