Захотелось покодить, и решил пофиксить магаз...
- mysql_* как уже выше заметили использовать сейчас категорически нельзя.
-
- для такого числа ветвлений логичнее использовать case.
-
- функция для генерации ключа конечно хороша, но удалите неоднозначные символы хотя бы - O и 0, I и 1 и т.п. Если предусмотрена возможность передачи ключа кому-то, то за отсутствие похожих символов люди вам потом спасибо скажут.
- Писать в таблицы движка напрямую, тем более в xf_users - дурной тон, у движка есть DataWriter для этого дела, использовать лучше его. Раз вы данные сессии получаете нормально, то можно было бы и писать по человечески.
-
- кодировку для чего принудительно ставите? Так делать не положено вообще, база может быть в отличной от указанной.
-
- не советую использовать ?> для закрытия php-кода, можно не закрывать, интерпретатор разберется. Если в файле нет мешанины как в данном случае, то отказ от него поможет избежать пачки проблем с непечатными символами, BOM и т.п.
-
- вообще файл крайне запутанный, но вот конкретно эти две переменные вы конечно получаете, но фильтровать кто будет? Они там ниже в md5 пакуются и так далее, но особо это ничего не меняет, лучше заранее отфильтровать на опасные символы то, что вы от пользователя получили, потому что потом если логика работы изменится - сразу и не вспомните.
- Все про тот же файл - у вас излишне сложная структура if/else, переделайте хотя бы базовую часть на case, код будет проще значительно восприниматься и получится некоторого дублирования подключения к базе, например, избежать.
-
- мешанина html/php - худшее, что только может быть. Так как вы этот класс по идее вызываете на отдельной странице движка, то перенесите хотя бы CSS в его же шаблоны.
PS. Тут скрытие реферрера бьет ссылки на конкретные строки кода, копируйте ссылки вручную.
Спасибо, что все конкретно расписали, а сейчас по пунктам:
1. Сделал... Сразу хотел исправить, потому, что в логи спамило из-за этого...
2. Поправил... Действительно выглядит более логично...
3. Ключ передается в цифровом виде, так что таких проблем быть не должно, да и ко всему этому, мне, как перфекционисту, сложно так сделать.)))
4. Тот кусок с сессией я использовал именно для частичного использование с ксеней... Подразумевалось, что скрипт может использоваться не только с Xenforo...
5. Вроде были проблемы с русскими именами... Хотя не уверен, закомментировал, но возможности проверить не было...
6. Поправил...
7. Не сильно разбираюсь как обезопасить всевозможные перехваты ключей и тд, и пытался сделать хоть что-то более защищенное со стороны логики, только не знаю как работает часть кода с сессией (которая от xenforo), а точнее, боюсь что можно как-то сессию подставить...
8. --/--
9. Выкладывал файл просто для примера... Самого тошнит от него)))