2011-09-06 65 views
0

所以我有一個簡單的登錄頁面是這樣的:爲什麼表單提交按鈕僅在雙擊時才作出反應?

<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插件。

+0

他聽起來像一個客戶端錯誤,其中第一次點擊沒有正確發送信息。你可以發佈整個表格嗎?表單標籤丟失。如果你有JavaScript代碼,它可能是這個問題。發佈這也是如果有任何 – Yamiko

+0

只需添加刪減的一段代碼。是的,我使用js,jquery是精確的,但只有在最後一個登錄頁面時,表單纔會將輸入發送到另一個頁面,該頁面通過函數validate_details()在輸入驗證後將用戶重定向到最終頁面。 – menislici

+0

您可以通過在位置標題中使用../來獲得古怪。正確的位置標題應該是完全限定的URL(包括http和主機名)。我不知道這是什麼原因導致的問題,但它可能是,它不會因爲修復而受傷。 – Cfreak

回答

1

你的代碼的結構很奇怪,如果我有我的方式,我會重寫它的大部分,反正,把它放在一邊。目前你在一個while循環中有你的函數,爲什麼你首先循環是奇怪的,你可以直接檢查你正在尋找的用戶的數據庫。見下文。

include("../connection.php"); 

function valid_details($username, $password){ 
    $sql = "SELECT user, pass FROM users"; 
    $sql .= "WHERE user='".$username."' AND pass='".$password."'"; 
    $back = "There is an error. <a href=\"login.php\">Back</a>"; 
    $result = $conn->query($sql) or die($back); 

    return count($result) > 0    
} 
+0

嗯,我會記住你的編碼方式,因爲我不是一個專業人員,我甚至都沒有爲此去上學。只是搞個愛好。不管怎麼說,還是要謝謝你。我會在稍後嘗試你的答案。 PS是啊我嘗試選擇我正在尋找的用戶,但使用這樣的代碼片段:$ sql =「選擇用戶,傳遞用戶WHERE用戶= $用戶&&傳遞= $傳遞」;我真的很奇怪。 – menislici

相關問題