2014-02-07 82 views
1

我想驗證使用PHP的HTML表單。我曾經在一個解決它象下面這樣:使用PHP來驗證HTML表格

我的HTML表單的部分:

<input class="text" type="text" name="fname" id="firstname1" required="required"> 

,並在signup.php

<?php 

    if (!preg_match("/^[a-zA-Z ]*$/",$_POST['fname'])) 
    { 
    echo ('Name should include only characters'); 
    die('</body></html>'); 
    } 
    ?> 

但我的問題是,這種形式的錯誤消息不會顯示在窗體的同一頁面上,而會顯示在另一頁面上。我想讓錯誤消息出現在表單所在的頁面上。

在javascript中我做出這樣說,但我不知道如何在PHP使這個: 我建立一個功能象下面這樣:

function name() { 

    var pass = document.getElementById('firstname1'); 
    var sb = document.getElementById('submit1'); 
    var letters=/^[a-zA-Z]+$/; 
    if (pass.value.match(letters)){ 
    sb.disabled = false; 
    document.getElementById('error-fname1').style.display = 'none'; 
     } 
    else { 
     document.getElementById('error-fname1').style.display = 'block'; 
     sb.disabled = true; } 
      } 

,然後我嘗試它調用這個方法:

<input class="text" type="text" name="fname" id="firstname1" required="required" onchange="name()"> 

<span class="errorformat " id="error-fname1" style="display: none" > 
      Please write only letters 
        </span> 

請幫我...我想學習PHP的...提前

+0

你是否將表單的'action'設置爲另一頁?如果是這樣,你可以用**服務器端** PHP代碼在舊頁面上顯示錯誤消息的唯一方法是重定向回舊頁面。 – Anonymous

+0

是的,當我按下提交按鈕,我去到另一頁說:succesor輸出錯誤信息。這個頁面被稱爲signup.php,並且我還將表單與數據庫連接起來,並在那裏查找錯誤。但是,我如何檢查頁面中的錯誤,我在Signup.html頁面中有這樣的表單? – user3272713

+0

如何重新導向回舊頁面? – user3272713

回答

1

感謝你爲什麼不驗證它在同一頁上。

PHP:

if(isset($_POST['fname'])){ 
    ... (Any checks you want to make) 
} 

HTML:

<form action="" method="post"> 
<input class="text" type="text" name="fname" id="firstname1" required="required"> 
</form> 

這樣一來,只有當表單被提交,並會出現在同一個頁面上的錯誤的PHP運行。

+0

表單打算轉到不同的頁面,但錯誤消息應顯示在舊頁面上。 – Anonymous

+0

只是重定向到下一頁驗證成功 – MamaWalter

+0

是的@Jaxon,我想到的是使它在與窗體相同的頁面...我嘗試構建一個PHP函數,並將它叫onchange ...因爲我希望當我點擊第二個輸入表單並且第一個輸入表單不正確時,顯示錯誤...當我提交時不顯示最終錯誤...但是我怎麼能做到這一點? – user3272713

0

如果你想使用PHP(這是強烈推薦),進行服務器端驗證,那麼你可以通過把一切都在同一個文件...示例文件用下面的辦法form.php的

<?php 

//validate form 

if(!preg_match("/^[a-zA-Z ]*$/",$_POST['fname'])) 
{ 
$problem = true; 
} 
else 
{ 
$formok = true; 

?> 

然後將HTML部分開始,你可以在某些時候把你的錯誤信息:

<?php if($problem) echo "Incorrect Name Format" ?> 

<?php if($formok) echo "Nice job" ?> 

然後形式應該是這樣的:

<form action="form.php"> 
//inputs 
</form> 
0

如果你想使用重定向之前顯示在頁面上的錯誤信息,你可以做一些與此類似:

if (!preg_match("/^[a-zA-Z ]*$/",$_POST['fname'])) { 
    header("Location: http://domain/oldpage.php"); 
    exit(); 
} 

你可以把它重定向到一個新的錯誤頁面,或可能包括一個查詢字符串在鏈接的末尾,如?error=true。然後,檢查該查詢字符串的頁面,如果它在那裏,則顯示錯誤消息。

0

在表單所在的頁面上,添加一個GET var並檢查它是否已設置。喜歡的東西:

if(isset($_GET['error'])) { 
    // Output error message logic here. Don't forget to sanitize the GET var // 
} 

在您的文件,你正在處理的數據,如果您有任何錯誤,用附加的錯誤信息表單頭中的用戶返回到該頁面。

$errormsg = ''; 
if($_POST['fname'] == trim("") || !isset($_POST['fname'])) { 
    $errormsg = 'Please enter your name'; 
    header('location: signup.php?error='.$errormsg); 
} 

這裏假設您的表單是一個PHP文件。如果不是,只需更改擴展名。