| Пишем свою браузерную игру. Урок 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 |  |   почетный гость Сейчас нет на сайте | а еще лучше сразу бы писали с ООП! 
 
   |  |  |  |  |