Пишем свою браузерную игру. Урок 2
|
|
Lord135 | Дата: Четверг, 29 Марта 2012, 21:13 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| В этом уроке мы создадим таблицу users в бд, напишем файл enter.php и файл db_connect.php Итак приступим.
В phpMyAdmin выбираем базу данных, выбираем вкладку SQL и в поле пишем следующий код:
Code CREATE TABLE `users` ( `id` BIGINT( 20 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `ip` INT( 20 ) NOT NULL , `user` VARCHAR( 16 ) NOT NULL , #VARCHAR - означает что в данном поле может храниться и число и строка `pass` VARCHAR( 30 ) NOT NULL , `sex` SMALLINT( 1 ) NOT NULL ) ENGINE = MYISAM ;
Далее нам нужно написать код для подключения к базе данных, этот код мы вынесем в отдельный файл - db_connect
Code <?php
$server="сервер на котором будут храниться файлы";//не обязательно, но может облегчить написание кода $now = time();
$link=mysql_pconnect("хост","логин","пароль"); mysql_select_db("имя бд",$link) or die ("Ошибка соединения с БД!"); mysql_query("SET NAMES cp1251"); $uri=GetEnv("REQUEST_URI"); $uri=explode("имя бд",$uri);
$ips=GetEnv("REMOTE_ADDR");
$ip=explode(".",$ips); ?> Создаём папку inc и сохраняем туда этот файл в формате php ессно.
Теперь enter.php
Code <?php include ("inc/db_connect.php");//подключаем файл db_connect написанный ранее $password=md5($_POST['passw']);//создаём переменную password в которой будет храниться захэшированый в md5 //пароль который пользователь ввёл в форму на главной странице. Позже я объясню для чего мы здесь его хэшируем. $verif=mysql_query("SELECT * FROM users WHERE user='".$_POST['login']."' AND pass='".$password."' LIMIT 1");//создаём //переменную verif которая будет равна запросу к бд. Сам запрос бд равен ("ВЫБРАТЬ ВСЁ ИЗ users ГДЕ //user='".ВВЕДЁННОМУ ЛОГИНУ."' И pass='".ПЕРЕМЕННОЙ $password."'"); $ver=mysql_num_rows($verif);//создаём переменную $ver при вызове которой вернётcя количество рядов //результата запрос if($ver>0){//если рядов больше чем ноль, то SetCookie("user",$_POST['login']);//устанавливаем куку user SetCookie("pass",$password);//устанавливаем куку pass mysql_query("UPDATE users SET online='1', onl_time='".time()."' WHERE user='".$_POST['login']."' AND pass='".$password."'");//отправляем запрос //к базе данных на обновление таблицы users приблизительно так: ("ОБНОВИТЬ users УСТАНОВИТЬ online='1' ГДЕ user=... //..."); Кстати, чуть не забыл, мы поле online не сделали в базе данных, исправим это чуть ниже) echo "<script>window.location.href='game.php';</script>";//перенаправляем на файл game.php его мы напишем позже }elseif($ver<1){//если рядов меньше чем 1, то echo "<script>alert('Такой пользователь отсутствует в базе данных');</script>";//выводим алерт о том что такого //пользователя не существует echo "<script>window.location.href='index.php';</script>";//перенаправляем на главную страницу } ?> Ну и всё, enter.php готов.
Теперь нам нужно поле online в таблице users
Опять-таки заходим в phpMyAdmin, выбираем вкладку SQL и пишем следующий код:
Code ALTER TABLE `users` ADD `online` INT( 1 ) NOT NULL DEFAULT '1' ALTER TABLE `online` ADD `onl_time` INT( 10 ) NOT NULL DEFAULT '0'
Всё. На этом урок заканчивается.
Сообщение отредактировал Lord135 - Воскресенье, 01 Апреля 2012, 22:43 |
|
| |
Nosorog | Дата: Четверг, 29 Марта 2012, 22:53 | Сообщение # 2 |
участник
Сейчас нет на сайте
| Задолбали эти беспонтовые "уроки" Вы что пишите урок по созданию браузерной игры или урок по php и mysql? Если по созданию браузерной игры, то описывайте какие-либо алгоритмы, если по php, то... бросайте это дело - пока никто не "научился"
Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
|
|
| |
WhiteFang | Дата: Воскресенье, 01 Апреля 2012, 22:16 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| Code <?php
$server="сервер на котором будут храниться файлы";//не обязательно, но может облегчить написание кода $now = time();
$link=mysql_pconnect("хост","логин","пароль"); mysql_select_db("имя бд",$link) or die ("Ошибка соединения с БД!"); mysql_query("SET NAMES cp1251"); $uri=GetEnv("REQUEST_URI"); $uri=explode("имя бд",$uri);
$ips=GetEnv("REMOTE_ADDR");
$ip=explode(".",$ips); ?>
Посмотрел на это и спомнил такой двиг как ИВ идеально похож copy -> paste даже без нормальных описаний в топку.
|
|
| |
Lord135 | Дата: Воскресенье, 01 Апреля 2012, 22:18 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| Да, Вы правы, db_connect нагло содрал оттудава)
|
|
| |
WhiteFang | Дата: Воскресенье, 01 Апреля 2012, 22:21 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Code mysql_query("UPDATE users SET online='1' WHERE user='".$_POST['login']."' AND pass='".$password."'");//отправляем запрос //к базе данных на обновление таблицы users приблизительно так: ("ОБНОВИТЬ users УСТАНОВИТЬ online='1' ГДЕ user=... //..."); Кстати, чуть не забыл, мы поле online не сделали в базе данных, исправим это чуть ниже)
Новички начинают учить делать игры новичков смешно. Кто тебя так учил делать онлайн список ?
|
|
| |
Lord135 | Дата: Воскресенье, 01 Апреля 2012, 22:22 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| А как нужно?
|
|
| |
WhiteFang | Дата: Воскресенье, 01 Апреля 2012, 22:27 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Надеюсь как ты не кто не будет делать. Вот самый простой вариант Code mysql_update("UPDATE players SET time_online='".time() + 30."' WHERE login='".$_SESSION['login']."'"); $time = time(); $online = mysql_query("SELECT * FROM players WHERE time_online > $time"); while($pl = mysql_fetch_array($online)) { echo $pl['login']."<br>"; }
В игре должно быть место где каждый раз страница обновляеться или посылаеться ajax запрос меньше чем в 30 секунд и там должен выполнять Update но большинство делают банальный список онлайн как в ИВ тогда этот код подойдет !
|
|
| |
Lord135 | Дата: Воскресенье, 01 Апреля 2012, 22:37 | Сообщение # 8 |
постоянный участник
Сейчас нет на сайте
| подобный код у меня находиться в файле online.php Добавлено (01.04.2012, 22:35) --------------------------------------------- Это конечно не экономично.... Добавлено (01.04.2012, 22:37) --------------------------------------------- Использовать несколько полей в бд для отображения онлайна
Сообщение отредактировал Lord135 - Воскресенье, 01 Апреля 2012, 22:34 |
|
| |
WhiteFang | Дата: Воскресенье, 01 Апреля 2012, 22:37 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| как ты делаешь придеться обновлять 2 ячейки мой вариант 1 ячейка !
|
|
| |
Lord135 | Дата: Воскресенье, 01 Апреля 2012, 22:44 | Сообщение # 10 |
постоянный участник
Сейчас нет на сайте
| Я обновляю только одну ячейку) В файле online.php, второй я пользуюсь для скрытия пользователя из списков онлайна Добавлено (01.04.2012, 22:41) --------------------------------------------- Если 1, то виден, если 2, то нет, по умолчанию она 1 Добавлено (01.04.2012, 22:41) --------------------------------------------- Кстати да, совсем забыл... Добавлено (01.04.2012, 22:44) --------------------------------------------- Теперь исправил)
|
|
| |
Yoda154 | Дата: Суббота, 28 Апреля 2012, 15:44 | Сообщение # 11 |
участник
Сейчас нет на сайте
| Регистрацию везде можно найти. Лучше бы написал хороший мануал по созданию личной страницы юзера. В нете подобного мало... Бы ло бы полезнее. Или какие-нибудь игровые алгоритмы. А так... Таких уроков очень много...
|
|
| |
vovnet | Дата: Четверг, 31 Мая 2012, 17:30 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| а еще лучше сразу бы писали с ООП!
|
|
| |