Просмотр поста

.
AlkatraZ
╭∩╮ (`-`) ╭∩╮

Чтоб не морочить голову, вот, лучше ловите class_ipinit от новой версии двига.
Там радикально изменен алгоритм проверки адресов, что за прокси (HTTP_X_FORWARDED_FOR)
Описываю как:
Мы знаем, что зачастую на недорогих хостингах (которых в принципе большинство), для ускорения применяется прокси-сервер ngnix
Чтоб он правильно транслировал внешние адреса, его нужно правильно настроить. Но к сожалению, далеко не все хостинги это делают. И тогда, в глобальной переменной HTTP_X_FORWARDED_FOR вместо IP адреса, оказывается фиг знает что.

Потому, я радикально изменил алгоритм.
1) Проверяется, есть ли переменная HTTP_X_FORWARDED_FOR
2) Если она есть, то проходит полдную валидацию на корректный IP адрес, то есть, должно состоять из 4-х цифр от 0 до 255, разделенными точками.
Если так, то валидация прошла и возвращается IP адрес, если нет, возвращается ошибка (false)
3) Если переменной HTTP_X_FORWARDED_FOR нет, или она не прошла валидацию на корректный IP адрес, то используется надежная переменная REMOTE_ADDR
4) Если уже и REMOTE_ADDR нет, то скрипт убивается с выводом сообщения о неверном IP адресе.

Прикрепленные файлы: