我在ajax-php數據庫的主頁上有一個登錄狀態指示器div。點擊時登錄按鈕做兩件事。登錄狀態指示器功能不起作用
<input value="Login" type="button" onclick='logIntheUser(/*function to process login request*/);updateLoginStatusIndicator(/*function to update login status in login staus indicator div*/);' />
- 它調用
logIntheUser
功能的登錄數據發送到PHP訪問 處理器文件設置$_SESSION['username']
如果用戶名和 密碼是否正確。- 它還呼籲
updateLoginStatusIndicator
功能,顯示 身份登錄$_SESSION['username']
如果$_SESSION['username']
設置 或顯示如果$_SESSION['username']
未設置「不登錄」。
下面是其與updateLoginStatusIndicator
功能執行的控制器編碼:
/*===login status indicator/updater===*/
if(isset($_REQUEST['change-login-indicator']))
{
if(!isset($_SESSION))
{
session_start();
}
if(isset($_SESSION['username']))
{
echo 'Logged in as:'.$_SESSION['username'];
}
else
{
echo 'not logged in';
}
現在的問題是,一段時間用戶登錄成功(即$_SESSION['username']
被設定),但仍然在第二功能updateLoginStatusIndicator
顯示「未登錄」。登錄狀態指示器不能正常工作。可能是updateLoginStatusIndicator
在logIntheUser
之後運行,那麼它將正確更新登錄狀態。但我不知道該怎麼做。請幫忙!
編輯
當我調用該函數回調即像:logIntheUser(updateLoginStatusIndicator()),它仍然無法正常工作(可能是我的回調方法不正確)。然後,當我將set_time_limit(1);
添加到updateLoginStatusIndicator()
函數腳本中將其延遲1秒鐘時,它開始工作,但它不是推遲腳本的最佳做法。請幫助我,我該如何使用它,以便函數僅在logIntheUser()
函數完成執行後才能執行。請幫忙。
嘗試這樣做,而不使用isset功能,有時isset不根據變量的服務器設置工作。 – 2012-04-23 08:50:34
@RavinderSingh嗯它的工作方式不行。我認爲這是由於功能執行的時間。它的第二個函數'updateLoginStatusIndicator'在完成第一個函數'logIntheUser'後運行,這個錯誤將被修復。但我不知道如何運行第一個函數'logIntheUser',使第二個函數'updateLoginStatusIndicator'等待第一個函數完成並運行它。 – 2012-04-23 09:00:46
只是從logInTheUser函數返回一些值,並在此函數返回值時調用updateLoginStatusIndicator函數。 – 2012-04-23 09:24:23