И так всем привет! Как и было обещенно, для ядра TigaEngine будет выпущен ряд уроков по созданию браузерной игры (экономической стратегии) Первое что вам надо понять , я показываю пример создания браузерной игры (а не учу вас основам программирования), далее необходимо запастись временем ,терпением и безмерным количеством кофе
В качестве основы будет использоваться TigaEngine (написанный на PHP и имеющий свою архитектуру), в качестве Суб БД будет использоваться MYSQL - но как же PDO ? - как я уже говорил я не учу вас основам программирования , mysql - это просто (но если есть знания используйте PDO). Дабы придать игре динамичность - используем JQuery(я также не буду вас обучасть элементарным вещам JQ,JS)
Начнем с модуля авторизации и разделения контента для гостей и игроков :) Шаг 1 (описание и создание баз) Не мало важно правельно создать базу данных , сейчас мы создадим 3 базы , не будем танцивать с бубном ...
Первая таблица : users - таблица пользователей
id - уникальный индификатор
login - логин
password - пароль
email - мыло
tribe - Расса
access - права (админ, модер, игрок)
gold - золото (доннатан валюта)
silver - серебро (валюта для доннатана (меняется на голд))
reg_ip - айпи при регистрации
Вторая база : online - таблица игроков находящихся в игре
login - Логин
time - Время авторизации
Третья таблица : active - таблица содержащая информацию по авторизации учетных записей
uid - айди учетной записи
time - время активациии (день и тд...)
CREATE TABLE IF NOT EXISTS `active` ( `uid` int(11) NOT NULL, `time` int(11) NOT NULL, `ip` varchar(15) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `online` ( `login` varchar(16) NOT NULL, `time` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(16) NOT NULL, `password` varchar(32) NOT NULL, `email` varchar(64) NOT NULL, `tribe` int(11) NOT NULL DEFAULT '1', `access` enum('0','1','2','3') NOT NULL DEFAULT '1', `gold` int(11) NOT NULL, `silver` int(11) NOT NULL, `reg_ip` varchar(15) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Шаг 2 ( кодинг )
Далее зайдем в engine/classes/Session.php Найдемprivate $time;после добавим
Код
var $logged_in = false; var $referrer, $url; public $userinfo = array();
Теперь когда у нас есть авторизация , нам нужна регистрация Модуль регистрации очень прост! Начнем Заходим в engine/mods/ и создаем файл register.php и всатвляем код
Код
<?php
/* +-------------------------------------------------------------------------- | TigaEngine | ======================================== | By Tiga Team | | ======================================== | register.php - модуль регистрации */
if (!defined('TIGA_RUN')) { die($lang_core['access_deniend']); }
Далее нам надо проверить передана ли нам форма , после}Добавим код
Это урок по созданию своего движка или всетки по использованию готового? Не слишком ли дохрена кода приходится писать разработчику? Движок должен брать на себя все рутинные операции. Из приведенных выше простыней не понятно, чем разработка на вашем детище отличается от написания странички с нуля. в идеале код вашего пользователя должен выглядеть так:
Добавлено (01.02.2013, 07:45) --------------------------------------------- вопрос всего один. Чем вот те вот простыни сверху отличаются от разработки с нуля?
Без обид, но до гордого статуса «урока» этот текст не дотягивает. Урок — это не последовательность фраз "вставим код" — это объяснение того, что, почему и как мы делаем, здесь же никакого объяснения нет в принципе.
Хранить пароль пропущенный через md5 без солений — это всё равно, что хранить его в открытом виде — уже давно существуют необходимые базы для восстановления данных по md5. Логика обработки пароля вообще странная — зачем чистить его от тегов, у человека что, не может быть пароля "<javascript></javascript>"? Более того, зачем его чистить, эскейпить и только потом проверять его длину - она же будет отличаться от того, что ввёл пользователь. Ну а после всех чисток и проверок в базу заносится "сырой пароль" - т.е. не то, что проверяли.
И ещё вопрос по миру php: там до сих пор не пользуются фреймворками, или это особенность данного проекта? Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )
Без обид, но до гордого статуса «урока» этот текст не дотягивает. Урок — это не последовательность фраз "вставим код" — это объяснение того, что, почему и как мы делаем, здесь же никакого объяснения нет в принципе.
Хранить пароль пропущенный через md5 без солений — это всё равно, что хранить его в открытом виде — уже давно существуют необходимые базы для восстановления данных по md5. Логика обработки пароля вообще странная — зачем чистить его от тегов, у человека что, не может быть пароля "<javascript></javascript>"? Более того, зачем его чистить, эскейпить и только потом проверять его длину - она же будет отличаться от того, что ввёл пользователь. Ну а после всех чисток и проверок в базу заносится "сырой пароль" - т.е. не то, что проверяли.
И ещё вопрос по миру php: там до сих пор не пользуются фреймворками, или это особенность данного проекта?
Не понятно как вы читали статью , я ясно дал понять что это не объяснение элементарных вещей (если вам не понятно что я вставляю, думаю лучше вообще забыть о php)
Пароль я закинул в md5 чисто ради примера (соль зацепить не проблема).
не понял по поводу мира PHP - перефразируйте предложение чтоб его кто то понимал , кроме вас.
Не понятно как вы читали статью , я ясно дал понять что это не объяснение элементарных вещей (если вам не понятно что я вставляю, думаю лучше вообще забыть о php)
Да всё понятно что там вставлено, не ясно зачем. Если декларируется что не объясняются элементарные вещи, так зачем приводить код, в котором только они и делаются.
Ещё раз повторю, задача любого нормального урока не только показать "как", но и объяснить "для чего" и "почему именно так ". Если этот урок показывает как сделать простую регистрацию, то почему не объясняет почему её нужно делать именно так, а не иначе? Где объяснение того для чего md5 сумма берётся и эскейпится парамтры? Если же эти знания считаются элементарными, то чему неэлементарному учит этот урок?
Цитата (Woogy)
Пароль я закинул в md5 чисто ради примера (соль зацепить не проблема).
А Люди, которые будут по вашим урокам учиться программы делать, должны догадаться, что это чисто ради примера, а не для реальной системы?
Цитата (Woogy)
не понял по поводу мира PHP - перефразируйте предложение чтоб его кто то понимал , кроме вас.
Существуют ли на php фреймворки ориентированные на web-разработку (аналоги Django и Rails, например) и если существуют, почему всё делается на сыром php - такой подход буквально обещает тысячи багов и море лишнего кода. Участвовал в разработке Order of War (C++ UI & логика) и WoT (Python портал worldoftanks.ru почти всё :-) )
Tiendil, автор объясняет в своей теме, что фреймворки тянут за собой кучу ненужного барахла, а его фреймворк - самый фреймворковый фреймворк. Ах да, а еще он очень быстрый - страничку за 28 мс генерирует. Discord: alpotapov#1741