|
|
Модератор форума: LightInDarkness |
Форум Web раздел Сайты / WWW для эмуляторов [Сайт] WeWow CMS 1.0 |
[Сайт] WeWow CMS 1.0 |
Всем привет.Предлагаем вашему вниманию WeWow CMS 1.0!
Дизайн не мой,"движок" написан с нуля. Здесь реализовано: Код 1.Регистрация и авторизация. 2.Мониторинг 1 реалма. 3.И небольшая админка которая позволяет добавлять и удалять новости. 4.Если кого заинтересует этот сайт,буду доделывать. Скрины Скачать |
trevan, продолжай работать над сайтом, но организуй людям отдельный конфиг, что бы они не искали где настраивать параметры для подключения к базе данных =)
Но, ты хотя бы тестируешь то, что пишешь? Для начала, поставь в index.php второй строчкой error_reporting(E_ALL); и почитай как "выражается" php интерпретатор, а затем исправь все предупреждения. Также попробуй организовать более читабельную логику в коде. Например сделай что бы каждый php скрипт занимался чем-то одним (вынеси всё в отдельные модули, классы, распредели по папкам), а не так как SiteDB.class занимается всем и сразу. Так будет и тебе проще разбираться в коде, и другим людям проще понимать о чём ты пишешь. Также посоветовал бы использовать замечательную штуку, которая есть в mysqli - это подготовленные выражения. Это также поможет избежать sql инъекций которые существуют в твоём коде (например при регистрации аккаунта). Также запросы Quote SELECT id, username, sha_pass_hash FROM auth.account WHERE username='$login' AND sha_pass_hash='$pass' Quote SELECT id, gmlevel FROM auth.account_access WHERE id='{$row['0']['id']}' можно упростить до одного: Quote SELECT a.id, username, gmlevel, sha_pass_hash FROM account a LEFT JOIN account_access aa ON a.id = aa.id WHERE username = 'Pradmure' И не стоит использовать запросы вида: Quote SELECT * ... Ещё нужно позаботиться о результате запроса. Чтобы если запрос ничего не вернул, то в коде позаботиться об этом и присвоить нужной переменной, например, нулевое значение (в пример вывод максимального онлайна в твоей статистике. И почему она не считает реальное количество игроков в данный момент, а использует данные которые перезаписываются как минимум раз в 10 минут?). Ну и в конце концов, попробуй отделить html код от php хотя бы каким-нибудь простеньким самописным шаблонизатором. А пока-что я не понимаю большей части логики кода и смысла лишних методов которые даже не используются.
Сообщение # 11 написано 29.10.2012 в 08:28
|
Quote (std_string) Можно просто выбрать количество записей в ней. SELECT COUNT, все дела.. Если нужно проверить существование логина, то ты будешь использовать count? Функции count придётся передать имя колонки (ну или ту же самую звёздочку). И тогда зачем count, если можно только имя колонки?) Вообще мне всё равно. Выбирайте хоть звёздочками. Главное что бы работало и смотрелось понятно и красиво. Просто навязываю своё мнение окружающим =) |
Quote (Прадмур) Если нужно проверить существование логина, то ты будешь использовать count? Я не смотрел кода, также я не понял, количество чего надо проверить. Именно поэтому я констатирую тот факт, что наличие записей в таблицы можно проверить с помощью SELECT COUNT, которая вернет значение, и если оно >0, то в таблице есть записи. Если нужно проверить существование логина, я также не вижу огромной разницы между выбором COUNT и выбором колонки, разница лишь в том, что COUNT вернет количество записей.
Разработка сайтов различной сложности, дешево. Скайп в профиле.
Сообщение # 14 написано 29.10.2012 в 10:37
|
Quote (Прадмур) trevan, продолжай работать над сайтом, но организуй людям отдельный конфиг, что бы они не искали где настраивать параметры для подключения к базе данных =) Quote (Прадмур) Для начала, поставь в index.php второй строчкой error_reporting(E_ALL); и почитай как "выражается" php интерпретатор, а затем исправь все предупреждения. Quote (Прадмур) Также попробуй организовать более читабельную логику в коде. Например сделай что бы каждый php скрипт занимался чем-то одним (вынеси всё в отдельные модули, классы, распредели по папкам), а не так как SiteDB.class занимается всем и сразу. Так будет и тебе проще разбираться в коде, и другим людям проще понимать о чём ты пишешь. Quote (Прадмур) Также посоветовал бы использовать замечательную штуку, которая есть в mysqli - это подготовленные выражения. Это также поможет избежать sql инъекций которые существуют в твоём коде (например при регистрации аккаунта). Я знаю о такой веши.Я с ней ишо не разобрался.Но твой совет учту. Скинь кусок кода где ты увидел sql-inj.У меня там все фильтруется. Quote (Прадмур) Ну и в конце концов, попробуй отделить html код от php хотя бы каким-нибудь простеньким самописным шаблонизатором. Попробую) Спасибо большое за комментарии моего кода.Обязательно все учту)))
Сообщение # 16 написано 30.10.2012 в 14:42
|
Quote (trevan) Скинь кусок кода где ты увидел sql-inj.У меня там все фильтруется. В методе saveUser там из файла saveuser.inc.php методом post заносится в переменную $pass значение $_POST['pass']. Дальше значение этой переменной напрямую заносится в saveUser. И дальше напрямую используется в запросе: Quote INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$login', SHA1(CONCAT(UPPER('$login'),':',UPPER('$pass'))), '$email', 2) Если генерацию sha1 хеша вынести за sql запрос (так как у тебя делается в методе authUser), то прямая sql инъекция исключается.
Сообщение # 18 написано 30.10.2012 в 20:17
|
Quote (Прадмур) Скинь кусок кода где ты увидел sql-inj.У меня там все фильтруется. В методе saveUser там из файла saveuser.inc.php методом post заносится в переменную $pass значение $_POST['pass']. Дальше значение этой переменной напрямую заносится в saveUser. И дальше напрямую используется в запросе: INSERT INTO account (username, sha_pass_hash, email, expansion) VALUES ('$login', SHA1(CONCAT(UPPER('$login'),':',UPPER('$pass'))), '$email', 2) Если генерацию sha1 хеша вынести за sql запрос (так как у тебя делается в методе authUser), то прямая sql инъекция исключается. Точно.Спасибо.Забыл что она в sql запросе генерируется).
Сообщение # 19 написано 30.10.2012 в 21:16
|
| |||
| |||