2011-06-30 203 views
0

比方說,我們有這樣的形式:如何驗證表單並使用PHP顯示錯誤消息?

<form action="submit.php" method="post"> 
Username: <input type="text" name="username" /> 
Password: <input type="password" name="password" /> 
<input type="Submit" value="Login" /> 
</form> 

如何驗證使用submit.php這種形式,以及如何我提出了一個錯誤信息,如果它沒有通過驗證?使用Javascript驗證,我只是將某些元素的innerHTML更改爲錯誤消息,但這對於PHP來說是不可能的。正如你所看到的我是一個新手,所以請幫助我。

回答

0

在醜陋的形式:

<?php 

$errors = array(); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $username = $_POST['username']; 
    $pw = $_POST['password']; 

    if (empty($username)) { 
     $errors[] = "Please enter your username"; 
    } 
    if (empty($pw)) { 
     $errors[] = "Please provide your password"; 
    } 
    if (!canLogin($username, $pw)) { 
     $errors[] = "Invalid login. Try again"; 
    } 

    if (count($errors) == 0) { 
     ... login is ok, go do something else 
    } 
} 

# Display error conditions, if there are any 
if (count($errors) > 0) { 
    echo "<p>The following errors must be corrected:</p><ul><li>"; 
    echo implode("</li><li>", $errors); 
    echo "</ul>"; 
} 

?> 

<form ...> 
<input .... value="<?php echo htmlspecialchars($username) ?>" /> 
<input ...> 
</form> 
+0

如果我使用echo,那麼錯誤信息將顯示在頁面的最後,對吧? !canLogin()是什麼意思?內爆是什麼意思? – LonelyWebCrawler

+0

不,它被回傳到php代碼所在的頁面。在這種情況下,就在表單標籤之前。 –

+0

做什麼!canLogin()和implode()是什麼意思? – LonelyWebCrawler

0

您可以始終將表單的操作提交給自己(相同的PHP腳本)並在那裏執行驗證,並且如果它繼續傳遞給另一個url。然後在你的表單中寫入一些條件來插入一個CSS類來突出顯示錯誤或顯示消息的字段。

+0

如何插入一個CSS類? – LonelyWebCrawler

相關問題