Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   GET POST и URL (http://www.flasher.ru/forum/showthread.php?t=172995)

Monompadin 21.12.2011 16:15

GET POST и URL
 
Мне нужно из флеша передать данные в пхп там что то с ними сделать и вернуть ответ
Я пытаюсь реализовать это так:

Код AS3:

        var stat_loader:URLLoader = new URLLoader();
        var stat_request:URLRequest = new URLRequest("http://(мой сайт).com/logind.php");
        stat_request.method = URLRequestMethod.POST;
        var stat_vars:URLVariables = new URLVariables();
        stat_vars['login'] = String(Object(this).puno.logk.text);
        stat_vars['pass'] = String(Object(this).puno.ps.text);       
 
 
        //var loaderr:URLLoader = new URLLoader();
        //var krequest:URLRequest = new URLRequest("http://(мой сайт).com/logind.php");
// Две строчки выше не дают нужного результата и выдают ошибку.
        stat_request.method = URLRequestMethod.GET;
        stat_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
        stat_loader.addEventListener(Event.COMPLETE, completeHandler);
        stat_loader.load(stat_request);
        function completeHandler(evt:Event)
        {
                njkl = evt.target.data.pkl;
                Object(this).puno.logk.text = evt.target.data.llg;
                Object(this).puno.ps.text = evt.target.data.llp;                       
        }

но при попытке исполнить код, выдаёт вот что:

Код:

Error #2044: Необработанный IOErrorEvent:. text=Error #2035: URL-адрес не обнаружен.
Error: Error #2101: Строка, переданная в URLVariables.decode(), должна быть строкой запроса закодированного URL-адреса и содержать пары имя/значение.
        at Error$/throwError()
        at flash.net::URLVariables/decode()
        at flash.net::URLVariables()
        at flash.net::URLLoader/onComplete()

Я вычислил, что проблема где то в части кода с приёмом из пхп.
Пытался задавать юрл для GET в отдельных лоадерах и реквестах, не опмогло.

BuKT 21.12.2011 16:18

1) Вам нужен POST запрос, чтобы правильно передавать URLLoaderDataFormat.VARIABLES.
2) Вы нигде не присваиваете переменные реквесту.

DaFive 21.12.2011 16:56

Да и URL-адрес неверный, вам таки и написали там.

Monompadin 21.12.2011 17:08

Дело в том что отдельно POST работает нормально (то есть для него эта ссылка рабочая), а вот если приписать GET и орпеделить для GETа тот же реквест и лоадер (или даже если назначить свои, на тот же сайт) он выдаёт ошибку.

DaFive 21.12.2011 17:21

Так в гете только и передать можно через ? и & между переменными.

Monompadin 21.12.2011 18:11

Цитата:

Сообщение от DaFive (Сообщение 1052863)
Так в гете только и передать можно через ? и & между переменными.

А можно по подробнее?))

DaFive 21.12.2011 18:15

Код AS3:

var login:String = String(Object(this).puno.logk.text);
var pass:String =  String(Object(this).puno.ps.text);       
var stat_request:URLRequest = new URLRequest("http://(мой сайт).com/logind.php?login="+login+"&pass="+pass);


Monompadin 21.12.2011 18:59

Цитата:

Сообщение от DaFive (Сообщение 1052880)
Код AS3:

var login:String = String(Object(this).puno.logk.text);
var pass:String =  String(Object(this).puno.ps.text);       
var stat_request:URLRequest = new URLRequest("http://(мой сайт).com/logind.php?login="+login+"&pass="+pass);


Исправил так:
Код AS3:

        var login:String = String(Object(this).puno.logk.text);
        var pass:String =  String(Object(this).puno.ps.text);       
        var stat_loader:URLLoader = new URLLoader();
        var stat_request:URLRequest = new URLRequest("http://(проверненная ссылка на сайт)/logind.php?login="+login+"&pass="+pass);
        stat_request.method = URLRequestMethod.GET;
        stat_loader.dataFormat = URLLoaderDataFormat.VARIABLES;
        stat_loader.addEventListener(Event.COMPLETE, completeHandler);
        stat_loader.load(stat_request);
        function completeHandler(evt:Event)
        {                       
                njkl = evt.target.data.pkl;
                Object(this).puno.logk.text = evt.target.data.llg;
                Object(this).puno.ps.text = evt.target.data.llp;                       
        }

