2014-01-11 43 views
0

我有3個php頁面,分別是index.php,login.php和loginSuccess.php。index.php只包含登錄表單,login.php包含登錄過程的php代碼。如果登錄過程失敗,請保持在同一頁面

<?php 

session_start(); 

include './dbConnection.php'; 

$name = mysql_real_escape_string($_POST['userNameText']); 
$password = mysql_real_escape_string($_POST['passwordText']); 

$userName = stripslashes($name); 
$userPassword = stripslashes($password); 


$loginQuery = "SELECT * FROM users WHERE User_Name ='$userName' AND Password ='$userPassword'"; 
$query = mysql_query($loginQuery); 
$result = mysql_num_rows($query); 

if($result == 1){ 
    $_SESSION['userName'] = $userName; 
    header("Location: loginSuccess.php"); 
}else{ 
    header("Location: index.php"); 
} 

?>

我想要做的是住在同一個錯誤消息,如果用戶鍵入錯誤的登錄信息的index.php文件。我在下面有一個jquery函數,我想在login.php的其他條件中調用它。我該怎麼做?感謝幫助。

$(function(){  
    $('#errorDiv').fadeIn(); 
}); 
+0

如果你不想重新載入頁面,你必須使用的,而不是正常的表單提交AJAX。 – Barmar

+0

@Barmar其實我沒有足夠的AJAX知識來使它工作。 – Tartar

+2

似乎是學習AJAX的一個很好的理由。 – Barmar

回答

3

一個簡單的方法來做到這將是這樣的:

變化

header("Location: index.php"); 

// This is a bit rough, but, I'm guessing you're learning PHP 
// so for now it'd do 
header('Location: index.php?login=false'); 

然後在您的index.php添加類似

if ('false' === $_GET['login']) { 
    echo 'Login failed!'; 
} 

然後你會收到一條美麗的消息,說「登錄失敗!」當...登錄失敗時。

這絕不是「正確」的方式來做到這一點,但它會幫助你學習你需要知道的邏輯,以便像這樣工作。

+0

這是除Ajax之外的唯一方法嗎? – Tartar

+1

這只是將事情從一個頁面發送到另一個頁面的一種方式,它不是唯一的方式,例如,您可以使用會話來存儲登錄是否成功,但我認爲它不需要保留在會議中。如果你使用AJAX來做這件事,你可能會想輸出一個JSON響應,然後用jQuery來選擇它。 – Seer

+0

希望您不再使用此代碼,如果您未登錄,它將無法正常工作。 – Anthosiast

1

這是一個鬆散的例子,但希望你會看到它的邏輯。

你可以有一個登錄表單發佈自己。有點像這樣:

<form method="POST action="?login"> 
    <input type="text" name="username" /> 
    <input type="password" name="password" /> 
</form> 

然後在index.php頁面的最頂端,你可以包括login.php文件。

<?php 
    if(isset($_GET['login']){ 
     include 'login.php'; 
    } 
?> 

對於任何你想要JavaScript去的地方都做同樣的事情。

<?php if(isset($_GET['login']){ ?> 
    <script type="text/javascript> 
     $(function(){  
      $('#errorDiv').fadeIn(); 
     }); 
    </script> 
<?php } ?> 

如果用戶登錄成功,那麼您只是重定向到loginSuccess.php。如果不是所有的東西再次加載

1

您不能將您的jQuery代碼置於login.php的其他條件中,因爲它仍然會執行重定向。我的建議是,您將錯誤消息存儲在會話變量中,然後繼續將重定向回到index.php,您將檢查是否設置了該會話變量。如果是,則可以顯示錯誤消息,然後「取消設置」該會話變量。

的index.php

<?php if (isset($_SESSION['error'])): ?> 
    <p class="error-message"><?php echo $_SESSION['error']; ?></p> 
    <?php unset($_SESSION['error']); ?> 
<?php endif; ?> 
<form>...</form> 

的login.php

... 
else { 
    $_SESSION['error'] = 'the error message'; 
    header('Location: index.php'); 
} 
相關問題