我有一些php脚本,必须查找txt文件中是否存在用户的IP地址,如果不存在则打印一些文本,什么都不做。
所以我确实喜欢这样,但是出了点问题,我也不知道。请帮忙。谢谢您的帮助。
<?php
if (!empty($_SERVER["HTTP_CLIENT_IP"])) {$ip = $_SERVER["HTTP_CLIENT_IP"];}
elseif (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];}
else {$ip = $_SERVER["REMOTE_ADDR"];}
$lines = file('http://example.com/ip.txt');
foreach ($lines as $line_num => $line) {
$search_array = array($ip);
if (array_key_exists($ip,$search_array)){ echo "Hello"; }
/*else{ echo "not hello";}*/
}
?>
ip.txt包含以下行:
178.211.105.33
278.211.115.56
378.451.105.21
271.511.305.01
答案 0 :(得分:1)
这已经为您提供了一个数组:
$lines = file('http://example.com/ip.txt', FILE_IGNORE_NEW_LINES);
没有必要遍历它。
您可以立即使用in_array
:
$found = in_array($ip, $lines);
但是,如果文件中存在格式或换行符差异,则可能要使用preg_grep()
。
答案 1 :(得分:0)
我找到并纠正了我的错误。
在线
$search_array = array($ip); //-- that was error - $ip
if (array_key_exists($ip, $search_array)){ echo "Hello"; }
//-- that was error - "array_key_exists"
$search_array = array($line); //-- error fixed by this
if (in_array($ip, $search_array)){ echo "Hello"; }
//-- thanx to @mario for using "in_array" against "array_key_exists"