2012-09-24 52 views
4

我有一個登錄頁面,如下所示自動登錄:創建第二個登錄頁面,在用戶

<form action="?" method="post" id="frm-useracc-login" name="frm-useracc-login" > 

    <div id="login-username-wrap" > 

     <div class="login-input-item left"> 

      <div class="div-search-label left"> 

       <div id="div-leftheader-wrap"> 

        <p class="a-topheader-infotext left"><strong>Username: </strong></p> 

       </div> 

      </div> 

      <div class="login-input-content left div-subrow-style ui-corner-all"> 

       <input type="text" tabindex="1" name="txt-username" id="txt-username" class="input-txt-med required addr-search-input txt-username left"> 

      </div> 

     </div> 

    </div> 

    <div id="login-password-wrap" > 

     <div class="login-input-item left"> 

      <div class="div-search-label left"> 

       <div id="div-leftheader-wrap"> 

        <p class="a-topheader-infotext left"><strong>Password: </strong></p> 

       </div> 

      </div> 

      <div class="login-input-content left div-subrow-style ui-corner-all"> 

       <input type="password" tabindex="1" name="txt-password" id="txt-password" class="input-txt-med required addr-search-input txt-password left"> 

      </div> 

     </div> 

    </div> 

    <div id="login-btn-bottom" class="centre-div"> 

     <div id="login-btn-right"> 

      <button name="btn-login" id="btn-login" class="btn-med ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper left">Login</button> 
      <button name="btn-cancel" id="btn-cancel" class="btn-med ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper left">Cancel</button><br /><br /> 

     </div> 

    </div> 

</form> 

在這裏,我session.controller.php文件:

Click Here

基本上,我想要做的是創建第二個登錄頁面,該頁面會自動將值傳遞給會話控制器並登錄。例如,如果我轉到login-guest.php,我會將用戶名和密碼的默認值設置爲一個jQuery自動點擊事件gs他們在使用$("#btn-login").trigger('click');

問題是,會話控制器會自動返回到login.php如果會話超時,我不知道我怎麼能實現這一點。任何幫助將非常感激!

+0

問題是您不希望用戶在會話超時後註銷? –

+0

基本上,如果我在代碼中保留這一行; '標題(「位置:login.php中」);' - 如果我試圖通過登錄登錄-guest.php它重定向到連的login.php雖然我已經輸入了正確的用戶名和密碼,所以我不得不評論了這一點,其造成問題。另一個問題是,當我經過的login.php登陸,我希望它重定向到login.php中,如果它是通過登錄-guest.php記錄在其中username ='Guest'我希望它重定向到登錄-guest.php。正如我正在評論這一行代碼一樣,沒有重新指導過這樣的事情。 – nsilva

回答

2

正如你在你的評論中提到,你必須知道用戶是如何在第一地點(登錄或登錄客體)登錄,所以你需要有某種形式的國家爲每個用戶的反正。

現在,如果你不能增加會話超時無限的,你可能需要存儲登錄鍵入一些別的地方像餅乾,或在您的網址查詢字符串。

在cookie的情況下,它會是這樣的:

在你login-guest.php的登錄部分:

... 
$expire = 60 * 60 * 24 * 30 * 24 + time(); // 2 years 
setcookie('logintype', 'guest', $expire); 

這您發送用戶到登錄頁面:

if(isset($_COOKIE['logintype']) && $_COOKIE['logintype']=='guest'){ 
    header('Location: login-guest.php'); 
} else { 
    header('Location: login.php'); 
} 

我不認爲餅乾可以有無限的生命,所以我已經設定了兩年的期限,您可以更改。顯然,如果用戶刪除Cookie或使用其他瀏覽器,它將不會持續。

+0

感謝您的幫助,我剛剛嘗試過這一點,但仍然當我去登錄guest.php,頁面不加載和馬上它login.php,任何想法? – nsilva

+0

此外,在其中一個包括我有以下內容: - – nsilva

+0

'if($ _SERVER ['PHP_SELF']!='/onlinebookingv4/login.php'){ \t SessionController :: set_useraccount(false); }',我是否還需要爲此添加其他語句? – nsilva

0

你應該用的登錄類型每個登錄表單上的額外字段解決您​​的問題(如:註冊,來賓),並用該值不期望的重定向或任何其他邏輯你需要什麼?

您也可以保持這種登錄類型,在進一步使用會話/餅乾。

0

你可以簡單的隱藏輸入添加到每個窗體:

<input type="hidden" name="login_type" value="guest" /> 

你會再視重定向在其上進行登錄類型:

if($_POST['login_type'] == 'guest') { 
    header('Location: login-guest.php'); 
} 
else { 
    header('Location: login.php'); 
} 

當然還有更好的解決方案,並你應該總是過濾輸入等,但爲簡單起見,你去。

相關問題