0

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

<?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>
4

3 回答 3

0

您应该寻找很多东西:

  1. $errors字符串还是数组?如果它是一个数组,你应该正确地初始化它。
  2. 使用更严格的 error_reporting (E_ALL)。您将在打开页面时收到未设置的通知$_GET['plz'],而无需提交表单。
  3. 始终使用{}. 这是很好的编码风格。

如果您考虑到所有这些,脚本应该运行良好,或者至少您应该看到您的错误。它在我的地方运行良好。

于 2013-08-11T01:38:48.297 回答
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>
于 2013-08-11T01:43:00.303 回答
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>
于 2013-08-11T01:44:36.373 回答