Текст ошибки тот же, не пойму в чем проблема((

ivaha83 21.12.2011 19:16

Цитата:

Сообщение от BuKT (Сообщение 1052848)
1) Вам нужен POST запрос, чтобы правильно передавать URLLoaderDataFormat.VARIABLES.
2) Вы нигде не присваиваете переменные реквесту.

Вам же BuKT говорит, что надо сделать. Вы второй пункт выполните, как предлагает документация Adobe. А точнее

Код AS3:

stat_vars['login'] = String(Object(this).puno.logk.text);
stat_vars['pass'] = String(Object(this).puno.ps.text);
stat_request.data = stat_vars;

и не надо руками собирать запрос через ? и &. Потому что когда собираете его руками не факт, что он получится URL-кодированным.

in4core 21.12.2011 20:04

Код AS3:

var login:String = String(Object(this).puno.logk.text);

Не ну это же ппц просто

Код AS3:

var login:String = this.puno.logk.text;


maxkar 21.12.2011 20:30

Цитата:

Сообщение от Monompadin (Сообщение 1052893)
Текст ошибки тот же, не пойму в чем проблема((

Ответ сервера приведите полностью. Скорее всего, он в неверном формате.

Monompadin 22.12.2011 18:17

Цитата:

Сообщение от maxkar (Сообщение 1052911)
Ответ сервера приведите полностью. Скорее всего, он в неверном формате.

Такое появляется при открытии php файла в браузере
Код:

5 pkl=dd&llg=sl&llp=sk
Значения переменных заданы в php т.е. не предаютя из sql

php код

PHP код:

<?php
include("blocks/bd.php");
$recam= mysql_query ("SELECT pid FROM logging ",$db);
$att = mysql_fetch_array($recam);
$log  = $_POST['login'];
$pass  = $_POST['pass'];
do
{
    
$TDK = $att['pid'];
}
while (
$att = mysql_fetch_array($recam ));
echo (
$TDK); 
?>

<?php 

include("blocks/bd.php");
$kodee = 0;

do{
$result = mysql_query ("SELECT login,pass FROM logging WHERE pid='$TDK'",$db);
$lgt = mysql_fetch_array($result);
if (
$log == $lgt['login']  )
{
    if (
$pass == $lgt['pass']  )
{
$pdd =    $lgt['pid'];
$psl=$lgt['login'];
$psk=$lgt['pass'];

}
}
else
{
$pdd =    '0';    
}
$kodee = $kodee + 1;
//
}while ($kodee < ($TDK + 1));
echo 
$myrow['news_pun'];
?>


<?php 


$empir
=$returnVars ;
$returnVars = array();

//$returnVars['pkl']="$pdd";
//$returnVars['llg']="$psl";
//$returnVars['llp']="$psk";

$returnVars['pkl']="dd";
$returnVars['llg']="sl";
$returnVars['llp']="sk";


$returnString = http_build_query($returnVars); 
echo 
$returnString; 
?>

По сути, сейчас важна только самая нижняя часть кода т.к. там всё и отправляется.

maxkar 22.12.2011 19:20

В браузере будет только GET. В сниффере каком-нибудь посмотрите, что именно шлет флешка и что шлет сервер в ответ. Можно firebug взять, можно - httpfox.

Monompadin 22.12.2011 19:59

У меня у же работает POST, но отдельно от GETа, вместе пока ни как((

Добавлено через 21 минуту
Цитата:

Сообщение от maxkar (Сообщение 1053134)
В браузере будет только GET. В сниффере каком-нибудь посмотрите, что именно шлет флешка и что шлет сервер в ответ. Можно firebug взять, можно - httpfox.

Проверил в чалесе, действительно только нет, и как быть?((


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

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