我剛剛開始學習PHP,併爲我的網站編寫了一個PHP和mySQL的帳戶系統。我知道SQL的東西工作正常,問題是我的PHP會話。爲什麼我的基於會話的登錄系統無效?
當我去測試它時,我可以嘗試登錄,並失敗。然後,我嘗試再次登錄,它會成功。它在第二次嘗試登錄時總是成功。它在Firefox中的第一次嘗試從來沒有成功,但它在Chrome中。此外,在Chrome成功登錄之後,在我的網站上轉到一些不同的頁面似乎擦掉了會話。或者,至少,該會議沒有在其他網頁上註冊。我在Firefox上沒有這個問題。我已經檢查過,重複檢查和三重檢查,並且我的所有頁面都先調用了session_start(),所以我知道這不是問題。
我不能對PHP會話有足夠的理解,因爲它只是不一致工作。
發佈後,我在IE中測試,並且一切工作正常。我登錄了第一次嘗試,並且我訪問的任何頁面都維護了我的會話。
下面是PHP腳本,實際上是「日誌中的」用戶代碼:
<?php
session_start();
//pass info to mysql(servername, username, password)
$connect = mysql_connect ("localhost", "ggstudio", "mtgertai1");
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'];
header('Location: http://www.glorygamer.com/account_home.php');
}
else
{
$loginFailed= TRUE;
setcookie("incorrectLogin", $loginFailed, time()+20);
header('Location: http://www.glorygamer.com/shibboleth.php');
}
?>
處理登錄的PHP代碼將需要幫助您在這裏... – tobyodavies 2011-05-14 05:17:56
發佈您的示例代碼,以便我們可以幫助您解決您的問題。 – Prix 2011-05-14 05:19:53
謝謝。我不確定是否有一些明顯的已知問題,如果我在沒有代碼的情況下描述它就會明顯。我已經將代碼包含在我原來的問題中了。 – rbusch90 2011-05-14 17:08:45