Среда, 27 Ноября 2024, 05:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Пишем свою браузерную игру. Урок 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
участник
Сейчас нет на сайте
Задолбали эти беспонтовые "уроки" angry
Вы что пишите урок по созданию браузерной игры или урок по php и mysql?
Если по созданию браузерной игры, то описывайте какие-либо алгоритмы, если по php, то... бросайте это дело - пока никто не "научился" biggrin


Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
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 не сделали в базе данных, исправим это чуть ниже)


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

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг