Замечания:
1. HTTPS должен быть обязателен для всех по умолчанию. Закройте HTTP.
2. Восстановление пароля. Введенный email не экраннируется и возвращается пользователю в страницу обратно. Размер на ввод email не ограничен, вставлял ~15 000 символов. Подтверждения на восстановление пароля нет, пароль скидывается сразу и высылается новый, на почту падает:
Password recovery|
На Вашу почту было запрошено восстановление пароля
Ваш новый пароль: m31FVYgli4
Если Вы не запрашивали новый пароль, то просто игнорируйте это письмо
Если я не запрашивал, то просто игнорирую это письмо и не могу зайти, ибо пароль уже изменили. Подтверждение на восстановление пароля должно происходить по ссылке высланной на этот email и только потом отправка нового пароля, иначе кому-то достаточно знать мой пароль, чтобы замучать меня со сменой на вашей бирже. Восстановление пароля не должно сообщать "email не найден" и "email найден", иначе это делает возможным перебор и тогда как минимум требуется капча. А лучше на любой email всегда писать "Письмо отправленно", пассивная защита это хорошо.
3. Вход по username, а не по почте. Во-первых, username светится в чате и использовать его для авторизации уже не трушно. Во-вторых восстановление username вместе с password не происходит. Таким образом, через год отсутствия на вашей бирже, я вероятнее всего забуду введённый username и не смогу его восстановить.
4. Смена пароля без ввода старого пароля и без подтверждения с почты.