У меня здесь ошибка, и я не знаю, где именно проблема. Я пытаюсь сделать файл 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
почему вы используете этот сайт для получения клиентского 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 ) {
if (file_get_contents('http://ipecho.net/plain') !== $pass)
Обратите внимание, что, используя этот код, вы сравниваете ip своего СЕРВЕР с пропуском, а не своим КЛИЕНТОМ!
поэтому ваш код неправильный. Другая проблема заключается в использовании '! ==', это то, что вы должны использовать только для булевых типов, а не для строк, поэтому быстрое исправление:
if ($_SERVER['REMOTE_ADDR'] != $pass)
allow_url_fopen
лиallow_url_fopen
?