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


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



Как узнать настоящий 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 своими руками


 




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

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


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