2014-02-07 53 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文件。如果不是,只需更改扩展名。