【发布时间】:2018-09-05 07:07:48
【问题描述】:
我正在研究一组例程,这些例程将根据已知支持者列表检查访问者的 IP 地址。 IF 语句总是返回失败,即使我将 ip 设置为已知错误的 ip。任何帮助将不胜感激。
$toratora="NO DNSBL";
$filename = 'converted.txt';
$contents = file($filename);
foreach($contents as $line):
$newline = ("$line "); //Add a space after each ip.
//If (int) is in front of $newline & $ip, then always true.
//If (int) is not in front of $newline & $ip, then always false.
if ($line == $ip):
$toratora="YES DNSBL";
endif;
endforeach;
【问题讨论】:
-
查看
$line时$newline的目的是什么?还有什么是$ip(没有这个值就无法回答)另外我讨厌替代语法风格,非{}在代码中,它在HTML中要好得多......但这是一种观点。("$line ")也不需要() -
又名,如果不说谎的话。因此,我没有看到任何语法错误,您的两个值不相等。这就是简单的答案......
-
尝试在
$line和$ip中使用trim()在$line == $ip中作为trim($line) == ($ip),因为其中可能有空格,这就是它返回错误的原因。 -
您需要提供更多信息才能获得有用的信息。尝试调试代码,至少在某些值上使用 var_dump 并检查为什么比较总是返回 false。可能是空格、回车……
-
大家好。谢谢大家的回复。 ip 来自 $_SERVER['REMOTE_ADDR']; ...我得到的 rsync 文件是绑定格式的,所以它都是一条连续的线。这就是我添加 $newline 的原因,所以文件中每个 ip 后面都会有一个空格。对困惑感到抱歉。它应该是 $newline==$ip。
标签: php if-statement foreach