使用操作进行PHP错误验证

时间:2013-08-11 01:25:17

标签: php forms validation

我正在尝试创建一个简单的表单,如果用户没有输入邮政编码,则会在同一页面上给用户一个错误。如果他们输入他们的邮政编码,我希望表格转到另一页。有人可以让我知道我做错了吗?

<?php 

$errors = "";

if(isset($_GET['submit'])){

if(0 === preg_match("/\S+/", $_GET['zip']))   
   $errors['zip'] = '<li type="square" >To proceed please enter a valid ZIP Code.</li>'; 
} else {
    die(header("Location: success.php"));
}   

?>

<?php

if ($errors != "") {   
    echo $errors['zip']; 
} 

?>    




<form name="zipcodeform" id="zipcodeform" action="" method="GET">
    <br />
    <h3>Try your self :</h3><br />

    <table border="0" cellpadding="2" cellspacing="2">
        <tr>
            <td align="left" valign="top">Zip Code : </td>
            <td align="left" valign="top"><input type="text" name="zip" id="zip" value="<?php echo $_GET['zip']; ?>"  /></td>
        </tr>

        <tr>
            <td>&nbsp;</td>
            <td align="left" valign="top"><input type="submit" name="submit"   id="submit"      value="Get Quotes >> " /></td>
        </tr>


</form>

3 个答案:

答案 0 :(得分:0)

你应该寻找一些东西:

  1. $errors是字符串还是数组?如果是数组,则应正确初始化。
  2. 使用更严格的error_reporting(E_ALL)。当您打开页面时,如果没有提交表单,您将收到$_GET['plz']未设置的通知。
  3. 始终使用{}。这是很好的编码风格。
  4. 如果你考虑到所有这些,脚本应该运行正常,或者至少你应该看到你的错误。它在我的地方运行良好。

答案 1 :(得分:0)

试试这个,

说你的第一个(form.html)页面是这个

<html>
<head> ... </head>
<body>
 <form method='get' action='proceed.php'>
   Pin code : <input type='text' name='pincode'>
 <input type='Submit'>
</form>
</body>
</html>

然后你的PHP页面处理表单(proceed.php);

<html>
<head> ... </head>
<body>
<?PHP
  if($_GET['pincode']==''){
//Copy and paste the contents of body of 'form.html' with errors displayed!
   echo'<form method="get" action="proceed.php">
   Pin code : <input style="background:#FAA;" type="text" name="pincode">
   <li type="square" ><font color="red">To proceed please enter a valid ZIP Code.</font></li>
   <input type="Submit">';
  }
</form>
</body>
</html>

答案 2 :(得分:0)

您的脚本中有多个错误。尝试

<?php 

$errors = array();

if(isset($_GET['submit'])){
  if( !preg_match("/\S+/", $_GET['zip']) ){
        $errors['zip'] = '<li type="square" >To proceed please enter a valid ZIP Code.</li>';
  } 

  if( !empty($errors) ){
      echo $errors['zip'];
  } else {
      header("Location: success.php");
      exit();
  }

} 

?>

<form name="zipcodeform" id="zipcodeform" action="" method="GET">
<br />
<h3>Try your self :</h3><br />

<table border="0" cellpadding="2" cellspacing="2">
<tr>
<td align="left" valign="top">Zip Code : </td>
<td align="left" valign="top"><input type="text" name="zip" id="zip" value="<?php if(isset($_GET['zip'])) echo $_GET['zip']; ?>"  /></td>
</tr>

<tr>
<td>&nbsp;</td>
<td align="left" valign="top"><input type="submit" name="submit"  id="submit"   value="Get Quotes &gt;&gt;" /></td>
</tr>
</table>

</form>