2011-04-14 97 views
0

我有一个字段(用于邮政编码),如果用户输入的邮政编码与我的数组中的一个匹配,然后单击“go” - 如果不是,则重定向到下一步 - 显示“离开我们的服务区”消息。表单和php脚本在同一页上。我如何做内部重定向这就是我迄今为止。检查用户输入是否与值数组匹配。 PHP

 <form> 
<input type="text" id="zipcode" name="zipcode" /> 
<input type="submit" id="submit" value="GO" /> 
</form> 
<?php 
$allowedzips = array("10051", "10061", "10071", "10081"); 
$input = echo $_POST["zipcode"]; 
$input = str_split($input); 
$message = "Out of our service area"; 
foreach($input as $zip) { 
    if (in_array($zip, $allowedzips)) { 
     $message //redirect goes here 
     break; 
    } 
} 
echo $message; 

?> 
+0

这是什么行:'$ input = echo $ _POST [“zipcode”];'这是**不**有效php – Neal 2011-04-14 19:46:27

+0

试图获得邮政编码输入值。 http://www.w3schools.com/php/php_post.asp – alexndm 2011-04-14 22:55:20

回答

1

一个PHP重定向是很容易做到:

header('Location: www.example.com'); 
exit; 

确保exit;,因为这将进一步执行任何停止脚本。

+0

有关使用标题的快速注释。它必须高于任何可以在页面上显示内容的东西,否则它将无法工作。因此,您可能需要将您的PHP代码放在提交时调用的不同文件中,以便在显示内容之前放置标题('Location:www ...... com')。 – bmbaeb 2011-04-14 19:41:03

+0

我不这么认为。只要脚本执行,页面就会一直“加载”,并且由于“header()”是执行过程的一部分,它将执行。在带有PHP的服务器上试用它。 – Blender 2011-04-14 19:42:44

+0

@bmbaeb是正确的,如果你在header()函数调用之前回显任何html,它会导致头部失败 – bumperbox 2011-04-14 20:13:41

0

我认为这会更好地使用JavaScript而不是PHP来处理你的操作。

我会做的是添加此到您的HTML

<script type="test/javascript"> 

    function checkZipCode(zip) { 
     var myZipCodes=new Array("10051", "10061", "10071", "10081"); 
     for(i=0;i<myZipCodes.length;i++) { 
      if (zip = myZipCodes[i]) { 
       form.submit; 
      } 
      else 
       window.location = "redirectpage"; 
     } 
    } 

</script> 

的头,然后提交的呼叫和邮政编码传递给checkZipCode。

+0

这看起来更好!如何将zipcode字段值传递给此脚本? – alexndm 2011-04-14 20:16:29

+0

zip = form [0] .elements [“zipcode”] .value; – bmbaeb 2011-04-14 20:34:25

+0

不要忘记在表单提交后重新验证服务器端的压缩文件。我可以在我的客户端上轻松修改您的JavaScript以允许我发送任何zip文件。 – horatio 2011-04-14 20:45:40

0

我会做到这一点在PHP中,以确保你不欺骗客户端上的

使用in_array()函数来确定,如果你正在寻找的元素是在你的有效的邮政编码列表,相应地重定向。