Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   AS3 и данные из PHP (http://www.flasher.ru/forum/showthread.php?t=153674)

Fenrisar 07.04.2011 16:08

AS3 и данные из PHP
 
Который день бьюсь, не могу понять что происходит.. ПХП скрипт работает, данные отправляет..
А вот во флэше не хочет... не присваивает данные.. и либо он их не получает правильно, либо ошибка с присваиванием..
вот код PHP

PHP код:

<?php
session_start
();
include(
"../include/dbconnect.php");
//Подключаюсь к БД
$dbconnect mysql_connect($dbhost$dbuser$dbpass)
or die(
"Не могу подключиться" );
// Выбираю $DB текущей базой данных
mysql_select_db($db$dbconnect) or die ('Не могу выбрать БД');

$user_login $_POST['user_login'];
$user_password $_POST['user_password'];
$userinfo='';
$auto 0;
$r mysql_query("SELECT user_login, user_password FROM site_account WHERE user_login = '$user_login'"); 
//Проверка на наличие такого логина
if(mysql_num_rows($r) > 0){
$userinfo mysql_fetch_assoc($r);
if(
strcmp(md5($user_password),$userinfo['user_password']) == 0) {

$res mysql_query("SELECT uniq_id,plevel FROM site_account WHERE user_login = '$user_login' AND user_password = md5('$user_password')"); 
//Если все отлично дую дальше

$row mysql_fetch_assoc($res);
$variables="uniq_id={$row['uniq_id']}, plevel={$row['plevel']}, auto=1";
$auto 1;
echo(
$variables);
echo (
"plevel_msg=1");
echo (
"return_msg=$auto");

} else {
$result_msg "Неверный пароль";
echo (
"return_msg=$result_msg");
}
} else {
$result_msg "Неверное имя пользователя";
echo (
"return_msg=$result_msg");
}
}

session_destroy();
?>

echo($variables);
echo ("plevel_msg=1");
echo ("return_msg=$auto");
Сделано для проверки где могла быть ошибка с присвоением в самом флеше.. проверял что он через $variables делает.. и что на прямую.. правда ничего не помогло :) в конечном счете остаться должно только echo($variables);

Теперь код из AS3
Код AS3:

//Останавливаем игру ролика
stop();
 
//Курсор в окне ввода логина
stage.focus=login_txt;
 
//Текстовые поля для вывода системных сообщений
var log_status_txt:TextField = new TextField();
 
log_status_txt.x = 170;
log_status_txt.y = 65;
log_status_txt.selectable = false;
log_status_txt.autoSize = TextFieldAutoSize.CENTER;
addChild(log_status_txt);
 
//Объявляем переменные
var user_login:String;
var user_password:String;
var user_id:int;
var plevel:int;
var uniq_id:String;
var auto:int;
var regVis:Boolean;
 
var variables:URLVariables = new URLVariables(); //хранилище переменных для передачи в скрипт
var varLogin:URLRequest = new URLRequest("data/login.php");
varLogin.method = URLRequestMethod.POST;
varLogin.data = variables;
 
var varLoader:URLLoader = new URLLoader();
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);
 
//Функция для отображения обработки PHP скрипта и возврата статуса
function completeHandler(event:Event):void{
        pass_txt.text = "";
 
        plevel = event.target.data.plevel_msg;
        uniq_id = event.target.data.variables.uniq_id;
        auto = event.target.data.return_msg;
 
        if (auto == 0){
                log_status_txt.text = ("Auto: " + auto + " Uniq_id: " + uniq_id + " Plevel: " + plevel);
        } else {
                log_status_txt.text = ("Auto: " + auto + " Uniq_id: " + uniq_id + " Plevel: " + plevel);
        }
 
}
 
//Отслеживания нажатия комбинации клави для регистрации
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyPressed);
 
function onKeyPressed(evt:KeyboardEvent):void {
        if (evt.keyCode == Keyboard.F2 && evt.ctrlKey == true){
                reg_btn.visible=!reg_btn.visible;
        }
}
 
reg_btn.visible=regVis;
 
//Отслеживание нажатия на кнопку регистрации
reg_btn.addEventListener(MouseEvent.CLICK, ButtonRegScreenPressed, false, 0, true);
 
//Функция отправки данных регистрации
function ButtonRegScreenPressed(event:MouseEvent):void{
        gotoAndStop(2)
}//Закрыта функция перехода на страницу регистрации
 
//Отслеживание нажатия на кнопку входа
login_btn.addEventListener(MouseEvent.CLICK, buttonLoginPressed, false, 0, true);
 
//Функция проверки данных логина
function buttonLoginPressed(event:MouseEvent):void{
        //Проверка введенных данных
        log_status_txt.text = "";
        if(login_txt.length < 1){
                log_status_txt.text = "Введите имя пользователя";
        } else if(pass_txt.length < 1){
                log_status_txt.text = "Введите пароль";
        } else {
                //Все данные верны.
 
                //Подготовка данных для отправки в файл PHP скрипт
                variables.user_login = login_txt.text;
                variables.user_password = pass_txt.text;
 
                //Отправка данных в PHP скрипт
                varLoader.load(varLogin);
        }//Закрыт IF и все Else
 
}//Закрыта функция отправки данных

