Вход

уроки, мануалы, советы по Construct 2

Сообщение Вход
» 14 июн 2014, 15:30

Вход

И снова здравствуйте :hi: . В прошлом моём уроке я рассказал, как реализовать регистрацию. Зарегистрироваться то мы зарегистрировались, а дальше что? А дальше надо войти! В этом уроки я буду использовать те же самые TextBox и Botton, потому, что мне так удобнее. Вот тут можно увидеть альтернативный им вариант. Так же, для более ясного понимания урока следует прочитать предыдущий урок.

Начнем! Открываем наш проект Construct 2 и создаём новый Layout, соглашаясь на создание Event Sheet для него. На нём расставляем те же объекты так же, как и на предыдущем уроке, только Заглавный текст меняем на «Вход», а текст кнопки на «Войти». Ну и для красоты изменить в тексте прогресса «Зарегистрироваться» на «Войти».
1.PNG

Дальше открываем наш любимый Notepad ++ и создаём новый файл. Я назову его «enter.php», чего и вам советую. Теперь копируем в него первые 10 строчек кода регистрации – здесь у нас открывается код, разрешаются кроссдоменные запросы, присваиваются всякие пароли-логины к переменным и подключаемся к базе данных. Еще надо закрыть код. В общем получаем что-то вроде этого:
2.PNG

Вместо звездочек у вас ваш пароль конечно. Я вам свой не покажу :acute: . Теперь присвоим переменным username и password значения присылаемых данных. Проверка на наличие данных нам не нужна, так как если ничего не введено, то и войти не получится. Зачем всё усложнять?
3.PNG

Теперь нужно извлечь из базы данных пароль пользователя, и сравнить его с тем, что мы получили от Construct’а. Вообще функция mysql_query отправляет команду в базу данных. Для получения пароля пользователя она должна иметь такой вид:
Код: Выделить всё
 mysql_query("SELECT password FROM registration WHERE username='".$username."'");

Далее всё как на скрине (я всё прокомментировал).
4.PNG

Вот и весь скрипт! Теперь заливаем всё это дело на сервер и пробуем зайти через браузер. Если всё правильно, то нам сообщают, что нет такого пользователя. Теперь идем в С2 и копируем первый эвент регистрации (нам ведь нужно проделать всё то же самое – отправить данные). Но не забудьте поменять ссылку с регистрационного скрипта, на наш enter.php. Теперь второй евент копируем :biggrin: .
Пробуем войти (если вы помните, я в прошлый раз зарегистрировался, как endermAH с паролем 123456). Получилось? А теперь попробуйте увеличить текстовое поле:
5.PNG

И увидите вы такую пренепеятнейшую вещь…
6.PNG

(У меня тут с кодировкой что то стряслось, но если посчитать вопросики, то получится как раз «Всё верно») На самом деле избавиться от этого довольно таки просто: вместо AJAX.LastData вставим такое выраженьице:
Код: Выделить всё
 tokenat(AJAX.LastData, 0, "<!-- Hosting24 Analytics Code -->")

7.PNG

Вот и всё!
Спасибо за прочтение. Если что-то непонятно – спрашивайте, я постараюсь ответить.
Скачать урок:
Вход.docx
(275.88 КБ) Скачиваний: 130
Аватара пользователя

Модератор
Сообщений: 2154
Я тут с 11 окт 2013
Откуда: Челябинск
Двиг: С2
Лицензия: Pirate
VK: night_silent
Репутация 223 [ ? ]

Сообщение Вход
» 16 июн 2014, 06:04

endermAH писал(а):У меня тут с кодировкой что то стряслось, но если посчитать вопросики

после
Код: Выделить всё
@header('Access-Control-Allow-Origin: *');

добавь
Код: Выделить всё
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci'");


так же посмотри кодировку файла самого, должен быть в utf8 , ну и у базы таблицы в utf8_general_ci
Если помогли ? скажи спасибо нажав Изображение

Оптимизация проектов на С2 || ТОП рекордов Онлайн

Изображение
Аватара пользователя

Игродел
Сообщений: 329
Я тут с 18 апр 2014
Откуда: астрал
Репутация 46 [ ? ]

Сообщение Вход
» 16 июн 2014, 10:25

Спасибо, но уж сам разобрался :)
Аватара пользователя

Модератор
Сообщений: 2154
Я тут с 11 окт 2013
Откуда: Челябинск
Двиг: С2
Лицензия: Pirate
VK: night_silent
Репутация 223 [ ? ]

Сообщение Вход
» 18 июн 2014, 04:37

и еще бы на ошибочки и опечатки проверить )
Аватара пользователя

