Итак, есть класс UserOperator, который в числе прочего отвечает за выполнение юзером входа. В нём есть такие методы:
1) getUser() - получение юзера из БД по логину/паролю. Если логин/пароль по данным БД не совпали, этот метод дергает другой метод:
2) writeFailedAttempt() - метод записи неудачной попытки входа (в БД конечно же), который должен записать введенный логин, юзерагент и IP.
Также имеются:
3) метод getRealIP возвращает IP посетителя.
4) метод getUserAgent возвращает юзерагент посетителя.
Что меня озадачило: есть несколько вариантов:
1. Определять ip и useragent в методе getUser(), то есть дергать сразу writeFailedAttempt($login, $this->getRealiP(), $this->getUserAgent()) .
2. Определять ip и юзерагент уже внутри метода writeFailedAttempt().
3. Определять всё это еще в конструкторе класса, перенеся туда тела методов getUserAgent() и getRealIp() и записывая значения в соответствующие свойства объекта.
4. Присваивать значения свойствам также в конструкторе, но делать это с помощью соответствующих методов (не переносить тела методов в конструктор).
Просто не знаю, какому принципу здесь надо следовать, и потому не могу определить, какой вариант самый правильный.
Во-первых, тебе не нужно определять юзерагент - он никаким боком не нужен для writeFailedAttempt.
Тебе не нужен никакой "RealIp". Если ты хочешь записать IP адрес клиента, то ты должен писать в обязательном порядке только $_SERVER['REMOTE_ADDR'] и ничего больше.
А чтобы обратиться к глобальной переменной никакая функция не нужна.
ну, конкретно для этих двух значений много действий выполнять нельзя. А для других надо смотреть на их природу. Если это совсем посторонняя для юзера сущность, то она и не должна прениалежать классу User вообще
Дмитрий: во-первых, "ключ другой" только у криворуких админов. Ты же ведь сам не сталкивался а только слышал как пацаны базарили? В-вторых, если все-таки другой, то система должна СРАЗУ на входе аккуратно переписывать REMOTE_ADDR, беря значение из строго оговоренного места и только на строго оговоренном хосте. СИСТЕМА, НА ВХОДЕ, и на конкретном СЕРВЕРЕ, про который ТОЧНО известно, что он переписывает и куда. А не туева хуча методов приложения, в которых говнокодеры вразнобой раз и навсегда прописывают код, в котором наугад выбрают НТТР заголовок, из которого брать адрес. Если так делать, то лучше в защите от подбора вообще IP не использовать, поскольку подделывать его будет вообще нечиг делать