<?php
$check = array ("85.49.","85.62.");
foreach($check as $var) {
if (ereg($var, $_SERVER['REMOTE_ADDR'])) {
$intruder = 0;
}
else {
$intruder = 1;
}
if ($intruder = 0);
echo 'bugger off';
}
else{
echo 'welcome';
}
?>
我的第二个别的怎么办? Dreamweaver红旗标志,我的服务器说错误。如果$ intruder为1或0,我想做的就是让它以某种方式表现。
答案 0 :(得分:4)
if ($intruder = 0);
首先,你有一个额外的分号,所以if
语句的正文是空的。
其次,=
是作业,您需要进行比较:==
。
结构不清楚,但可能下一个问题是你的循环,它将在每次迭代中覆盖$intruder
,所以最后它将包含最后一次比较的结果。
答案 1 :(得分:2)
你问的问题是在这一行:
if ($intruder = 0);
您应该使用==
来比较值,而不是=
来进行分配。然后你应该有一个大括号{
,而不是分号。
此外,所有ereg*
函数都已弃用,不应使用。他们最终将完全从语言中删除。要检查单词是否包含其他单词,只需使用strpos
。
你的逻辑对你所做的事情也是错误的。您不需要在循环的每次迭代中覆盖$intruder
的值。在循环之前将其设置为0,如果循环中匹配则将其设置为1,然后在循环完成后,您将知道在任何比较期间是否存在匹配并且可以打印相应的消息。
$found = 0;
foreach ($check as $var) {
if (strpos($_SERVER['REMOTE_ADDR'], $var) === 0) {
$found= 1;
}
}
if ($found == 1) {
echo "You are in my list.";
} else {
echo "You are not in my list.";
}
?>
答案 2 :(得分:1)
改变这个:
if ($intruder = 0);
对此:
if ($intruder == 0) {
答案 3 :(得分:1)
第一个错误:
if ($intruder = 0);
以这种方式修复它:
if ($intruder == 0)
echo 'bugger off';
else
echo 'welcome';
第二个错误:
不推荐使用ereg。用preg_match()替换它; http://www.php.net/manual/en/function.preg-match.php
答案 4 :(得分:1)
朋友,请不要被冒犯,但我宁愿在这段代码中问“这里有什么正确的”吗?
<?php
$check = array ("85.49.","85.62.");
foreach($check as $var) {
// Here you use the deprecated ereg instead of preg_match or, better, strpos
// However, the regular expressions would be wrong - what if 192.85.49.3 comes by?
if (ereg($var, $_SERVER['REMOTE_ADDR'])) {
$intruder = 0;
}
else {
$intruder = 1;
}
// Here you do not close the foreach, so that the following code gets executed
// repeatedly
// Here you place a ; after the if, so the if body is empty and bugger off gets
// triggered always.
// Which changes little, since $intruder = 0 is an assignment (use == instead)
// (see note)
if ($intruder = 0);
echo 'bugger off';
}
// Anyway, logically "$intruder == 0" means "NOT an intruder", so you are actually
// telling friends to bugger off and welcome intruders :-)
else{
echo 'welcome';
}
?>
注意:这可能是伏都教编程(我在Maguire的'编写固体代码'中找到它),但我认为您可能养成了以另一种方式检查值的习惯:
if(0 == $ intruder)
这样一来,如果再次删除a =,它就不会创建一个你不想要的新语句,但它会成为语法错误,使其自身立即可见。
无论如何,你想要的代码应该是:
<?php
$check = array ("85.49.","85.62.");
$matches = false;
foreach($check as $var)
{
if (0 === strpos($_SERVER['REMOTE_ADDR'], $var))
{
$matches = true;
// There is one match, no sense in checking further
break;
}
}
if ($matches)
{
// He is in our little list - tell him something
print "You match.";
}
?>
答案 5 :(得分:0)
简单的yaar.Just编辑:
if ($intruder == 0);
echo 'bugger off';
}
else{
echo 'welcome';
}