Php 如果用户';的IP地址位于.txt文件中
我尝试了Php 如果用户';的IP地址位于.txt文件中,php,if-statement,Php,If Statement,我尝试了REMOTE\u ADDR,也尝试了HTTP\u X\u FORWARDED\u FOR,但我仍然无法让它正常工作 基本上,如果在文本文件中找到用户IP,我希望将用户重定向到cnn.com,如果没有IP,则重定向到google.com 以下是文件中与我的IP不兼容的代码: <?php $iplist = @file("ip.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $iparray = in_array($_SER
REMOTE\u ADDR
,也尝试了HTTP\u X\u FORWARDED\u FOR
,但我仍然无法让它正常工作
基本上,如果在文本文件中找到用户IP,我希望将用户重定向到cnn.com
,如果没有IP,则重定向到google.com
以下是文件中与我的IP不兼容的代码:
<?php
$iplist = @file("ip.txt", FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$iparray = in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $iplist);
//$iparray = in_array($_SERVER["REMOTE_ADDR"], $iplist);
//###if ?test= is not empty
if (!empty($_GET["test"])){
if($iparray){
header("Location: http://cnn.com");die;
}
}
header("Location: http://google.com");
?>
注意:测试时,我的URL末尾有?test=1
我希望保留这样的格式,即只保留if语句+尽可能停止其余代码的执行,因此
头(“位置:http://google.com");代码>不执行。如果您的ip在文件中且文件路径正确,请尝试以下操作:
if (false !== strpos(file_get_contents($filename), $ip_to_search)){
// ip in the file
}
else {
// otherwise
}
如果您的ip位于文件中且文件路径正确,请尝试以下操作:
if (false !== strpos(file_get_contents($filename), $ip_to_search)){
// ip in the file
}
else {
// otherwise
}
您确定文件中有ip吗?(尝试var_dump($_SERVER['REMOTE_ADDR'],$_SERVER[“HTTP_X_FORWARDED_FOR”],$iplist);
并检查ip是否真的在里面)如果(在数组中($_SERVER['REMOTE_ADDR'],$iplist)){header(“Location:;}否则{header(“Location:);die()}@duanelorti在$_SERVER['REMOTE ADDR']周围加引号)
是完全不必要的。请验证ip.txt
文件是否正在加载。从文件()的开头删除@
错误抑制,然后查看是否出现任何文件警告。为什么不使用数据库?您确定文件中有ip吗?(请尝试var\u dump($\u SERVER['REMOTE\u ADDR'),$\u SERVER[“HTTP\u X\u FORWARDED\u FOR”],$iplist);
并检查ip是否真的在里面)if(在数组($服务器['REMOTE\u ADDR',$iplist]){header(“位置:;}否则{header(“位置:);die()}@DuaneLortie周围的引号$服务器['REMOTE\u ADDR']
是完全不必要的。请验证是否正在加载ip.txt
文件。从文件()的开头删除@
错误抑制,并查看是否出现任何文件警告。为什么不使用数据库?这也将为部分匹配提供true
(如果文件中存在ip101.2.3.101
,则1.2.3.1
将为真)@Aleksey Dubinin既然我需要文本文件,那么使用文本文件的解决方案是什么?@Dekel,是的,我考虑过这些情况。当然,它们不经常出现,但必须引起他们的注意。@Joebby,你也可以使用正则表达式。这还取决于你如何存储IP。还有一件事:你打印了吗e$iplist数组?@AlekseyDubinin文本文件中的唯一内容是每行1个IP,分隔IP的空格,以及以#开头的行来组织IP。如何打印$iplist?这还将为部分匹配提供true
(1.2.3.1
如果文件中存在IP101.2.3.101
则提供true)@Aleksey Dubinin既然我需要文本文件,那么使用文本文件的解决方案是什么?@Dekel,是的,我考虑过这些情况。当然,它们不经常出现,但必须引起他们的注意。@Joebby,你也可以使用正则表达式。这还取决于你如何存储IP。还有一件事:你打印了吗e$iplist数组?@AlekseyDubinin文本文件中的唯一内容是每行1个IP,用空格分隔IP,用以组织IP的行以#开头。如何打印$iplist?