[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: MySQL! Игра - Скиллы!
lawbreaker
Всем приветик. Я хочу зделать маленькую игру! И у меня перед тем как начать есть много вопросов. Вот :
1. Скиллы ("Сила" , "Ловкость" , "Жызнь" , "Удача")
=> Какие мне зделать поля в отдельной таблице для скил? Типо такие? "Name" , "sila" , "lovkost" , "life" , "udacha" . Я себе подумал что "Name" нужно чтобы знать кому пренадлежат скиллы.
2. Авторизацыя . Мне нужно зделать самую самую простую авторизацыю , проверка имени и пароля, у меня вот такие поля в таблице "users" - "name" "password" "email" "date" "icq" "url" . Дайте плиз мупер пупер маленький скрипт авторизацыи. smile.gif
--------------------
Я зделал вот такой скриптик.
PHP
<?php
include('db.php');
echo 
'<a href=?event=allusers>All hacked users</a><br>
<a href=?event=login>Log In</a>'
;
if (
$_GET['event'] == 'reg1')
{
$name $_POST['name'];
$pass $_POST['pass'];
$mail $_POST['email'];
$icq $_POST['icq'];
$url $_POST['url'];
$data date("Y-M-D");
if ((
$name == '') || ($pass == ''))
    {
echo 
'Please. Write NAME and PASSWORD . <a href=?event=reg>HERE</a>';
    }
else
    {
//Филтр Имени
$name str_replace('<','',$name);
$name str_replace('>','',$name);
$name str_replace('         ','',$name);
$name str_replace('!!!!!!!','!',$name);
$name strip_tags($name);
//Филтр Пароля
$pass str_replace('<','',$pass);
$pass str_replace('>','',$pass);
$pass str_replace('          ','',$pass);
$pass strip_tags($pass);
$link=mysql_connect($DBSERVER,$DBUSER,$DBPASS) or die("fuck db");
$query "INSERT INTO `allday`. `users` (`name`, `password`,`email`,`date`,`icq`,`url`) VALUES ('".$name."','".$pass."','".$mail."','".$data."','".$icq."','".$url."')"
or die ('Momentan ist unser Server beschaedigt..');
mysql_query($query
    or die (
'Momentan ist unser Server beschaedigt...');
    }
}
if (
$_GET['event'] == 'reg'){echo "<form action=?event=reg1 method=POST>Name:<br><input type=text name=name maxlength=15><br>Password<br><input type=password name=pass maxlength=15><br>E-Mail:<br><input type=text name=email><br>ICQ<br><input type=text name=icq maxlength=12><br>URL<br><input type=text name=url><br><input type=submit></form>";}
echo 
"<h1><a href=?event=reg>Register</a></h1>";
if (
$_GET['event'] == 'allusers'
{
include(
"db.php");
$link=mysql_connect($DBSERVER $DBUSER $DBPASS) or die("fuck db"); 
    
$sql 'SELECT * FROM `allday`.`users`'
        
$q=mysql_query($sql);
while (
$sh=mysql_fetch_array($q)) 
    {
    echo 
'<table border=0 bgcolor=red cellpadding=2>';
    echo 
'<tr><td bgcolor=yellow width=25>'.$sh[0].'</td><td bgcolor=Lime width=100><br><font color=red>Username:</font></td><td width=100 bgcolor=blue>'.$sh[1].'</td><td bgcolor=Lime width=100>  <font color=red>Password:</font></td><td bgcolor=blue width=100>'.$sh[2].'</td><td bgcolor=lime>E-Mail:</td><td bgcolor=blue>'.$sh[3].'</td><td bgcolor=lime>ICQ:</td><td bgcolor=blue>'.$sh[5].'</td><td bgcolor=lime>URL:</td><td bgcolor=blue>'.$sh[6].'</td><td><a href=?event=edit&uid='.$sh[0].'>Edit</a></td><td><a href=?event=delete&uid='.$sh[0].'>Delete</a></td></tr>';
    echo 
'</table>';
    }
}
if(
$_GET['event'] == 'edit'
{
include(
"db.php");
$link=mysql_connect($DBSERVER$DBUSER $DBPASS) or die("fuck db"); 
    
$sql "SELECT * FROM `allday`.`users` WHERE `uid`='".(int)$_GET['uid']."' ";
        
$q mysql_query($sql) or die("Error: ".mysql_error());;
echo 
"<form action=?event=editname method=POST>Username:<br><input type=text 
value=\""
.htmlspecialchars(mysql_result($q,0,1))."\" name=name><br>Passwort:<br> <input type=password name=pass value=\"".htmlspecialchars(mysql_result($q,0,2))."\"><br>E-Mail:<br><input type=text name=email value=\"".htmlspecialchars(mysql_result($q,0,3))."\"><br>ICQ:<br><input type=text name=icq value=\"".htmlspecialchars(mysql_result($q,0,5))."\"><br>URL:<br><input type=text name=url value=\"".htmlspecialchars(mysql_result($q,0,6))."\"><br>
<input type=hidden name=uid value=\""
.$_GET['uid']."\"><input type=submit value=Aendern name=send></form>";
}
if (
$_GET['event'] == 'editname'
{
    
$user $_POST['name'];
    
$pass $_POST['pass'];
    
$email $_POST['email'];
    
$icq $_POST['icq'];
    
$url $_POST['url'];
    
$uid $_POST['uid'];
    include(
"db.php");
    
$link=mysql_connect($DBSERVER$DBUSER $DBPASS) or die("fuck db"); 
        
mysql_select_db ("allday") or die ("no db");
            
$sql "UPDATE users
            SET name = '"
.$user."' , password = '".$pass."' , email = '".$email."' , icq = '".$icq."' , url = '".$url."'
            WHERE uid = '"
.$uid."'";
            
mysql_query($sql);
}
if (
$_GET['event'] == 'delete')
{
include(
"db.php");
mysql_connect($DBSERVER $DBUSER $DBPASS);
    
mysql_select_db("allday");
        
$sql " DELETE FROM `users`
        WHERE uid = '"
.$_GET['uid']."'
       "
;
mysql_query($sql);
}
if (
$_GET['event'] == 'login')
{
echo 
'<form action=?event=login_in method=POST>Name:<input type=text name=username>Pass:<input type=password name=password><input type=submit name=do value=Log In></form>';
}
    

Короче говоря вот что в етом скриптике есть
1.Регистрацыя
2.Вывод всех Зарегистрированых юзеров
3.Редакцыя выбранного юзера
4.Удаление данного Юзера
----
а теперь мне нужно так :
Авторизацыя, если Имя и Пароль правельны то даём ссылку на ?event=edit&uid=10 айде юзера
И даём Юзеру право удалить свой аккаунт.
Спасибо. Я так хочу зделать чтото маленькое своё smile.gif Но вначале нужно Выучить ПХП и Мускул biggrin.gif

Спасибо!



Спустя 1 час, 29 минут, 26 секунд (3.02.2009 - 20:21) twin написал(а):
Ты меня не послушал по стилю, а зря. Я хотел помочь, но времени разбирать это награмождение нету. Переделаешь - помогу.

Спустя 5 минут, 9 секунд (3.02.2009 - 20:27) lawbreaker написал(а):
twin
сори. Я просто скрипт писал давно. И темболее я забываюсь всё так выстраивать. Етот Notepad++ ничаго не выравнивает unsure.gif mad.gif sad.gif dry.gif

Спустя 22 минуты, 25 секунд (3.02.2009 - 20:49) lawbreaker написал(а):
так уже лучше? rolleyes.gif

Спустя 3 часа, 27 минут, 30 секунд (4.02.2009 - 00:16) twin написал(а):
Разбирайся пока с этим, потом продолжим.

PHP
<?php
include('db.php');
#Старайся не использовать функции вывода там, где можно обойтись без них. Это сэкономит время
# echo '<a href=?event=allusers>All hacked users</a><br>
# <a href=?event=login>Log In</a>';
?>
<a href=?event=allusers>All hacked users</a><br>
<a href=?event=login>Log In</a>
<?php 
# Переменные нужно объявлять явно. или ты рискуешь обратиться к несуществующему элементу массива.
$event = isset($_GET['event'])?$_GET['event']:null;
# if ($_GET['event'] == 'reg1')
if ($event == 'reg1')
{
# Здесь тоже
$name = isset($_POST['name'])?$_POST['name']:null;
$pass = $_POST['pass'];
$mail = $_POST['email'];
$icq = $_POST['icq'];
$url = $_POST['url'];
#Дели логические блоки пустой строкой, так легче читать

$data = date("Y-M-D");
# Это не ошибка, просто чтоб знал как можно
#if (($name == '') || ($pass == ''))
# Сдвгать лучше не только скобку, но и весь оператор
    if (!$name || !$pass)
    {
echo 'Please. Write NAME and PASSWORD . <a href=?event=reg>HERE</a>';
    }
    else
    
{
# Вот это совсем лишняя затея. Обрабатывать надо на выводе. Тогда ничего страшного не будет    
//Филтр Имени
# $name = str_replace('<','',$name);
# $name = str_replace('>','',$name);
# Это зачем, я не понял. Если боишься  пробелов, используй функцию trim()
# $name = str_replace('         ','',$name);
$name = str_replace('!!!!!!!','!',$name);
# Это тоже не к чиму, на выводе обработаешь
# $name = strip_tags($name);
# Всё тоже самое 
/*
Филтр Пароля
$pass = str_replace('<','',$pass);
$pass = str_replace('>','',$pass);
$pass = str_replace('          ','',$pass);
$pass = strip_tags($pass);
*/
# Усли используешь конфигу, то лучше это туда. Чтоб один раз.
$link=mysql_connect($DBSERVER,$DBUSER,$DBPASS) or die("fuck db");


$query = "INSERT INTO `allday`. `users` (`name`, `password`,`email`,`date`,`icq`,`url`)
 VALUES ('"
.$name."','".$pass."','".$mail."','".$data."','".$icq."','".$url."')"
# Вот это отладочный вариант, ни к чему юзеру на пустой экран пялиться. 
# or die ('Momentan ist unser Server beschaedigt..');
# Лучше при отладке так
or die ('Query № 1 Error:'.mysql_error());
# а потом убрать
mysql_query($query) 
# Ну и везде.
    or die ('Momentan ist unser Server beschaedigt...');
    }
}

if ($_GET['event'] == 'reg')
{
echo "<form action=?event=reg1 method=POST>Name:<br>
<input type=text name=name maxlength=15><br>Password<br>
<input type=password name=pass maxlength=15><br>E-Mail:<br>
<input type=text name=email><br>ICQ<br>
<input type=text name=icq maxlength=12><br>URL<br>
<input type=text name=url><br><input type=submit></form>"
;
}
?>
<h1><a href=?event=reg>Register</a></h1>
<?php
#echo "<h1><a href=?event=reg>Register</a></h1>";

if ($_GET['event'] == 'allusers') 
{
include(
"db.php");
$link=mysql_connect($DBSERVER , $DBUSER , $DBPASS) or die("fuck db"); 
$sql 
= 'SELECT * FROM `allday`.`users`'; 
    $q
=mysql_query($sql);
    
    while 
($sh=mysql_fetch_array($q)) 
    
{
    echo '<table border=0 bgcolor=red cellpadding=2>';
    echo '<tr><td bgcolor=yellow width=25>'.$sh[0].'</td>
    <td bgcolor=Lime width=100><br><font color=red>Username:</font></td>
    <td width=100 bgcolor=blue>'
.$sh[1].'</td>
    <td bgcolor=Lime width=100>  <font color=red>Password:</font></td>
    <td bgcolor=blue width=100>'
.$sh[2].'</td><td bgcolor=lime>E-Mail:</td>
    <td bgcolor=blue>'
.$sh[3].'</td><td bgcolor=lime>ICQ:</td>
    <td bgcolor=blue>'
.$sh[5].'</td>
    <td bgcolor=lime>URL:</td><td bgcolor=blue>'
.$sh[6].'</td>
    <td><a href=?event=edit&uid='
.$sh[0].'>Edit</a></td>
    <td><a href=?event=delete&uid='
.$sh[0].'>Delete</a></td></tr>';
    echo '</table>';
    }
}

if(
$_GET['event'] == 'edit') 
{
include(
"db.php");
# Не надо коннектиться много раз. Одного достаточно
# $link=mysql_connect($DBSERVER, $DBUSER , $DBPASS) or die("fuck db"); 
            $sql = "SELECT * FROM `allday`.`users` WHERE `uid`='".(int)$_GET['uid']."' ";
             $q = mysql_query($sql) or die("Error: ".mysql_error());;
            
echo 
"<form action=?event=editname method=POST>Username:<br><input type=text 
value=\""
.htmlspecialchars(mysql_result($q,0,1))."\" name=name><br>Passwort:<br> 
<input type=password name=pass value=\""
.htmlspecialchars(mysql_result($q,0,2))."\"><br>
E-Mail:<br><input type=text name=email value=\""
.htmlspecialchars(mysql_result($q,0,3))."\"><br>
ICQ:<br><input type=text name=icq value=\""
.htmlspecialchars(mysql_result($q,0,5))."\"><br>
URL:<br><input type=text name=url value=\""
.htmlspecialchars(mysql_result($q,0,6))."\"><br>
<input type=hidden name=uid value=\""
.$_GET['uid']."\">
<input type=submit value=Aendern name=send></form>"
;
}
            
if 
($_GET['event'] == 'editname') 
{
# Вот это в принципе один раз можно сделать, наверху. Тогда код будет компактней    
$user = $_POST['name'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$icq = $_POST['icq'];
$url = $_POST['url'];
$uid = $_POST['uid'];
            
    include
("db.php");
    
 
#  $link=mysql_connect($DBSERVER, $DBUSER , $DBPASS) or die("fuck db"); 
    
 
#       mysql_select_db ("allday") or die ("no db");
            $sql = "UPDATE users
            SET name = '"
.$user."' , password = '".$pass."' , email = '".$email."' 
            , icq = '"
.$icq."' , url = '".$url."'
            WHERE uid = '"
.$uid."'";
            mysql_query($sql);
}

if ($_GET['event'] == 'delete')
{
include(
"db.php");

#mysql_connect($DBSERVER , $DBUSER , $DBPASS);
    mysql_select_db("allday");
        $sql = " DELETE FROM `users`
        WHERE uid = '"
.$_GET['uid']."'
       "
;
mysql_query($sql);
}

if ($_GET['event'] == 'login')
{
echo '<form action=?event=login_in method=POST>Name:
<input type=text name=username>Pass:
<input type=password name=password><input type=submit name=do value=Log In></form>'
;
}

Спустя 58 минут, 32 секунды (4.02.2009 - 01:15) lawbreaker написал(а):
блин какая ета жызьнь програмёрская закуручена?! Тяжело всё

Спустя 5 часов, 22 минуты, 13 секунд (4.02.2009 - 06:37) Семён написал(а):
хммм. что можно сказать

отличная регистрация!
отличная проверка входящих данных!
отличный способ - не шифровать пароль

Советы!, прежде чем писать игру:
1) попруй сделать сначала регистрацию / авторизацию с:
a) использованием регулярный выражений
б) использованием шифрования пароля в базе (я люблю с солью)

2) Для написания игры потребуется свой сапописный шаблонизатор или уже готовые решения.... ибо далеко ты неуйдёшь )

Вот такие записи меня просто убили......
PHP
$name = str_replace('<','',$name);


Знаете про существование и использование?:
mysql_real_escape_string

Спустя 8 часов, 56 минут, 42 секунды (4.02.2009 - 15:34) lawbreaker написал(а):
нет! а что ето за функцыя?
как шыфвровать пароль? Что значит с солью?

Спустя 49 минут, 10 секунд (4.02.2009 - 16:23) Семён написал(а):
mysql_real_escape_string - мнемонизирует специальные символы в строке для использования в операторе SQL с учётом текущего набора символов/charset соединения.

Слышал о SQL Иньекциях? )

По-поводу шифрования изучи что такое md5

Спустя 2 минуты, 8 секунд (4.02.2009 - 16:25) lawbreaker написал(а):
нито и не другое не слышал!

Спустя 6 часов, 7 минут, 3 секунды (4.02.2009 - 22:32) Семён написал(а):
Короч SQL иньекции - то чем ломают сайты)))))) и получают все логины и пароли например к твоей игре....
Если бы ты шифровал данные в базе, то злоумышленнику даже получив их было бы проблематично их расшифровать))

на досуге почитай
http://ru.wikipedia.org/wiki/Внедрение_SQL-кода
http://ru.php.net/md5

wink.gif

Спустя 4 минуты, 5 секунд (4.02.2009 - 22:36) twin написал(а):
Андрей, перепишешь скрипт, выкладывай, будем по порядку разбираться, что это за звери такие - инъекции, шифрование, XSS и прочая муть.


_____________
Я Андрей и мне 14 лет :)
И ни как не дождусь когда HardWoman меня удалит
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.