Обучение/Помощь новичкам | Определение ip
Тема закрыта by
SNEG
Як альтернатива!
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']))
Зачем две проверки одинаковые?
________
посл. ред. 24.07.2023 в 17:28; всего 1 раз(а); by Something
HTTP_* заголовки можно подменить, поэтому я бы на них не рассчитывал
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
HTTP_* заголовки можно подменить, поэтому я бы на них не рассчитывал
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
________
посл. ред. 24.07.2023 в 18:07; всего 1 раз(а); by SNEG
HTTP_* заголовки можно подменить, поэтому я бы на них не рассчитывал
REMOTE_ADDR единственный нормальный вариант, да, он покажет IP прокси, в случае использования, но и прокси в заголовках HTTP_ может передать потдельный ip
{
$ip = '';
if(isset($_SERVER['REMOTE_ADDR']))
$ip .= $_SERVER['REMOTE_ADDR'];
else
$ip .= 'n/a';
return $ip;
}
Ок я получил адрес, никакие экранирование не нужно применять строки ?
При запросе к сайту выполняется TCP запрос, после прохождения всех проверок (SYN/ACK) IP адрес известен и он помещается в struct ipaddr, откуда потом уже извлекает данные веб сервер
Поэтому он технически не может быть пустым
Для определения IP-адреса в PHP можно использовать функцию `gethostbyname()`. Она принимает имя хоста и возвращает его IP-адрес в формате IPv4 или IPv6.
Пример использования:
```
$ip = gethostbyname('example.com');
echo $ip; // выводит IP-адрес 'example.com'
Пример использования:
```
$ip = gethostbyname('example.com');
echo $ip; // выводит IP-адрес 'example.com'
При запросе к сайту выполняется TCP запрос, после прохождения всех проверок (SYN/ACK) IP адрес известен и он помещается в struct ipaddr, откуда потом уже извлекает данные веб сервер
Поэтому он технически не может быть пустым
$_SERVER['REMOTE_ADDR'] какую длину указывать для колонки в бд ? varchar(15)?