plevel = event.target.data.plevel_msg;
uniq_id = event.target.data.variables.uniq_id;
auto = event.target.data.return_msg;

а тут кокрас проверял по какому типу что он мне выдаст, в итоге ничего нигде не присвоил... т.е. текст получился такой
log_status_txt.text = Auto: 0 Uniq_id: null Plevel: 0

2Sun 07.04.2011 18:46

Я принимаю данные вот так:
Код:

public function onComplete (event:Event):void{
var variables:URLVariables = new URLVariables( event.target.data );
var var1=variables.VAR1;
var var2=variables.VAR2;
var var3=variables.VAR3;
}


Fenrisar 08.04.2011 14:50

Спасибо, данные получаю теперь :)
добавил
Код AS3:

function completeHandler(event:Event):void{
        pass_txt.text = "";
        var variables:URLVariables = new URLVariables( event.target.data );
        var uniq_id = variables.uniq_id;
        var plevel = variables.plevel;
        var auto = variables.auto;
        if (auto == 0){
                log_status_txt.text = ("Uniq_id: " + uniq_id + " Plevel: " + plevel + " Auto: " + auto);
        } else {
                log_status_txt.text = ("Uniq_id: " + uniq_id + " Plevel: " + plevel + " Auto: " + auto);
        }
}

Но выводит log_status_txt.text = Uniq_id: 098f6bcd4621d373cade4e832627b4f6 plevel=6, auto=1 Plevel: 0 Auto: 0

Т.е. он все данные забивает тут uniq_id = variables.uniq_id;
А в plevel и auto ничего не пишет..

я так понимаю у меня ошибка тогда с присвоением в php скрипте какая-то:
PHP код:

$res mysql_query("SELECT uniq_id,plevel FROM site_account WHERE user_login = '$user_login' AND user_password = md5('$user_password')"); 

$row mysql_fetch_assoc($res);
$variables="uniq_id={$row['uniq_id']}, plevel={$row['plevel']}, auto=1"


Fenrisar 11.04.2011 13:23

не работает
Код AS3:

public function onComplete (event:Event):void{
var variables:URLVariables = new URLVariables( event.target.data );
var var1=variables.VAR1;
var var2=variables.VAR2;
var var3=variables.VAR3;

он мне забивает все прям в первую переменную.... всю строку(три параметра).. что присваивается в php к переменной variables...
PHP код:

$variables="uniq_id={$row['uniq_id']}, plevel={$row['plevel']}, auto=1"

Выглядит это так uniq_id=123213 plevel=6 auto=1, plevel=null, auto=null

Код AS3:

public function onComplete (event:Event):void{
var variables:URLVariables = new URLVariables( event.target.data );
var uniq_id=variables.uniq_id;
var plevel=variables.plevel;
var auto=variables.auto;

Могли бы вы написать как выглядит у вас присваивание в php?

2Sun 11.04.2011 16:14

PHP код:

echo (uniq_id={$row['uniq_id']}&plevel={$row['plevel']}&auto=1); 

вот так попробуйте отослать

Fenrisar 11.04.2011 22:33

Uniq_id=undefined Plevel=undefined Auto=undefined
что и логично.. т.к. ни к какой переменной не относится.. а в АС скрипте присваивание не меняли

ZZZubec 11.04.2011 23:48

PHP код:

echo ( "uniq_id={$row[uniq_id]}&plevel={$row[plevel]}&auto=1"); 

надеюсь кавычки не забыли? (Если не забыли, то убедитесь в том, что эта страница выдает правильные данные)
а почему не использовать стандарты JSON или XML? Но в любом случае, это Ваш выбор.

2Sun 12.04.2011 01:58

Цитата:

Сообщение от ZZZubec (Сообщение 988637)
PHP код:

echo ( "uniq_id={$row[uniq_id]}&plevel={$row[plevel]}&auto=1"); 

надеюсь кавычки не забыли? (Если не забыли, то убедитесь в том, что эта страница выдает правильные данные)
а почему не использовать стандарты JSON или XML? Но в любом случае, это Ваш выбор.

я на самом деле вместо кавычем скобки написал :) , опечатка.
Правильно вот так
PHP код:

echo "uniq_id={$row['uniq_id']}&plevel={$row['plevel']}&auto=1"

если вы переменные в пхп не забыли присвоить ДО отправки - то в флаш все прийдет в эти переменные, вы ведь ее объявляете уже в AS3, а из пхп передаете именно uniq_id, plevel, auto

Код:

var variables:URLVariables = new URLVariables( event.target.data );
var uniq_id=variables.uniq_id;
var plevel=variables.plevel;
var auto=variables.auto;


Fenrisar 12.04.2011 02:17

да :) ковычки помогли на самом деле :D их добавил и все заработало.. спасибо :)


Часовой пояс GMT +4, время: 10:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.