PDA

Просмотр полной версии : ip


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

.

Вот.

Tema05
26.08.2020, 01:39
Нет, я уже лично объяснял все это автору вопроса раз 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
26.08.2020, 10:21
Больше, чем уверен -- ты бы еще раз задал такой же вопрос. Надеюсь, все доходчиво объяснил.


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

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

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