Просмотр полной версии : ip
Есть 3 значения с ip: $_SERVER['HTTP_CLIENT_IP'], $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['REMOTE_ADDR'].
Хотел бы узнать что лучше использовать для идентификации пользователя?
Правильность получение ip мне не важна, главное чтобы он у всех был разный и не менялся со временем.
Также есть ли смысл юзать такой код?
PHP:
Royan_Millans
03.08.2020, 17:13
Правильным решением будет $_SERVER['REMOTE_ADDR'] (потому что остальные заголовки можно подменить вручную), а меняться он так и так может, если у человека динамический ip.
Есть 3 значения с ip: $_SERVER['HTTP_CLIENT_IP'], $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['REMOTE_ADDR'].
Хотел бы узнать что лучше использовать для идентификации пользователя?
Правильность получение ip мне не важна, главное чтобы он у всех был разный и не менялся со временем.
Также есть ли смысл юзать такой код?
PHP:
Есть, это более точный показ IP
SCHWEITZER
25.08.2020, 21:59
Есть, это более точный показ IP
Нет, я уже лично объяснял все это автору вопроса раз 100, не меньше.
Человек выше абсолютно прав -- все остальные заголовки, кроме REMOTE_ADDR можно спокойно подменить. Код, который выложил автор - пабликовый, им пользуются миллионы новичков, но так и не понимают, что это бесполезно. Более того, в PHP категорически нельзя юзать игнорирование ошибок (
@
) - это может привести к катастрофическому фризу.
Чтобы увидеть пруфы слов выше, достаточно перейти в
/etc/nginx/fastcgi.conf
(если Вы не ньюфаг и у Вас стоит NGINX).
Там будет такая строка:
NGINX:
fastcgi_param
REMOTE_ADDR
$remote_addr
;
fastcgi_param
- думаю, понятно, что это параметры для работы FCGI и PHP.
REMOTE_ADDR
- название переменной.
$remote_addr
- значение переменной.
$remote_addr
- это внутренняя-дефолтная переменная NGINX, как раз в ней хранится IP-адрес клиента. Соответственно, если запрос поступает на *file*.php, NGINX запустит PHP-процесс через FCGI с параметрами из
fastcgi.conf
, но в этом конфиге имеется только ОДНА ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ IP-АДРЕСА И ЕЕ НЕВОЗМОЖНО ПОДДЕЛАТЬ.
Вот. На счет апача - не думаю, что его кто-то юзает. Если хостинг - вся та же самая картина, хостинг не будет менять дефолтный
REMOTE_ADDR
на какой нибудь
X_REAL_REALNO_REALNIY_IP_CLIENTA_TRUE_PRAVDA
.
Вот.
Нет, я уже лично объяснял все это автору вопроса раз 100, не меньше.
Человек выше абсолютно прав -- все остальные заголовки, кроме REMOTE_ADDR можно спокойно подменить. Код, который выложил автор - пабликовый, им пользуются миллионы новичков, но так и не понимают, что это бесполезно. Более того, в PHP категорически нельзя юзать игнорирование ошибок (
@
) - это может привести к катастрофическому фризу.
Чтобы увидеть пруфы слов выше, достаточно перейти в
/etc/nginx/fastcgi.conf
(если Вы не ньюфаг и у Вас стоит NGINX).
Там будет такая строка:
NGINX:
fastcgi_param
REMOTE_ADDR
$remote_addr
;
fastcgi_param
- думаю, понятно, что это параметры для работы FCGI и PHP.
REMOTE_ADDR
- название переменной.
$remote_addr
- значение переменной.
$remote_addr
- это внутренняя-дефолтная переменная NGINX, как раз в ней хранится IP-адрес клиента. Соответственно, если запрос поступает на *file*.php, NGINX запустит PHP-процесс через FCGI с параметрами из
fastcgi.conf
, но в этом конфиге имеется только ОДНА ПЕРЕМЕННАЯ ДЛЯ ОПРЕДЕЛЕНИЯ IP-АДРЕСА И ЕЕ НЕВОЗМОЖНО ПОДДЕЛАТЬ.
Вот. На счет апача - не думаю, что его кто-то юзает. Если хостинг - вся та же самая картина, хостинг не будет менять дефолтный
REMOTE_ADDR
на какой нибудь
X_REAL_REALNO_REALNIY_IP_CLIENTA_TRUE_PRAVDA
.
Вот.
Канешно спасибо за объяснение, но тема уже давно не актуальна. Я и забыл о ней.
SCHWEITZER
26.08.2020, 02:39
Канешно спасибо за объяснение, но тема уже давно не актуальна. Я и забыл о ней.
Больше, чем уверен -- ты бы еще раз задал такой же вопрос. Надеюсь, все доходчиво объяснил.
Больше, чем уверен -- ты бы еще раз задал такой же вопрос. Надеюсь, все доходчиво объяснил.
В этот раз он остался в истории, так что я могу ещё раз это прочитать.
Добавлю к текущим ответам. Сам для получения IP адреса пользователя использую - $_SERVER['REMOTE_ADDR'] .
Однако, возможно ты столкнешься с работой с Cloudflare, на этот случай используй - $_SERVER["HTTP_CF_CONNECTING_IP"] .
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot