ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Общие вопросы программирования (https://forum.antichat.xyz/forumdisplay.php?f=206)
-   -   ip (https://forum.antichat.xyz/showthread.php?t=1361035)

Tema05 02.08.2020 17:22

Есть 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.

Livarka 07.08.2020 10:30

Цитата:

Сообщение от Tema05

Есть 3 значения с ip: $_SERVER['HTTP_CLIENT_IP'], $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['REMOTE_ADDR'].
Хотел бы узнать что лучше использовать для идентификации пользователя?
Правильность получение ip мне не важна, главное чтобы он у всех был разный и не менялся со временем.

Также есть ли смысл юзать такой код?

PHP:





Код:




Есть, это более точный показ IP

SCHWEITZER 25.08.2020 21:59

Цитата:

Сообщение от butchers

Есть, это более точный показ 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
.

Вот.

Tema05 26.08.2020 01:39

Цитата:

Сообщение от MMXVII

Нет, я уже лично объяснял все это автору вопроса раз 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

Цитата:

Сообщение от Tema05

Канешно спасибо за объяснение, но тема уже давно не актуальна. Я и забыл о ней.

Больше, чем уверен -- ты бы еще раз задал такой же вопрос. Надеюсь, все доходчиво объяснил.

Tema05 26.08.2020 10:21

Цитата:

Сообщение от MMXVII

Больше, чем уверен -- ты бы еще раз задал такой же вопрос. Надеюсь, все доходчиво объяснил.

В этот раз он остался в истории, так что я могу ещё раз это прочитать.

Hatrig 27.08.2020 18:00

Добавлю к текущим ответам. Сам для получения IP адреса пользователя использую - $_SERVER['REMOTE_ADDR'] .

Однако, возможно ты столкнешься с работой с Cloudflare, на этот случай используй - $_SERVER["HTTP_CF_CONNECTING_IP"] .


Время: 06:57