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


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



Как узнать настоящий 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-2026, НО "Хендмейд Своими руками!" Правила использования.