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

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Не получается создать РАБОЧУЮ форму регистрации браузерки
Andy-goДата: Воскресенье, 23 Октября 2011, 21:59 | Сообщение # 1
участник
Сейчас нет на сайте
Нашел и скачал пакет уроков по созданию браузерки.
Создал формы входа и регистрации, а так же БД MySQL и таблицу users в ней.
Но при попытке "регистрации" соответствующая запись в таблицу users не добавляется:(

Файлы:

index.phtml


reg.phtml


testreg.phtml


таблица users


Где я ошибся?


Сообщение отредактировал Andy-go - Воскресенье, 23 Октября 2011, 21:59
cougraAccДата: Понедельник, 24 Октября 2011, 13:44 | Сообщение # 2
Яркая личность GD
Сейчас нет на сайте
Кодировка ужасная, но скрипт работает.
Ошибок нет.
05142Дата: Понедельник, 24 Октября 2011, 14:01 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Почему бы просто не сменить кодировку на utf-8

Code

<option value="1984">1984</option>
<option value="1985">1985</option>
<option value="1986">1986</option>
<option value="1987">1987</option>
<option value="1988">1988</option>
<option value="1989">1989</option>
<option value="1990">1990</option>
<option value="1991">1991</option>

ужасно, неужели нельзя это в скрипте генерировать?


mecinvader
Andy-goДата: Понедельник, 24 Октября 2011, 14:09 | Сообщение # 4
участник
Сейчас нет на сайте
Может быть кто-нибудь согласится давать мне консультации по ICQ, Skype?
А то по ходу написания возникают вопросы, ставящие меня в тупик, и спросить по сути не у кого:(

Я приобрел курс по созданию браузерной игры, и часть информации оттуда мне помогает (в том числе с его помощью я разобрался в чем была проблема со скриптами из первого поста - я пытался их запустить перетаскиванием соответствующего файла в строку браузера smile ), но так как курс основан на создании клона БК, формат отличается и я встречаюсь с проблемами буквально после создания формы регистрации и формы входа в игру...

В скриптинге я полный нуб - так что вопросов наверное будет много и много таких которы вам покажутся глупыми...

Если вы готовы откликнуться, пожалуйста пишите тут или в личку.


Сообщение отредактировал Andy-go - Понедельник, 24 Октября 2011, 14:10
cougraAccДата: Понедельник, 24 Октября 2011, 14:39 | Сообщение # 5
Яркая личность GD
Сейчас нет на сайте
Quote (Andy-go)
Может быть кто-нибудь согласится давать мне консультации по ICQ, Skype?

Контактные данные не даю, тем более что бы каждые пол часа отвечать на вопросы. Только тут.
Andy-goДата: Понедельник, 24 Октября 2011, 14:51 | Сообщение # 6
участник
Сейчас нет на сайте
Ок.

На данный момент вопрос следующий:

1- Мне нужно чтобы после того как новый игрок только что залогинился он попадал на страничку "выбор карты героя" на которой игрок может выбрать одну из двух расс и затем одну из двух карт героя соответствующей расы (вместе с картой он так же получает и стартовую колоду из 21 карты) - как это реализовать технически?
Если я просто прикручу эту страничку то после логина игрок будет на неё попадать каждый раз, а этого не нужно. При последующих логинах он должен попадать сразу на "главную страницу игры".


Сообщение отредактировал Andy-go - Понедельник, 24 Октября 2011, 14:52
cougraAccДата: Понедельник, 24 Октября 2011, 14:54 | Сообщение # 7
Яркая личность GD
Сейчас нет на сайте
Скинь свой login.phtml
Andy-goДата: Понедельник, 24 Октября 2011, 15:01 | Сообщение # 8
участник
Сейчас нет на сайте
Вот:

Code

<?php  
session_start();
session_destroy();  
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
     <title>Регистрация в игре</title>
     <meta http-equiv="content-type" content="text/html; charset=windows-1251">
     <link href="main.css" rel="stylesheet" type="text/css">
</head>

<body>

<div class="header"></div>
<div class="register">
     <img class="bild1" src="img/sm_logo.png" >
     <h1> Ролевая игра NewBk</h1>
     <p class="desc"><div class="joinbutton"><a href="regank.php" title="Давай! Нажми меня!">Зарегистрироваться!</a></div>
     <form id="loginForm" name="loginForm" action="auth.php" method="post">  
             <table align="center" cellpadding="0" cellspacing="0" width="392">
                 <tr>
                     <td  class="reg"><label>Логин<br></label>
                         <input id="login" name="login" type="text"></td>
                     <td class="reg"><label>Пароль<br></label>
                         <input id="pass" name="pass" type="password"></td>
                     <td class="reg">
                          <input type="submit" value="Вход" name="loginMode">
                     </td>
                 </tr>
             </table>
     </form>
<br>
</div>   
</body>
</html>
cougraAccДата: Понедельник, 24 Октября 2011, 15:05 | Сообщение # 9
Яркая личность GD
Сейчас нет на сайте
Теперь auth.php ^^

Добавлено (24.10.2011, 15:05)
---------------------------------------------
Перепутал просто:)

Andy-goДата: Понедельник, 24 Октября 2011, 15:13 | Сообщение # 10
участник
Сейчас нет на сайте
Code

<?php
session_start();

@include("config.inc.php");
//Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');

if($_SESSION['uid'] =='') { $_SESSION['uid'] = mt_rand(100000,999999); }

// данные отправлены
if( ($_POST['login'] !='') && ($_POST['pass'] !='') ) {

       //Создаем запрос к базе для проверки существования Пользователя
       $login = mysql_escape_string( $_POST['login'] );
       $pass = mysql_escape_string( $_POST['pass'] );

       $result = mysql_query("SELECT * FROM users WHERE stat=1 and login='".$login."' and pass='".$pass."'");
       //Проверка результата запроса
       if(mysql_affected_rows()!=0) {
         $row = mysql_fetch_array( $result );
         $usr_id = $row["usr_id"];
         $level = $row["character_level"];
         // запомним uid сессии
         $time = time();
         $uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
         mysql_query("update users set sessionid = '$uniq_id', time_up=$time WHERE login='".$login."' and pass='".$pass."'");
         $_SESSION['login'] = $login;
         $_SESSION['usr_id'] = $usr_id;
         $_SESSION['uid'] = $uniq_id;
         $_SESSION['level'] = $level;
         header("Location: game.php");
       } else {  echo 'Ошибка авторизации!  <a href="index.php">назад</a>';  }

  } else { echo 'Вы не заполнили логин и/или пароль! <a href="index.php">назад</a>'; }

?>
cougraAccДата: Понедельник, 24 Октября 2011, 15:17 | Сообщение # 11
Яркая личность GD
Сейчас нет на сайте
users table


auth.php

newuser.php
Andy-goДата: Понедельник, 24 Октября 2011, 15:38 | Сообщение # 12
участник
Сейчас нет на сайте
Спс за кодировку. Буду пробовать.

Такой вот вопрос возник: в index.php не пойму как устроенна центральная (по горизонтали) часть окрашенная в бежевый - не могу найти в коде ни указания на её цвет, ни в Дримвиевире разобраться что это вообще за блок такой, вроде бы и не таблица (сама форма входа с кнопкой в таблице), и непонятно что...
cougraAccДата: Понедельник, 24 Октября 2011, 15:43 | Сообщение # 13
Яркая личность GD
Сейчас нет на сайте
<TABLE width=200 cellSpacing=5 cellPadding=0 border=0 style="border-style: dashed; border-width: 1px" bgcolor="#FFE5B6">
У таблицы заданы атрибуты
style="border-style: dashed; border-width: 1px" bgcolor="#FFE5B6" - отвечает за цвет

Code
<TABLE width=200 cellSpacing=5 cellPadding=0 border=0 style="border-style: dashed; border-width: 1px" bgcolor="#FFE5B6">  
<TR>  
<TD>Ëîãèí:</TD>  
<TD><INPUT name=login></TD>  
</TR>  
<TR>  
<TD>Ïàðîëü:</TD>  
<TD><INPUT type=password name=pass>  
</TD>  
</TR>  
<TR>  
<TD>  
<INPUT class=loginButton type=submit value=Âõîä name=sbm></p>  
</TD>  
<TD style="PADDING-BOTTOM: 10px" width="99%"><A href="reg.phtml">Çàðåãèñòðèðîâàòüñÿ</A>  
</TD>  
</TR>  
</TABLE>
Andy-goДата: Понедельник, 24 Октября 2011, 15:55 | Сообщение # 14
участник
Сейчас нет на сайте
А это кусок кода из моего файла? Я что-то никак не найду его О_о единственное что похоже, вот:

Code

  <table align="center" cellpadding="0" cellspacing="0" width="392">  
                  <tr>  
                      <td  class="reg"><label>Логин<br></label>  
                          <input id="login" name="login" type="text"></td>  
                      <td class="reg"><label>Пароль<br></label>  
                          <input id="pass" name="pass" type="password"></td>  
                      <td class="reg">  
                           <input type="submit" value="Вход" name="loginMode">

но тут нет указания на цвет, да и вообще таблица которая тут описана, это маленькая табличка с полями логин, пароль и кнопкой. А вот чем определен цвет всей полосы никак не могу понять.
cougraAccДата: Понедельник, 24 Октября 2011, 15:57 | Сообщение # 15
Яркая личность GD
Сейчас нет на сайте
class="reg"
Открывай файл: main.css
Там ищи такую строчку
Code
.reg {
...
}


Сообщение отредактировал cougraAcc - Понедельник, 24 Октября 2011, 15:58
Andy-goДата: Четверг, 27 Октября 2011, 10:31 | Сообщение # 16
участник
Сейчас нет на сайте
спасибо за разъяснение про css - помогло.

Теперь к скриптам которые вы выложили мне в помощь:
users предполагает что игрок при регистрации НЕ создает персонажа, а создает его потом при первом логине в игру. - Это не совсем то, что я имел ввиду.

Нужно так: при регистрации игрок создает персонажа, но в силу игрового жанра сам персонаж будет выступать в роли некоего Демирурга, который "вдохновляет героев", таким образом игровой персонаж имеет следующие характеристики(кроме стандартных никнейм, пасс, ДР, session ID и т. д.): золото, статистику (сыгранные бои; из них выигранные, из них проигранные). Коллекцию карт героев (именно одну из этих карт игрок выбирает при первом логине в игру), коллекцию карт юнитов и магии, а так же коллекцию артефактов я так понимаю вносить в эту табличку не нужно.

Такие вот дела, таблицу юзерс я создал. А что дальше получится сейчас поглядим smile

Добавлено (25.10.2011, 11:15)
---------------------------------------------
с auth.php все ясно.

Возник вопрос с newuser.php - я так понял что это начальная его часть предполагающая что дальше я сам справлюсь - предположение логичное, но проблема в том что в уроках которые у меня есть совершенно отсутствует такой раздел как "создание персонажа", поэтому я не представляю с какой стороны взяться за эту страничку (сверстать её в DW - как она должна выглядеть и что где должно находиться - это я могу), а вот какой код нужен чтобы все заработало я не знаю.
К стати на этой же стадии возникает и ещё один вопрос: для "карт героев" я создал соответствующую табличку "hero-cards" (на данный момент там 4-е героя), как связать эту табличку с страницей newuser.php и соответственно процессом выбора расы и героя?

Добавлено (27.10.2011, 10:16)
---------------------------------------------
Как в этом куске кода сделать так чтобы вместо echo осуществлялся переход на другую страницу?

Code

if(sendmail($email,$subject,$message,$headers) !== FALSE) {
                  echo 'Регистрация завершена, код активации отправлен Вам на электронный адрес!';
               }

Добавлено (27.10.2011, 10:31)
---------------------------------------------
Вроде бы все сделал, ошибок не выдает, но при отправке формы регистрации остается на той же самой странице вместо того чтобы перейти на указанную...

Code

<?php
session_start();

@include("config.inc.php");
@include("functions.inc.php");
  //Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');

if($_SESSION['uid'] =='') {  
    $_SESSION['uid'] = mt_rand(100000,999999);  
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
     <title>Регистрация в игре</title>
     <meta http-equiv="content-type" content="text/html; charset=windows-1251">
     <link href="main.css" rel="stylesheet" type="text/css">
</head>

<body>

<div class="register">
<img class="smlogo" src="img/sm_logo.png" >

<?php   

if(( !$_POST['do'] OR $_POST['do'] =='') AND $_GET['activation'] == '' ) {

?>

         <h1>Добро пожаловать в мир NewBK</h1>
         Для начала игры необходимо заполнить анкету и принять Основные Положения.<br><br>
         <form name="registerform" action="regank.php" method="post">
         <table class="reginfo" align="center" cellpadding="3" cellspacing="0">
                  <td class="reg"><label>Логин</label></td>
                  <td class="reg"><input type='text' name='login'size='30'></td>
               </tr>
               <tr>
                  <td class="reg"><label>Пароль</label></td>
                  <td class="reg"><input type='pass' name='pass' size='30'></td>
               </tr>
               <tr>
                  <td class="reg"><label>E-mail</label></td>
                  <td class="reg"><input type='text' name='email' size='30'></td>
               </tr>
               <tr>
                  <td class="reg">Ваш пол</td>
                  <td class="reg">  
                    <input checked id=a1 name=gender
                    type=radio value=1 ><label> Мужской</label><br>
                    <input id=a2 name=gender type=radio value=2>
                    <label>Женский</label>  
                  </td>
               </tr>
               <tr>
                  <td class="reg"><label>Реальное имя</label></td>
                  <td class="reg"><input type='text' name='realname' size='30'></td>
               </tr>
               <tr>
                  <td class="reg"><label>Дата рождения</label></td>
                  <td class="reg">
                   <?  
                     echo '<select size="1" name="day">';
                     for($i=1;$i<=31;$i++)  
                         echo '<option value="'.$i.'">'.$i.'</option>';
                     echo '</select>' ;
                   ?>  

                   <select size="1" name="month">
                     <option value="01">январь</option>
                     <option value="02">февраль</option>
                     <option value="03">март</option>
                     <option value="04">апрель</option>
                     <option value="05">май</option>
                     <option value="06">июнь</option>
                     <option value="07">июль</option>
                     <option value="08">август</option>
                     <option value="09">сентябрь</option>
                     <option value="10">октябрь</option>
                     <option value="11">ноябрь</option>
                     <option value="12">декабрь</option>
                   </select>
                   <?  
                     echo '<select size="1" name="year">';
                     for($i=2005;$i>=1970;$i--)  
                         echo '<option value="'.$i.'">'.$i.'</option>';
                     echo '</select>' ;
                   ?>  
                  </td>
               </tr>
               <tr>
                  <td class="reg"><img src="img/capcha.php?sid=<? echo $_SESSION['uid'] ?>"></td>
                  <td class="reg"><input name="sid" type="text" size="30" value=""></td>
               </tr>
               <tr>
                  <td class="reg"></td>
                  <td class="reg"><input type=checkbox name="agb"><label>Я принимаю Основные Положения игры NewBK.</label></td>
               </tr>
               <tr>
                  <td class="reg"></td>
                  <td class="reg"><input type="submit" name="do" value="Регистрация" /></td>
               </tr>
           </table>
                            
         </form>
         <br>
<?php

}

// данные отправлены
if($_POST['do'] !='') {
    //Начинаем проверять входящие данные
    if($_POST['sid'] == $_SESSION['uid']) {

       //Создаем запрос к базе для проверки существования Пользователя
       $login = $_POST['login'];
       mysql_query("SELECT * FROM users WHERE login='".strtolower($login)."'");
     
       //Проверка результата запроса
       if(mysql_affected_rows()==0) {
       //Проверка ввведенных паролей

          if( $_POST['pass'] !='' ){

             //Осуществляем регистарацию
             $uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
             $pass = $_POST['pass'];
             $email = $_POST['email'];
             $Year = $_POST['year'];
             $Month = $_POST['month'];
             $Day = $_POST['day'];
             $Date = $Year."-".$Month."-".$Day;
             $Gender = $_POST['gender'];
             $RealName= $_POST['realname'];

             //Создаем запрос для записи данных в БД
             $query = "INSERT INTO users (login,pass,email,gender,user_birthday,character_birthday,sessionid,realname)  
                       VALUES('".strtolower($login)."','$pass','$email','$Gender','$Date',Now(),'$uniq_id','$RealName')";
             $r = mysql_query($query,$link) or die("Query failed : " . mysql_error());
             if($r) {

               // Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку
               $headers  = 'MIME-Version: 1.0' . "\r\n";
               $headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";
               // Откуда пришло
               $headers .= 'From: NewBk <game@newbk.org>'."\r\n";
               //Здесь укажите электронный адрес, куда будут уходить сообщения
               $subject = "Подтверждение регистрaции на сайте";
               $message = 'Для активации аккаунта пройдите по следующей ссылке <a href="http://newbk/regank.php?activation='.$uniq_id.'" target="_blank">http://newbk/regank.php?activation='.$uniq_id.'</a>';
               $message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите enter.';
               //Отправляем сообщение
               if(sendmail($email,$subject,$message,$headers) !== FALSE) {
                  "window.location.href = 'reg_sucess.php'";              
                  }
             }

          } else { echo 'Регистрация невозможна: Введенные пароль пустой! <a href="regank.php"><< назад</a><>';}

       } else { echo 'Регистрация невозможна: Пользователь с таким именем уже существует! <a href="regank.php"><< назад</a>';}
       session_destroy();

    } else { echo 'Регистрация невозможна: код подтверждения введен не верно! <a href="regank.php"><< назад</a>';}

}

//Фрагмент отвечающий за активацию аккаунта

//////////////////

?>

</div>
    
</body>
</html>
StarkДата: Четверг, 27 Октября 2011, 11:31 | Сообщение # 17
GCUP: Terran Inc.
Сейчас нет на сайте
Andy-go,
дам вам небольшой совет, учите php/html/css и сами их принцепы, ибо без этих знаний будет тяжело.

Так же совет используйте кодировку utf 8 уникод (как в базе данных так на страничках, перекодировать можно с помощю нотепада++) ибо с windows-1251 ака АНС, будет много проблем на продакшене.

Quote
Как в этом куске кода сделать так чтобы вместо echo осуществлялся переход на другую страницу?


а вот так, основы же! smile
Code
if(sendmail($email,$subject,$message,$headers) !== FALSE) {   
                   echo "<meta http-equiv=\"Refresh\" content=\"0; url=index.php\">";   
                 }

index.php заменяем на страничку куда нужно перейти после регистрации wink


Работаю программистом в ASTED - Разработка сайтов, разработка калькуляторов, квизов и crm

Сообщение отредактировал Stark - Четверг, 27 Октября 2011, 11:34
Andy-goДата: Четверг, 27 Октября 2011, 11:41 | Сообщение # 18
участник
Сейчас нет на сайте
Stark, спасибо за ответ

Добавлено (27.10.2011, 11:37)
---------------------------------------------
Но у меня скирпт какой-то специальный - ничего не помогает :))

