2010-10-02 131 views
0

我打電話使用jQuery與登錄表單。返回到一個表格調用<a href login.php class="signin">Sign in</a>

<div class="session"> 
<?php if($current_user): ?> 
<span>Welcome <?php echo $current_user['first_name']; ?></span> 
<li><a href="logout.php" class="signout">Log Out</a></li> 
<?php else: ?> 
<span>Please Login or Register</span>           
<li><a href="login.php" class="signin">Sign In</a></li> 
<?php endif; ?> 
</div> 

的Javascript

$(".signin").click(function(e) {   
     e.preventDefault(); 
     $("fieldset#signin_menu").toggle(); 
    $(".signin").toggleClass("menu-open"); 
     }); 

    $("fieldset#signin_menu").mouseup(function() { 
     return false 
     }); 
    $(document).mouseup(function(e) { 
     if($(e.target).parent("a.signin").length==0) { 
     $(".signin").removeClass("menu-open"); 
     $("fieldset#signin_menu").hide(); 
      } 
     }); 

該工程確定,但我想返回到窗體如果登錄不驗證。

我的PHP通常會

$user_id = credentials_valid($_POST['username'], $_POST['password']); 
if($user_id){ 
log_in($user_id); 

if($_SESSION['redirect_to']){ 
header("Location: " . $_SESSION['redirect_to']); 
unset($_SESSION['redirect_to']); 

}else{ 
header("Location: index.php"); 
} 
}else{ 
header("Location: login.php?error=1"); 
exit("You are being redirected"); 
} 

我應該使用什麼頭,而不是(「地點:login.php中的錯誤= 1」)

這是剛剛加載一個空白頁,因爲它不使用.signin cLass。

回答

0

你可以追加一個GET變量到用戶重定向到的頁面,然後用jquery檢查文檔加載是否設置了參數,如果是這樣顯示錶單(你已經有了error = 1,所以你可以檢查)。

另外一個更好的(在我看來)的解決方案是使用AJAX。您將使用jQuery的$.ajax()調用提交表單,並檢查AJAX調用返回的響應是success參數。您將創建一個動作,AJAX調用將POST並返回類似於1的成功登錄名,以及0表示失敗的登錄名。

這是否有意義?