СоХабр закрыт.

С 13.05.2019 изменения постов больше не отслеживаются, и новые посты не сохраняются.

H Получение ip с помощью php в черновиках Из песочницы

В моём случае получение делится на 3 этапа.

1. Получение IP
2. Отправка IP (в моём случае через Telegram)
3. Редирект клиента


1 этап

function get_ip()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

Данная функция возращает IP клиента.

2 этап
Я выбрал отправку через Telegram. Для начала делаем бота здесь это подробно расписано.

$ip = get_ip();
if( $curl = curl_init() ) {
  curl_setopt($curl, CURLOPT_URL, "https://api.telegram.org/bot<ВАШ token>/sendMessage?chat_id=<ВАШ id>&text=$ip");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
  curl_exec($curl);
  curl_close($curl);
}

3 этап
Редирект здесь самое простое.

header("HTTP/1.1 303 See Other");
header("Location: "<Сайт на который происходит redirect>");

Вот что получилось в сумме

<?php
function get_ip()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))
    {
        $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
        $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
        $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}
$ip = get_ip();
if( $curl = curl_init() ) {
  curl_setopt($curl, CURLOPT_URL, "https://api.telegram.org/bot<ВАШ token>/sendMessage?chat_id=<ВАШ id>&text=$ip");
  curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
  curl_close($curl);
}
header("HTTP/1.1 303 See Other");
header("Location: "<Сайт на который происходит redirect>");
?>

Источники:
pechenek.net/php/api-telegram-bot-i-php-otpravka-soobshheniy
www.php.su

комментарии (11)

+1
bvbr ,  
Что это и зачем это?
–4
Qantum666 ,  
Это получение ip адреса человека, а нужен он тебе например для того чтобы задать человека в правоохранительные органы
+2
faoriu ,  

Очень актуально, вы явно в тренде.

+1
ScarletFlash ,  

Зачем вышеуказанным органам ip упомянутого человека?

+1
nochkin ,  
Например, можно пингнуть его, а потом в отчёте написать «мы сделали всё что могли».
+1
Andy_Big ,  
«Я тебя по айпи вычислю!»(С)
Уровень вполне соответствует этому кличу.
+1
CoolWolf ,  
Уберите в черновики, пока не поздно
0
Inlore ,  

"Это что-то на уровне Высоцкого или даже выше" С

0
nochkin ,  
А ведь удобно. Теперь можно в заголовок «HTTP_X_FORWARDED_FOR» вставлять анонимные послания получателю:
curl --header "X-Forwarded-For: Кликни сюда. Бесплатно и без СМС"
0
index0h ,   * (был изменён)

Какая-то ну очень странная поделка. Определить ip по $_SERVER — ну, это в документации есть, самые основы. Отправка в телегу — зачем?


спойлер

image

0
eugene_bx ,  
Самое интересное, если сервер стоит не за reverse proxy и клиент посылает запрос с header CLIENT_IP=256.0.0.1