Загружается ...


Поиск по сайту



Как узнать настоящий REMOTE_ADDR

Автор: Grant Burton
Разделы: интернет
Добавлено: 2008-12-21

REMOTE_ADDR и X_FORWARDED_FOR  Проблема определения реального ip-адреса пользователя достаточно распространена и многие популярные движки (например, Wordpress) некорректно определяют удалённый ip-адрес по умолчанию.

 Две простых функции помогут вам разобраться с какого адреса действительно пришел к вам пользователь. Решение этой проблемы заключается в подстановке корректного адреса в переменную $_SERVER["REMOTE_ADDR"] (в понятиях PHP, на котором написан WordPress). Корректный адрес может быть в таких серверных переменных:

  • REMOTE_ADDR
  • HTTP_X_FORWARDED_FOR
  • X_REAL_IP
  • HTTP_FORWARDED

и некоторых других.

Для определения удаленного адреса мы воспользуемся autoprepepend-скриптом, т.е -файлом, который добавляется и исполняется перед каждым вашим php-скриптом. Скрипт (автор Grant Burton), кладем в любое место сайта.

autoprepend.inc.php:

/* By Grant Burton @ BURTONTECH.COM (11-30-2008): IP-Proxy-Cluster Fix */
function checkIP($ip) {
if (!empty($ip) && ip2long($ip)!=-1 && ip2long($ip)!=false) {
$private_ips = array (
array('0.0.0.0','2.255.255.255'),
array('10.0.0.0','10.255.255.255'),
array('127.0.0.0','127.255.255.255'),
array('169.254.0.0','169.254.255.255'),
array('172.16.0.0','172.31.255.255'),
array('192.0.2.0','192.0.2.255'),
array('192.168.0.0','192.168.255.255'),
array('255.255.255.0','255.255.255.255')
);
 
foreach ($private_ips as $r) {
$min = ip2long($r[0]);
$max = ip2long($r[1]);
if ((ip2long($ip) >= $min) && (ip2long($ip) <= $max)) return false;
}
return true;
} else {
return false;
}
}
function determineIP() {
if (checkIP($_SERVER["HTTP_CLIENT_IP"])) {
return $_SERVER["HTTP_CLIENT_IP"];
}
foreach (explode(",",$_SERVER["HTTP_X_FORWARDED_FOR"]) as $ip) {
if (checkIP(trim($ip))) {
return $ip;
}
}
if (checkIP($_SERVER["HTTP_X_FORWARDED"])) {
return $_SERVER["HTTP_X_FORWARDED"];
} elseif (checkIP($_SERVER["HTTP_X_CLUSTER_CLIENT_IP"])) {
return $_SERVER["HTTP_X_CLUSTER_CLIENT_IP"];
} elseif (checkIP($_SERVER["HTTP_FORWARDED_FOR"])) {
return $_SERVER["HTTP_FORWARDED_FOR"];
} elseif (checkIP($_SERVER["HTTP_FORWARDED"])) {
return $_SERVER["HTTP_FORWARDED"];
} else {
return $_SERVER["REMOTE_ADDR"];
}
}
//Override server variable for Wordpress comments
$_SERVER["REMOTE_ADDR"] = determineIP();

 

 Теперь вы можете инклудить полученный файл из ваших скриптов, а можете отредактировать .htaccess в корне вашего сайта, добавив в него ссылку на этот скрипт c помощью такой команды (не забыв скорректировать пути):

php_value auto_prepend_file /home/username/htdocs/autoprepend.inc.php


Как узнать настоящий REMOTE_ADDR своими руками


 




Новые комментарии:
 

Известно ли вам ?
Вопросы хендмейд своими руками
 
Написать нам письмо!


 
Вязаные косынки: ажурные и плотные
Лыжная шапочка-наушники, вязаная спицами
Вязание на спицах
Гурвинек вязаная кукла
Интернет-магазин товаров для рукоделия
Вязаная крючком детская шапочка
Вязаные носки - гольфы
Вяжем овцу - символ 2015 года - сувенир вязаная овечка
Комнатные тапочки, вязаные крючком
Вязанные варежки
Вязание юбки плиссе
Мурзилка вязаная мягкая игрушка
Валентинки
Вязание спицами
Вязаная ёлка
Вязаные крючком летние детские сапожки
Детская кофточка, вязанная крючком
Идеи присылайте на idei [u] handworker.ru. Контакт для связи +7 (923) 2Ч5Ч757
© 2007-2023, НО "Хендмейд Своими руками!" Правила использования.