Администратор
Сообщений: 2393
Я тут с 06 сен 2012
Откуда: Санкт-Петербург, Южно-Сахалинск
Skype: sirg1987
Репутация 261 [ ? ]

Сообщение Вход
» 18 июн 2014, 08:13

На ошибочки вред проверял, а очепятку пока только одну нашел...
Аватара пользователя

Модератор
Сообщений: 2154
Я тут с 11 окт 2013
Откуда: Челябинск
Двиг: С2
Лицензия: Pirate
VK: night_silent
Репутация 223 [ ? ]

Сообщение Вход
» 24 июл 2014, 10:53

Проблема...
Окно регистрации на любой ник выдает он не зарегистрирован хотя данный ник есть в баззе данных.
Вот код
ЗЫ база данных называется result_table.

 
<?php
header ('Access-Control-Allow-Origin: *');

$mysql_host = "mysql3.000webhost.com";
$mysql_database = "a7728833_zombim";
$mysql_user = "a7728833_zmot";
$mysql_password = " :cray: ";

$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибочка вышла...");
mysql_select_db($mysql_database, $link) or die ("Ой...");//Подключились к базе

$usarname = $_POST['username'];
$password = $_POST['password'];

$q1=mysql_query("SELECT password FROM result_table WHERE username='".$username."'");
if(mysql_num_rows($q1) === 0)
{
echo "Нет такого пользователя!";
}
else
{
$real=mysql_result($q1,0);
If($real === $password)
{
echo "Все верно!";
}
else
{
echo" Такой комбинации не обнаружено!";
}
}
?>
Аватара пользователя

Участник
Сообщений: 45
Я тут с 10 июн 2014
Репутация 0 [ ? ]

Сообщение Вход
» 24 июл 2014, 14:42

Вот тут:
Код: Выделить всё
if(mysql_num_rows($q1) === 0)

три равно, так и надо? Три равно - не замечает регистр, зачем они здесь? Попробуй == постаить. Может из-за этого?
Пы.Сы. Для кода есть спец тег, глянь сюда
Аватара пользователя

Модератор
Сообщений: 2154
Я тут с 11 окт 2013
Откуда: Челябинск
Двиг: С2
Лицензия: Pirate
VK: night_silent
Репутация 223 [ ? ]

Сообщение Вход
» 24 июл 2014, 15:30

endermAH писал(а):Вот тут:
Код: Выделить всё
if(mysql_num_rows($q1) === 0)

три равно, так и надо? Три равно - не замечает регистр, зачем они здесь? Попробуй == постаить. Может из-за этого?

Исправил === на == таже проблема
Аватара пользователя

Участник
Сообщений: 45
Я тут с 10 июн 2014
Репутация 0 [ ? ]

Сообщение Вход
» 24 июл 2014, 15:47

endermAH писал(а):if(mysql_num_rows($q1) === 0)

Может збросишь/выложишь PHP исходник свой.И я посмотрю в чем у меня ошибка?
Аватара пользователя

Участник
Сообщений: 45
Я тут с 10 июн 2014
Репутация 0 [ ? ]

Сообщение Вход
» 24 июл 2014, 19:39

Код: Выделить всё
<?php
header ('Access-Control-Allow-Origin: *');//Разрешили кроссдоменные запросы

$mysql_host = "mysql2.000webhost.com";
$mysql_database = "a3229857_lesson";
$mysql_user = "a3229857_reg";
$mysql_password = "------";

$link = mysql_connect($mysql_host, $mysql_user, $mysql_password) or die("Ошибочка вышла...");
mysql_select_db($mysql_database, $link) or die ("Ой...");//Подключились к базе

$username = $_POST['username'];
$password = $_POST['password'];

$q1 = mysql_query("SELECT password FROM registration WHERE username='".$username."'");//Присваиваем идентификатор переменной
      if(mysql_num_rows($q1) == 0)//проверяем: есть ли такой пользователь
         {
            echo "Нет такого пользователя!";//Тут всё ясно
         }
         else
         {
            $real = mysql_result($q1, 0);//Извлекаем сам пароль (если есть такой пользователь!!!)
            if ($real === $password)//Сравниваем полученный парль (ставим регистрозависимое ===)
               {   
                  echo "Всё верно!";//Тут понятно
               }
               else
               {
                  echo "Такой пары ник-пароль не обнаружено!";//Тут так же понятно ))
               }   
         }
?>
Аватара пользователя

Модератор
Сообщений: 2154
Я тут с 11 окт 2013
Откуда: Челябинск
Двиг: С2
Лицензия: Pirate
VK: night_silent
Репутация 223 [ ? ]



Вернуться в Уроки по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх