Forum Webscript.Ru

Программирование => PHP => Тема начата: ramazian от 15 Января 2003, 18:35:15

Название: пролема с IP
Отправлено: ramazian от 15 Января 2003, 18:35:15
Как настроить этот PHP TAG, что бы он определял IP ADDRESS?
Что означает: HTTP_X_FORWARDED_FOR и REMOTE_ADDR
Спосибо.

########################################################
if (getenv(\'HTTP_X_FORWARDED_FOR\'))
{
$ip=getenv(\'HTTP_X_FORWARDED_FOR\');
}
{
$ip=getenv(\'REMOTE_ADDR\');
}
?>
########################################################
Название: пролема с IP
Отправлено: Maniac от 15 Января 2003, 19:17:10
if (isset($HTTP_X_FORWARDED_FOR)) $ip=$HTTP_X_FORWARDED_FOR;
else $ip=$REMOTE_ADDR;

это если register_globals=on
Название: пролема с IP
Отправлено: Макс от 15 Января 2003, 20:12:31
$HTTP_X_FORWARDED_FOR - иногда имеет значение  undefined.
поэтому его еще нужно проверят на правильный формат, типа

if (isset($HTTP_X_FORWARDED_FOR) &&
preg_match("#^\\\\d{1,3}\\\\.\\\\d{1.3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}$#", $HTTP_X_FORWARDED_FOR)) $ip = $HTTP_X_FORWARDED_FOR;

код не проверял, идея думаю ясна
Название: пролема с IP
Отправлено: Tronyx от 15 Января 2003, 22:08:19
Ещё плюс ко всему в $HTTP_X_FORWARDER_FOR может быть не один ip адрес, а несколько, зависит от того сколько проксей было пройдено.
Вобщем вот моя функция, пользуйтесь на здоровье:
function get_ips() {
    $result[\'IP\']=GetEnv(\'HTTP_CLIENT_IP\');
    $result[\'PROXY\']=GetEnv(\'HTTP_X_FORWARDED_FOR\');

    if ($result[\'PROXY\']) {
        $tmp=explode(",", str_replace(" ", "", $result[\'PROXY\']));
        $result[\'IP\']=$tmp[sizeof($tmp)-1];
        if(!preg_match("/^[\\d]{1,3}\\.[\\d]{1,3}\\.[\\d]{1,3}\\.[\\d]{1,3}$/", $result[\'IP\']))
            $result[\'IP\']="";
        $result[\'PROXY\']=$_SERVER[\'REMOTE_ADDR\'];
    }
    elseif (!$result[\'IP\'])
        $result[\'IP\']=$_SERVER[\'REMOTE_ADDR\'];

    return $result;
}
Функция возвращает массив, состоящий из двух элементов:
IP - ip адрес пользователя, если пусто значит было unknown.
PROXY - адрес последнего пройденого прокси сервера.
Название: пролема с IP
Отправлено: nagash от 15 Января 2003, 23:00:38
а можно чтобы выводились все пройденые прокси?
Название: пролема с IP
Отправлено: nagash от 15 Января 2003, 23:01:13
ну я имею ввиду
result[proxy][0]...[10]
Название: пролема с IP
Отправлено: Tronyx от 16 Января 2003, 16:32:33
Цитировать
а можно чтобы выводились все пройденые прокси?

Можно, они хранятся в $HTTP_X_FORWARDED_FOR, думаю распарсить сам сможешь.
Название: пролема с IP
Отправлено: nagash от 16 Января 2003, 20:30:52
ааааааа крута...
пасиба!