Сегодняшний наш урок не просто объясняет взаимодействие Flash+PHP+MySQL, а объясняет это на примере модуля входа нашего совместного проекта. В примере будет представлен не он сам, а лишь его начальная версия, без анимаций, графики и так далее.
Урок состоит из fla-файла с элементами управления и кодом написаным на АС3 и php-скрипта, который осуществляет связь с БД на MySQL. Сама БД расположена на локальном хосте (на флехе воткнутой в мой комп))) поэтому работоспособность того что у вас получиться можно будет только если вы установите Денвер (как пример) на свой комп и создадите там сами БД.
1) Интерфейс:
Нам необходимо 2 поля ввода текста, у меня это 2 компанента ImputText с именами log_it и pas_it.
Кнопка vhod_btn.
Мовиклип msg_win (прямоугольник серого цвета у меня) с расположеным на нем динамическим текстовым полем msg_dt.
2) Код АС3 с коментариями
3) php-скрипт vhod.php с коментариями
4) Исходник fla-файла mod_vhoda_1.fla
Источник: http://easyflash.org/
Урок состоит из fla-файла с элементами управления и кодом написаным на АС3 и php-скрипта, который осуществляет связь с БД на MySQL. Сама БД расположена на локальном хосте (на флехе воткнутой в мой комп))) поэтому работоспособность того что у вас получиться можно будет только если вы установите Денвер (как пример) на свой комп и создадите там сами БД.
1) Интерфейс:
Нам необходимо 2 поля ввода текста, у меня это 2 компанента ImputText с именами log_it и pas_it.
Кнопка vhod_btn.
Мовиклип msg_win (прямоугольник серого цвета у меня) с расположеным на нем динамическим текстовым полем msg_dt.
2) Код АС3 с коментариями
Код:
var log_usr:String; // логин
var pas_usr:String; // пароль
var id_usr:int; // код пользователя
var vhod_var:URLVariables = new URLVariables(); //хранилище переменных для передачи в скрипт
var vhod_req:URLRequest = new URLRequest("http://testmags/vhod.php");
var vhod_ldr:URLLoader = new URLLoader();
var mail_mask:RegExp = /([a-zA-Z]?[0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}/; // шаблон для проверки почтового адреса
var pass_mask:RegExp = /[a-zA-Z]?[0-9a-zA-Z]*/; // шаблон для проверки формата пароля
var words:Array = new Array; // массив для хранения разбитых строк
var err_win:msg_win = new msg_win; // окно вывода ошибок
var win_tmr:Timer = new Timer(4000, 1); //таймер - определяет как долго будет висеть окно ошибок
vhod_req.method = URLRequestMethod.POST; //метод POST
vhod_btn.addEventListener(MouseEvent.CLICK, onclickiVhod, false, 0, true); // обработчик нажатия кнопки Вход
function onclickiVhod(e:MouseEvent):void { // обработка нажатия кнопки вход
if ((log_it.text == "")||(pas_it.text == "")) { //если какое то поле пустое, то...
error(-3);
return;
}
/*-----Проверка правильности ввода логина (адреса почты)-----*/
words = log_it.text.split(" "); // выделяем первое слово из строки (авось ввели 2 или больше)
log_usr = words[0];
if (!mail_mask.test(log_usr)) { // проверка формата
error(-4);
return;
}
/*-----Проверка правильности пароля (1-я буква и содержит только цыфры и буквы латыни)-----*/
words = pas_it.text.split(" "); // выделяем первое слово из строки (авось ввели 2 или больше)
pas_usr = words[0];
if (!pass_mask.test(pas_usr)) { // проверка формата
error(-5);
return;
}
if ((pas_usr.length < 4)||(pas_usr.length > 20)) { // проверка на длинну пароля
error(-6);
return;
}
vhod_ldr.addEventListener(Event.COMPLETE, completeHandler, false, 0, true); // обработчик загрузки данных из скрипта
vhod_var.log_usr = log_usr; //загрузка переменных
vhod_var.pas_usr = pas_usr;
vhod_req.data = vhod_var;
vhod_ldr.dataFormat = URLLoaderDataFormat.TEXT; // определяем формат получения данных
try {
vhod_ldr.load(vhod_req); // передаем переменные в скрипт и получаем результат
}
catch (err:Error) {
error(-7); //если неудачно то ошибка
}
}
function completeHandler(e:Event):void { //обработка результатов от скрипта
vhod_ldr.removeEventListener(Event.COMPLETE, completeHandler);
id_usr = int(Number(e.target.data)); //записываем результат как номер пользователя (число больше 0) или код ошибки (- число)
if (id_usr < 0) { // обработка кодов ошибок
error(id_usr);
return;
}
/*-------- тут будет загрузка и открытие основной swf-игры ---------*/
}
function error(cod:int):void { // вывод сообщений об ошибке
vhod_btn.removeEventListener(MouseEvent.CLICK, onclickiVhod); //отключаем обработку кнопки Вход
switch (cod) {
case -1:
err_win.msg_dt.text = "Неудалось подключиться к базе данных. Попробуйте позже.";
break;
case -2:
err_win.msg_dt.text = "Такого пользователя не существует. Возможно вы допустили ошибку при вводе данных.";
break;
case -3:
err_win.msg_dt.text = "Одно из полей ввода не заполнено. Логин и пароль не должны быть незаполненными.";
break;
case -4:
err_win.msg_dt.text = "Неправильный формат адреса почты";
break;
case -5:
err_win.msg_dt.text = "Неправильный формат пароля. Только латинские буквы и цифры";
break;
case -6:
err_win.msg_dt.text = "Некорректная длинна пароля. Допустимая длинна от 4 до 20 символов.";
break;
case -7:
err_win.msg_dt.text = "Сервер не доступен.";
break;
}
err_win.x = 133;
err_win.y = 130;
addChild(err_win); //окно ошибок на экран
win_tmr.addEventListener(TimerEvent.TIMER, closeWin, false, 0, true);
win_tmr.start(); //запускаем таймер для стирания окна ошибок
}
function closeWin(e:TimerEvent):void { //убираем окно ошибок
win_tmr.removeEventListener(TimerEvent.TIMER, closeWin);
vhod_btn.addEventListener(MouseEvent.CLICK, onclickiVhod, false, 0, true); // включаем обработку кнопки Вход
removeChild(err_win); //стираем окно }
Код:
<?php
include ("connect.php"); // загрузка переменных для подключения к БД из другого скрипта
$log_usr = $_POST['log_usr']; // получаем логин
$pas_usr = $_POST['pas_usr']; // получаем пароль
@ $connect_DB = mysql_pconnect($hostname, $username, $password); //соединение с БД
if (!$connect_DB) {
echo "-1"; // вывод кода ошибки -1: не удалось подключиться к БД
exit; // закрыть скрипт
}
mysql_select_db ("BDG"); // выделяем нашу БД
$query = "SELECT * FROM users_tbl WHERE log_usr='".$log_usr."' AND pas_usr='".$pas_usr."'"; //формируем запрос к БД
$result = mysql_query($query); //выполняем запрос
$num_results = mysql_num_rows($result); //получаем количество строк в результате запроса
if ($num_results == 0) {
echo "-2"; // вывод кода -2: такого пользователя нет
exit; // закрыть скрипт
}
$row = mysql_fetch_array($result); //преобразуем результат запроса в массив
echo $row['id_usr']; //выводим код пользователя во флешку
?>
4) Исходник fla-файла mod_vhoda_1.fla
Источник: http://easyflash.org/