以下脚本代码似乎不起作用,我不知道原因:
// 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。
答案 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"]
未设置。
按如下方式调试脚本:
<form>
是否包含name="phone"
<input type="text" name="phone">
检查表单操作和方法,它应该指向放置代码的文件以检查长度。表单方法应为post
。
检查$_POST['phone']
是否由var_dump($_POST)
设置
完成上述调试步骤后,您将了解问题所在。
你的If条件是okeay并且没有任何问题。
由于
答案 4 :(得分:-1)
也许你应该尝试使用“&amp;&amp;”而不是“和”。
答案 5 :(得分:-2)
试试?:
if( ( $get_length >= 8 ) && ( $get_length <= 11 ) ) {