所以我有一個簡單的登錄頁面是這樣的:爲什麼表單提交按鈕僅在雙擊時才作出反應?
<fieldset>
<legend>Verification</legend>
<form method="post" action="authentication.php">
<?php if($_GET['error']==1){
echo "<p style=\"float: left; \" class=\"criticMsg\">Username or password are wrong</p>";
}
?>
<br /><br /> <br /><br />
<label style="float: left; margin-top: 15px;" for="username">User</label><input type="text" name="username"></input><br />
<label for="password">Password</label><input type="password" name="password"></input> <br />
<input type="submit" class="globalBtn" value="Enter"></input>
</form>
</fieldset>
那麼authenticate.php文件是這樣的:
include ('functions.php');
if(valid_details($_POST['username'], $_POST['password'])){
header("Location: ../../storage_update.php?message=1");
}else{
header("Location: login.php?error=1");
}
最後的functions.php看起來像這樣
include("../connection.php");
$sql = "SELECT user, pass FROM users";
$back = "There is an error. <a href=\"login.php\">Back</a>";
$result = $conn->query($sql) or die($back);
while($row = $result->fetch_object()){
//validates user input
function valid_details($username, $password){
if(isset($username) && $username == $row->user){
if(isset($password) && $password == $row->pass){
return true;}
}
};
}
當我輸入數據庫中提供的正確用戶名和密碼時,我得到了url中的error = 1變量,這不是我期望的正確憑據。但是,如果我快速地雙擊提交按鈕,它會讓我在期望的頁面上返回message = 1,這意味着valid_credentials函數可以正常工作,但爲什麼按鈕會反應? 編輯在頁面storage_update.php(着陸頁)我已經實現了fancybox jquery插件。
他聽起來像一個客戶端錯誤,其中第一次點擊沒有正確發送信息。你可以發佈整個表格嗎?表單標籤丟失。如果你有JavaScript代碼,它可能是這個問題。發佈這也是如果有任何 – Yamiko
只需添加刪減的一段代碼。是的,我使用js,jquery是精確的,但只有在最後一個登錄頁面時,表單纔會將輸入發送到另一個頁面,該頁面通過函數validate_details()在輸入驗證後將用戶重定向到最終頁面。 – menislici
您可以通過在位置標題中使用../來獲得古怪。正確的位置標題應該是完全限定的URL(包括http和主機名)。我不知道這是什麼原因導致的問題,但它可能是,它不會因爲修復而受傷。 – Cfreak