PHP表单变量处理


php form variable processing

我有一个表单,数据提交给PHP进行处理。该表单由2个表单字段组成,它们需要一个数值。字段1是俄亥俄州的员工人数,第二个字段是全国的员工人数。当提交表单并处理数据时,它根据客户的答案为客户确定正确的程序,并将它们发送到包含程序详细信息的页面。

表单数据提交和处理,但我有这些问题。在大多数情况下,第一个表单字段将包含数据,第二个字段将为空,有时反之亦然。如果任何字段为空,或者包含0,则处理,但包含data的字段中的数据将被忽略,并将用户发送到第一个If语句URL。

最后一个elseif语句,无论输入的是什么数字,都由第一个if语句处理。我已经很长时间没有写过一个小的PHP脚本了,我可能错过了一些简单的东西,但我没有看到它。

<?php
$product1 = $_REQUEST['product1'] && $product2 = $_REQUEST['product2'];
if (($product1 <= 50) && ($product2 <= 50))
{echo "<script type='text/javascript'>location.href='http://yahoo.com/'</script>";}
elseif (($product1 >= 51 && $product1 <=100) && ($product2 >= 51 && $product2 <=100))
{echo "<script type='text/javascript'>location.href='http://msn.com/'</script>";}
elseif (($product1 >= 101 && $product1 <= 200) && ($product2 >= 101 && $product2 <= 200))
{echo "<script type='text/javascript'>location.href='http://google.com/'</script>";}
elseif (($product1 >= 201 && $product1 <= 249) && ($product2 >= 201 && $product2 <= 249))
{echo "<script type='text/javascript'>location.href='http://aol.com/'</script>";}
elseif (($product1 > 250) && ($product2 > 250))
{echo "<script type='text/javascript'>location.href='http://tigerdirect.com/'</script>";}
?>

正在提交的表单

<form id="form1" name="form1" method="post" action="http://xxxxttt.com/Untitled-1.php">
  <label>Product 1</label><input type="text" name="product1" id="product1" />
  <label>Product 2</label><input type="text" name="product2" id="product2" />
  <input type="submit" name="submit" id="submit" value="submit" />
</form>

你在这里使用&&运算符是没有意义的——它不会导致你想要的结果;去阅读操作符优先级的手册页,找出原因。

代替

$product1 = $_REQUEST['product1'] && $product2 = $_REQUEST['product2'];

$product1 = $_REQUEST['product1'];
$product2 = $_REQUEST['product2'];

(如果你想做它完全正确,然后你先检查这些值在$_REQUEST是否存在,使用issetempty)

您的$_REQUEST分配行正在执行

$product1 = ($_REQUEST['product1'] && $product2 = $_REQUEST['product2']);

注意()定位。换句话说,$product1成为布尔值&&操作的结果。如果$_REQUEST参数都是非假值,则$product1变为布尔值为真。

php > $x = 'a';
php > $y = 'b';
php > $p = $x && $q = $y;
php > var_dump($p);
bool(true)

您应该将它们作为单独的赋值:

$product1 = $_REQUEST['product1'];
$product2 = $_REQUEST['product2'];