Урок по созданию онлайн боя.
|
|
hellground | Дата: Среда, 05 Октября 2011, 22:00 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Собственно написал простейший бой без использования flasha так как в нашем случае он и не нужен для анимации. Как все будет выглядить Бой сделан на mysql и php, стоило бы доработать его джавой так как нет динамического обновления после нажатия кнопки, но я немного поспешил и сделал так. - upd сделал без джавы нормальное обновление Хочу сказать что абсолюнто все данные защищены, кроме единственного, когда мы со страницы списка мобов переходим к бою, у нас передается айди моба методом $_GET, если мы зайдем вне боя на страницу fight.php и введем fight.php?id=1 мы попадем в бой. Надо было дописать защиту но я как всегда разленился - upd теперь передается методом POST из невидимой кнопки В остальном если вы попадает в бой к мобу то при любому обновлении/сбросе куков и остальной ерунде вы не сможете зайти куда то ещё в игре кроме боя. Урон расчитан функцией rand() минимальное и максимальное значение нашего урона находится в бд. Выбирается случайное из них и отнимается от хп моба в той же БД. Для того чтобы для всех мобы были разные сделана бд fight, как только вы жмете атаковать в БД fight сразу же появляется новая строчка с вашем боем и в ваш профиль игрока вставляется айди этого боя, если у вас(в профиле) будет находится нечто отличное от 0 то вы будете попадать в этот бой. Если кого-то заинтересовало то я могу переделать метод передачи(для защиты) и сделать лог + криты и увороты в бою.
Объяснять как это работает немного глупо я думаю, все построенно на сессии + запросы в бд, мол проверить обновить удалить и тд... Хочу добавить что все сделанно методом <iframe> и вся игра происходит на странице main.php. Так же есть условие мер предосторожности для того чтобы нельзя было играть на отдельных страницах фреймов. Вопросы можете задавать, буду иногда посещать данный форум.
Информация: Чтобы попасть в "игру" Регистрируемся на мини сайте и попадаем в main.php(если у вас не будет сессии в игру вы не зайдете) далее разберетесь Файл подключения к базе - bd.php Вам нужно будет самим сделать запрос на создание бд с названием `Site` Далее влить в неё fight.sql Скачать
Сообщение отредактировал hellground - Четверг, 06 Октября 2011, 18:39 |
|
| |
Assasin | Дата: Четверг, 06 Октября 2011, 09:48 | Сообщение # 2 |
web-coder
Сейчас нет на сайте
| За старание конечно молодец, но код не оптимизирован, куча одинаковых запросов на одной странице. Да и зачем фреймы юзал? Проще было бы div+ajax
|
|
| |
hellground | Дата: Четверг, 06 Октября 2011, 14:48 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Assasin фреймы юзал как модуль для подключения к странице игры, для меня оптимальный вариант так как можно хранить все подключаемые модули не в одном файле а в разных, и подключать их к одному. А дифом в будущем подгружать такое кол-во на одной странице смертоподобно... А ajax да, к несчастью я только собираюсь в нем разбиратся, так что пока так как есть. UPD: раставил весь код по модулям, все действия работы с базой в func.php. Теперь нет лишних запросов все ясно и четко.
Сообщение отредактировал hellground - Четверг, 06 Октября 2011, 18:45 |
|
| |
Sufir | Дата: Пятница, 07 Октября 2011, 15:38 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| А где урок-то?
|
|
| |
hellground | Дата: Пятница, 07 Октября 2011, 21:39 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Sufir Урок в файлах, принцип в теме. Что ещё тебе нужно?
|
|
| |
Zizilk | Дата: Пятница, 07 Октября 2011, 22:07 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Из поста тоже при желании можно легко всё вытащить) Именно потому, что http ни методом Get ни методом Post не обеспечивает защиты передаваемых сведений, и был создан https с шифрованием данных)
|
|
| |
hellground | Дата: Суббота, 08 Октября 2011, 00:00 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Zizilk каким образом ты подменишь данные в Post? И насколько я знаю https это ещё недоконца реализованная система, очень мало сайтов её поддерживают
Сообщение отредактировал hellground - Суббота, 08 Октября 2011, 00:03 |
|
| |
Assasin | Дата: Суббота, 08 Октября 2011, 12:53 | Сообщение # 8 |
web-coder
Сейчас нет на сайте
| hellground, любые данные можно подменить. К примеру написать сокет скрипт и пихать свои данные, либо использовать посторонние программы. К примеру в Firefox есть дополнение Tamper Data с его помощью можно изменять запросы. Тут главное все входящие данные фильтровать.
|
|
| |
Zizilk | Дата: Суббота, 08 Октября 2011, 16:52 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Quote (hellground) каким образом ты подменишь данные в Post? И насколько я знаю https это ещё недоконца реализованная система, очень мало сайтов её поддерживают Данные в пост передаются совершенно открыто, можно подменить,отправить через флеш либо ещё как-то, java скрипт и прочие. Разница между гетом, только в том, что гет находится в адресной строке, аpost в теле запроса, поэтому его тоже не составляет особого труда выковырять и подменить.
то что https мало поддерживаема теха ты насмешил: Vkontakte.ru google facebook lifejournal paypall тысячи сайтов на которых уже реализованн https
Сообщение отредактировал Zizilk - Суббота, 08 Октября 2011, 16:55 |
|
| |
alexander | Дата: Вторник, 01 Ноября 2011, 15:50 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| $result = mysql_query("SELECT id FROM users WHERE login='$login'"); $myrow = mysql_fetch_array($result); люди что означают эти две строчки
|
|
| |
anton-gar | Дата: Вторник, 01 Ноября 2011, 15:59 | Сообщение # 11 |
WEBmaster
Сейчас нет на сайте
| Quote (alexander) $result = mysql_query("SELECT id FROM users WHERE login='$login'");
Достаём данные из таблицы users, где логин = логину
Quote (alexander) $myrow = mysql_fetch_array($result);
И записуем в массив.
|
|
| |
alexander | Дата: Вторник, 01 Ноября 2011, 17:23 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| мне выдаёт ошибку в этих строчках
|
|
| |