我正在尝试为阵列添加IP地址,但我无法正常工作 有人能看出我正在制造什么错误或推荐另一种解决方案吗?
$ipAddress = $_SERVER['REMOTE_ADDR'];
$include = include "ip.txt";
$array = array($include);
if (in_array($ipaddress, $array)){
echo "in array";
}
else {echo "error";}
这是ip.txt文件的样子(文件是“公共”并不重要):
'IP1', 'IP2', 'IP3', 'IP4'
答案 0 :(得分:0)
include
将尝试将该文件作为PHP程序运行。
相反,请使用file_get_contents()
:
$include = file_get_contents('ip.txt');
$array = explode(', ', $include);
if (in_array("'$ipaddress'", $array)){
echo "in array";
}
由于IP地址被'
包围,因此也将其添加到in_array()
中的针部分。
更容易将IP地址分别放在一行上。然后你可以使用file()
返回一个带有文件行的数组。
答案 1 :(得分:0)
你做了一些错事,但这对你有用:
<?php
$ipAddress = $_SERVER['REMOTE_ADDR'];
$include = file_get_contents("ip.txt");
$array = explode(",", str_replace("'", "", $include));
if (in_array($ipAddress, $array)) {
echo "in array";
} else {
echo "error";
}
?>
1。你必须使用file_get_contents()
,因为include首先包含文件,所以这个纯文本在php代码中,其次只返回true
或false
!有关详细信息,请参阅手册:http://php.net/manual/en/function.include.php
从那里引用:
处理返回:include失败时返回FALSE并发出警告。成功包括,除非被包含文件覆盖,否则返回1.
2。你必须从文件中分解字符串并删除单引号以获取数组中的IP
3。 PHP变量区分大小写,因此$ipAddress
和$ipaddress
是两个不同的变量!有关详细信息,请参阅手册:http://php.net/manual/en/language.variables.basics.php
还有一句话:
变量名称区分大小写。