使用php验证html表单

时间:2014-02-07 20:57:39

标签: javascript php jquery html forms

我正在尝试使用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 ...提前致谢

4 个答案:

答案 0 :(得分: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只有在表单提交后才会运行,并且错误将出现在同一页面上。

答案 1 :(得分: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>

答案 2 :(得分:0)

如果您想使用重定向在页面上显示错误消息,您可以执行与此类似的操作:

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

您可以将其重定向到新的错误页面,或者可能在链接的末尾包含查询字符串,例如?error=true。然后,检查该查询字符串的页面,如果存在,则显示错误消息。

答案 3 :(得分: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文件。如果不是,只需更改扩展名。