我在这里有一个错误,我不知道问题究竟在哪里。 我正在尝试创建一个PHP文件并拒绝任何人使用该脚本,除了我在代码中输入的IP:
$pass = '192.168.x.x'; //here is the ip of the client
if (file_get_contents('http://ipecho.net/plain') !== $pass) {
当我使用代码时我有问题
PHP Warning: file_get_contents(http://ipecho.net/plain): failed to open stream: Connection timed out
答案 0 :(得分:2)
为什么你使用该网站获取客户端的IP?
您可以使用此php函数获取客户端IP地址
function get_client_ip() {
$ipaddress = '';
if ($_SERVER['HTTP_CLIENT_IP'])
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
else if($_SERVER['HTTP_X_FORWARDED'])
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
else if($_SERVER['HTTP_FORWARDED_FOR'])
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
else if($_SERVER['HTTP_FORWARDED'])
$ipaddress = $_SERVER['HTTP_FORWARDED'];
else if($_SERVER['REMOTE_ADDR'])
$ipaddress = $_SERVER['REMOTE_ADDR'];
else
$ipaddress = 'UNKNOWN';
return $ipaddress;
}
你的代码应该是这样的:
$pass = '192.168.x.x'; //here is the ip of the client
if (strcmp(get_client_ip(),$pass) == 0 ) {
答案 1 :(得分:1)
if (file_get_contents('http://ipecho.net/plain') !== $pass)
请注意,使用此代码,您将比较服务器的IP与通行证而不是您的客户端!
所以你的代码错了。另一个问题是使用'!==',它应该只用于布尔类型而不是字符串 所以快速解决方法是:
if ($_SERVER['REMOTE_ADDR'] != $pass)