Добавлено (27.10.2011, 11:41)
---------------------------------------------
насчет смены кодировки: у меня уроки по которым я "учусь" они все написаны с использованием windows-1251... если я поменяю кодировочку то не станут ли все эти уроки бесполезны?

StarkДата: Четверг, 27 Октября 2011, 11:57 | Сообщение # 19
GCUP: Terran Inc.
Сейчас нет на сайте
Andy-go

Кодировка это «набор символов» (англ. character set, charset) у вас сейчас используется windows-1251 читаем как ASCII, но для продакшена лучше использовать utf8 Юникоде так как всякие там люниксоводы, мобайлюзеры испытывают проблемы при виде страниц в ASCII.

из куска вашего кода
Code
<meta http-equiv="content-type" content="text/html; charset=windows-1251">

так вот последнее это кодировка, но замарачиватся особо не стоит если не знаете как безболезненно перекадировать всё.

советую изучить http://php.su/ полностю, большенство вопросов отпадёт само собой.

так и быть если не работает мета рефреш будем использовать php метод переброса а имено

так
Code
if(sendmail($email,$subject,$message,$headers) !== FALSE) {    
                    header("Location: index.php");   
                  }

либо так
Code
if(sendmail($email,$subject,$message,$headers) !== FALSE) {    
                   header("Request-URI: index.php");
                  }

ну или в конце концов вот так
Code
if(sendmail($email,$subject,$message,$headers) !== FALSE) {    
                    header("Content-Location: index.php");
                  }


а если уж и пхп не сработает то попробуем последний вариант с яваскриптом

вот так

Code
if(sendmail($email,$subject,$message,$headers) !== FALSE) {    
                    echo "<script type=\"text/javascript\"> document.location.href = \"index.php\";  </script>";    
                  }


Работаю программистом в ASTED - Разработка сайтов, разработка калькуляторов, квизов и crm
Andy-goДата: Четверг, 27 Октября 2011, 12:12 | Сообщение # 20
участник
Сейчас нет на сайте
с хедером не работает, потому что, как я понял, выше по коду используется оператор echo.

Quote

а если уж и пхп не сработает то попробуем последний вариант с яваскриптом

вот так

Code
if(sendmail($email,$subject,$message,$headers) !== FALSE) {
echo "<script type=\"text/javascript\"> document.location.href = \"index.php\"; </script>";
}


а если и он не работает?... потому что все это я уже попробовал и результат всегда тот - же: страничка обновляется с неё исчезает форма регистрации и остается только картинка, название странички при этом остается тем же (regank.php) sad
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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