PHP警告:file_get_contents(http://ipecho.net/plain):无法打开流:连接超时

时间:2015-03-09 21:05:40

标签: php warnings file-get-contents

我在这里有一个错误,我不知道问题究竟在哪里。 我正在尝试创建一个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

2 个答案:

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