[請益] 系統登入後,點選系統其他連結時會產生兩個session id?
小弟是PHP的新手,如果問了笨問題請多海涵...
工作環境:WebServ v1.2.10.0 + WinXP SP3
問題:
使用者在登入頁面(login.php)輸入帳密後,帳密的資料會POST到checker.php的頁
面,checker.php主要在連結MySQL進行帳密比對並將資訊寫入session中。使用者成功
進入系統後,點選修改密碼的連結,此頁面會先檢查session的數值是否正確才後,才
讓使用者進行修改,否則會自動跳出系統到登入頁面,讓使用者重新登入。
問題就出現在使用者登入後,session A會產生在我設置的目錄底下,但是當使用者
進入系統點選其他會使用到session內容的頁面時,系統又會產生一個session B,怪的
是session B是沒有紀錄任何數值的空檔案,而該php的頁面又只認sesssion B,不會去
抓session A的值。
此時系統會自動轉跳到login.php頁面讓使用者重新登入,妙的是使用者重新登入
後就不會產生上述的問題,因為第二次登入時系統會把session寫進去上次登入時產生
的session B。
現在只要奇數次的登入就會發生這個問題,偶數次則不會(因為他會自己抓取
session B並寫入值)。
------------------------------------------------------------------------------
checker.php部分程式碼:
<?php
session_start();
header("Content-type: text/html; charset=big5");
$link=mysql_connect('127.0.0.1','root','root');
if(!$link) echo "fail";
mysql_select_db("cesh", $link);
$id=$_POST['id'];
$pass=$_POST['password'];
$sql = "select user_password from user where user_id='$id'";
$result=mysql_query($sql,$link);
$row=mysql_fetch_row($result);
if($row[0]==$pass && $pass <>'') {//比對密碼是否正確
session_register("id"); //註冊user id
session_register("pass"); //註冊user password
session_register("islegal"); //註冊是否登入
session_register("se_room");
$_SESSION['id']=$id;
$_SESSION['pass']=$pass;
$_SESSION['islegal']="y";
echo "<hr>歡迎使用者 <B>$id</B> 使用本系統,三秒後系統自動跳轉頁面<hr>";
header("Refresh: 3 ; URL = http://localhost/menu.php");
}
mysql_close($link);
?>
-----------------------------------------------------------------------------
修改密碼頁面:
<?php
require_once("http://127.0.0.1/incld.inc");
session_start();
$id=$_SESSION['id'];
$pass=$_SESSION['pass'];
$islegal=$_SESSION['islegal'];
if($islegal=="y") {
$sql = "select user_name from user where user_id='$id'";
$result=mysql_query($sql,$link);
$row=mysql_fetch_row($result);
echo "歡迎使用者:<B>$row[0]</B>";
} else {
echo "Session過期,請重新登入!<P>";
header("Refresh: 3 ; URL=http://localhost/login.php");
}
?>
<FORM ACTION="modify_password.php" METHOD=POST>
<TABLE border=1>
<TR>
<TD>原始密碼</TD>
<TD><input type=password size=10 name=password_eo></TD>
</TR>
<TR>
<TD>新密碼</TD>
<TD><input type=password size=10 name=password_new></TD>
</TR>
<TR>
<TD>確認新密碼</TD>
<TD><input type=password size=10 name=password_check></TD>
</TR>
</TABLE><P>
<input type=submit VALUE="送出"> <input type=reset VALUE="重填">
</FORM>
-----------------------------------------------------------------------------
小弟在本版以及google爬了很久的文卻找不到解決的方法,只有找到一篇類似的
問題(http://bbs.ecstart.com/thread-8263-1-1.html 請看三樓的回答),可是也
沒有人有正解...
麻煩各位高手相救,感恩~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.68.219.128
→
08/10 22:03, , 1F
08/10 22:03, 1F
→
08/11 23:26, , 2F
08/11 23:26, 2F
→
08/11 23:26, , 3F
08/11 23:26, 3F
→
08/11 23:26, , 4F
08/11 23:26, 4F
→
08/11 23:27, , 5F
08/11 23:27, 5F
→
08/11 23:28, , 6F
08/11 23:28, 6F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章