我使用PHP會話和mySQL爲我的網站創建了一個用戶帳戶系統。我一直在努力讓它長期得到正確的運作。第一個晚上它的工作「大部分」是正確的。從那時起,我幾乎沒有任何進展。我一直在研究和谷歌搜索,直到我燒壞了,我還沒有弄明白。爲什麼我的會話在手動訪問時仍然保留在其他頁面上,而不是在遵循鏈接時保留?
問題是,我可以創建用戶帳戶很好,並按計劃在我的sql數據庫中註冊,我甚至可以正確登錄。但是,當我訪問我網站上的其他頁面時,會話似乎不在這些頁面上註冊。我檢查用戶的會話與
if (isset($_SESSION['username']))
如果他們沒有登錄,每個頁面上的主菜單上出現「登錄」按鈕。如果他們已登錄,則會出現一個帶有用戶名的按鈕,鏈接到他們的帳戶頁面。如果你想自己看,www.glorygamer.com是網站,你可以使用testAccount和密碼作爲登錄和看到的密碼。
這是奇怪的部分。今天我做了一個發現,現在我確定它不是我的PHP腳本的問題。如果我手動輸入我想要訪問的頁面(如果我真的鍵入「www.glorygamer.com/account_home.php」,那麼它完美地工作。會話總是以我以這種方式訪問的任何頁面正確啓動。但是,當我點擊我的菜單中的鏈接,它似乎幾乎隨機工作,有時我會被髮送到下一頁,會話將正確啓動,有時它不會。
是否有一些特殊的方式我需要鏈接我的網頁,儘管它們都正確的session_start()之前別的
這裏是登錄腳本:
<?php session_start();
//pass info to mysql(servername, username, password)
$connect = mysql_connect ("localhost", "***", "***");
if (!$connect)
{
die ('Failed to connect: ' . mysql_error());
}
mysql_select_db("ggstudio_accountDatabase", $connect);
//capture data sent to page through login
//usernameField and passwordField
$usernameSubmission = $_POST['usernameField'];
$passwordSubmission = $_POST['passwordField'];
$validAccount = mysql_query("SELECT * FROM userAccounts WHERE userID = '$usernameSubmission' AND userPassword = '$passwordSubmission'");
$row = mysql_fetch_array($validAccount);
if (($row['userID'] == $usernameSubmission)&&($row['userPassword'] == $passwordSubmission))
{
/*********************************
**********************************
assign global variables to session
after starting session and then***
redirect to user homepage*********
**********************************
**********************************
*/
//get account number from database
$_SESSION['accountNumber']= $row['accountNumber'];
//get first name from database
$_SESSION['firstName']= $row['firstName'];
//get last name from database
$_SESSION['lastName']= $row['lastName'];
//save username into session
$_SESSION['username']= $row['userID'];
//save password into session (only really useful if user wants to change password)
$_SESSION['userPassword']= $row['userPassword'];
//get user's email address from database
$_SESSION['userEmail']= $row['userEmail'];
//get GP from database
$_SESSION['gpoints']= $row['userGloryPoints'];
//get user join date from database
$_SESSION['userJoinDate']= $row['userJoinDate'];
//get user rank
$_SESSION['userRank']= $row['userRank'];
session_write_close();
header('Location: http://www.glorygamer.com/account_home.php');
exit;
}
else
{
$loginFailed= TRUE;
setcookie("incorrectLogin", $loginFailed, time()+20);
session_write_close();
header('Location: http://www.glorygamer.com/shibboleth.php');
exit;
}
?>
您的PHP安裝是否使用會話cookie?你能試着找出他們會發生什麼事嗎?你是否確定每個文件中只有一個'session_start()'?你能告訴你如何初始化會話嗎? – 2011-05-15 21:30:13
我將用於登錄用戶的腳本(在其中開始會話)添加到我原來的問題中。 – rbusch90 2011-05-15 22:07:21