如果文件[php]中存在IP地址,请打印一些内容

时间:2018-09-29 18:17:29

标签: php

我有一些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

2 个答案:

答案 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"