if(()和())不起作用

时间:2011-02-28 11:11:59

标签: php if-statement

以下脚本代码似乎不起作用,我不知道原因:

// go to correct.php only if length between 8 and 11

$get_length = strlen( $_POST["phone"] );

if( ( $get_length >= 8 ) and ( $get_length <= 11 ) ) {
    header("Location: correct.php");
} else {
    header("Location: incorrect.php");
}

即使长度为6,也会转到correct.php。

6 个答案:

答案 0 :(得分:3)

不,*AND**and**&&*相同*。你必须调试你的变量:

var_dump($get_length);

或者甚至更好:

var_dump($_POST);

* =在这种情况下。查看http://www.php.net/manual/en/language.operators.precedence.php

答案 1 :(得分:3)

这是一个只能由程序员回答的问题 事实上,程序员必须处理的大多数问题都属于这种类型 一种让我们得到答案的技术称为调试
调试的主要目标是获取尽可能多的信息 - 所有可能的错误消息,以及 - 最重要的部分 - 变量的实际值。
通过观察您的代码,您不知道实际值。但是通过运行它并使其成为打印值,您可以看到正在发生的事情并猜测原因或在stackoverflow上提出正确的问题。

以这种方式制作代码并在此处发布结果:

ini_set('display_errors',1);
error_reporting(E_ALL);
echo "<pre>";

$get_length = strlen( $_POST["phone"] );

var_dump( $_POST["phone"],$get_length);

if( ( $get_length >= 8 ) and ( $get_length <= 11 ) ) {
    echo ("Location: correct.php");
} else {
    echo ("Location: incorrect.php");
}
exit;

答案 2 :(得分:1)

您的代码工作正常。

请检查$ _POST中的数据。

和你说的一样吗?

使用echo $ _POST ['phone']检查stirng的实际值并计算长度。

答案 3 :(得分:1)

似乎您的$_POST["phone"]未设置。

按如下方式调试脚本:

  1. 检查<form>是否包含name="phone"
  2. 元素

    <input type="text" name="phone">

    1. 检查表单操作和方法,它应该指向放置代码的文件以检查长度。表单方法应为post

    2. 检查$_POST['phone']是否由var_dump($_POST)设置

    3. 完成上述调试步骤后,您将了解问题所在。

      你的If条件是okeay并且没有任何问题。

      由于

答案 4 :(得分:-1)

也许你应该尝试使用“&amp;&amp;”而不是“和”。

http://www.w3schools.com/PHP/php_operators.asp

答案 5 :(得分:-2)

试试?:

if( ( $get_length >= 8 ) && ( $get_length <= 11 ) ) {