Предупреждение PHP: file_get_contents (http://ipecho.net/plain): не удалось открыть поток: истекло время ожидания соединения

0

У меня здесь ошибка, и я не знаю, где именно проблема. Я пытаюсь сделать файл 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
    allow_url_fopen ли allow_url_fopen ?
  • 0
    да ..............
Показать ещё 2 комментария
Теги:
file-get-contents
warnings

2 ответа

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 ) {
  • 0
    ага удивительно спасибо это работа
1
if (file_get_contents('http://ipecho.net/plain') !== $pass)

Обратите внимание, что, используя этот код, вы сравниваете ip своего СЕРВЕР с пропуском, а не своим КЛИЕНТОМ!

поэтому ваш код неправильный. Другая проблема заключается в использовании '! ==', это то, что вы должны использовать только для булевых типов, а не для строк, поэтому быстрое исправление:

if ($_SERVER['REMOTE_ADDR'] != $pass)
  • 0
    ага попробую это легко и очень быстро спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню