Loading...
mc_smail (24 июля 2023, в 16:06)
Як альтернатива!
php
function get_client_ip() {
$ip = '';

// Спробуємо отримати IP-адресу з заголовку HTTP_X_FORWARDED_FOR
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip .= $_SERVER['HTTP_X_FORWARDED_FOR'];
}
// Якщо заголовок HTTP_X_FORWARDED_FOR порожній або недоступний, отримуємо IP з REMOTE_ADDR
elseif (isset($_SERVER['REMOTE_ADDR']) && !empty($_SERVER['REMOTE_ADDR'])) {
$ip .= $_SERVER['REMOTE_ADDR'];
} else {
$ip .= 'n/a';
}

return $ip;
}
(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']))

Зачем две проверки одинаковые?
SNEG (24 июля 2023, в 17:14)
(isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !empty($_SERVER['HTTP_X_FORWARDED_FOR']))

Зачем две проверки одинаковые?
От плохого знания языка программирования рнр. Одного !empty() вполне достаточно
________
посл. ред. 24.07.2023 в 17:28; всего 1 раз(а); by Something
HTTP_* заголовки можно подменить, поэтому я бы на них не рассчитывал
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
Mobiaaa (24 июля 2023, в 17:30)
HTTP_* заголовки можно подменить, поэтому я бы на них не рассчитывал
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
Тогда только делать в таблице два столбца - для remote и для forward
Something , об этом я и подумал , если я показал два примера идентичны друг другу
________
посл. ред. 24.07.2023 в 18:07; всего 1 раз(а); by SNEG
Mobiaaa (24 июля 2023, в 17:30)
HTTP_* заголовки можно подменить, поэтому я бы на них не рассчитывал
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
function get_client_ip ()
{
$ip = '';
if(isset($_SERVER['REMOTE_ADDR']))
$ip .= $_SERVER['REMOTE_ADDR'];
else
$ip .= 'n/a';
return $ip;
}

Ок я получил адрес, никакие экранирование не нужно применять строки ?
SNEG , В нормальной ситуации (если нет багов в php/apache и т.д.) remote_addr не может быть пустой
При запросе к сайту выполняется TCP запрос, после прохождения всех проверок (SYN/ACK) IP адрес известен и он помещается в struct ipaddr, откуда потом уже извлекает данные веб сервер
Поэтому он технически не может быть пустым
Для определения IP-адреса в PHP можно использовать функцию `gethostbyname()`. Она принимает имя хоста и возвращает его IP-адрес в формате IPv4 или IPv6.
Пример использования:
```
$ip = gethostbyname('example.com');
echo $ip; // выводит IP-адрес 'example.com'
Mobiaaa (24 июля 2023, в 19:50)
SNEG , В нормальной ситуации (если нет багов в php/apache и т.д.) remote_addr не может быть пустой
При запросе к сайту выполняется TCP запрос, после прохождения всех проверок (SYN/ACK) IP адрес известен и он помещается в struct ipaddr, откуда потом уже извлекает данные веб сервер
Поэтому он технически не может быть пустым
Ты меня уже запутал.suicide.
$_SERVER['REMOTE_ADDR'] какую длину указывать для колонки в бд ? varchar(15)?
Онлайн: 2
Время:
Gen. 0.1057
(c) Bym.Guru 2010-2025