PHP 无法从 ActionScript3 接收参数

Posted

技术标签:

【中文标题】PHP 无法从 ActionScript3 接收参数【英文标题】:PHP can't receive a param from ActionScript3 【发布时间】:2014-12-05 09:12:19 【问题描述】:

我已经建立了一个网站并与 actionscript 进行通信。在actionscript中,我正在构建一个函数来调用php函数并发布一个用于从mysql数据库加载数据的变量。问题是当我调用actionscript函数并将变量发布到php时。php端我调用$_POST ['action'];用于从 actionscript 端接收变量,但是当我想查看此帖子时 $_POST['action'];像这样的错误

Notice: Undefined index: action in C:\wamp\www\MPA-EM\bin\model.php on line 3

这是一个调用php的动作脚本函数:

   public function SelectData(TBN:String,TYPE:String):void
        var myrequest:URLRequest = new URLRequest("http://localhost/MPA-EM/bin/model.php");
        myrequest.method = URLRequestMethod.POST;

        var variables:URLVariables = new URLVariables();
        variables.tablename = TBN;
        variables.action = TYPE;
        myrequest.data = variables;

        var loader:URLLoader = new URLLoader();
        loader.dataFormat = URLLoaderDataFormat.VARIABLES;
        loader.addEventListener(Event.COMPLETE, dataOnLoad);
        loader.addEventListener(Event.CANCEL, dataError);

        try
            loader.load(myrequest);
        catch(e:Error)
            Alert.show(e.toString());
        

    

    public function dataOnLoad(evt:Event):void
    
        Alert.show(evt.target.data.Result);
        if(evt.target.data.Result) 
            DText.text = 'ok';
         else DText.text = "Error in select submitted data";

        //status is a custom flag passed from back-end
    
    public function dataError(e:Event) :void

        DText.text = e.target.errormsg;
    

这是一个php函数端model.php:

<?php 
//test for recive
    $actionW = $_POST['action'];//error this line.
    echo $actionW;
// end test

if(isset($_POST['action']) && !empty($_POST['action'])) 
    $action = $_POST['action'];
    echo $action;
    switch($action) 
        case 'select' : 
                    $tablename = clean($_POST['tablename']);
                    selectedData($tablename);
                    break;

        case 'blah' : blah();break;
    


function selectedData($table)
    // create connection
    $connection = mysql_connect("localhost", "root", "") or die ("Couldn't connect to the server.");

    // select database
    $db = mysql_select_db("ideaddcom_maps", $connection) or die ("Couldn't select database.");
    // create SQL
    $sql = 'SELECT * FROM '.$table;

    // execute SQL query and get result
    echo $sql;
    $sql_result = @mysql_query($sql, $connection) or die ("Couldn't execute query.".mysql_error());


    $row = mysql_fetch_object($sql_result);


    foreach($row as $cname => $cvalue)
        echo "Result=$cvalue";

     

    // free resources and close connection
    mysql_free_result($sql_result);
    mysql_close($connection);



//Function to sanitize values received from the form. Prevents SQL injection
function clean($str) 
    $str = @trim($str);
    if(get_magic_quotes_gpc()) 
    $str = stripslashes($str);
    
    return mysql_real_escape_string($str);




?>

怎么了?请对此有任何想法,谢谢。

【问题讨论】:

粗略一看,我认为variables.action = SELECT; 没有执行,这可能意味着SELECT 未定义。您能否包括声明和初始化该变量的位置? 哦,是的,我记得评论说。我已经初始化'SELECT'是文件上方的字符串。 【参考方案1】:

我不知道您是否找到了解决问题的方法,但这可能对其他人有所帮助。

1 - 看看这里,它可以帮助你:Submitting scores from AS3 to PHP/SQL - #Error 2101

2 - 为了避免 PHP Undefined index 注意,您应该始终在使用之前验证您的 var 是否已设置,就像您在第 7 行所做的那样。

3 - 在 PHP 脚本 中避免 所有输出 未被您的 AS 脚本 使用,因为 AS只会得到第一个输出。

4 - 如果您使用forforeach 循环在PHP 脚本 中获取数据,您应该这样做,因为echo 会将数据发送到AS 应该执行一次:

$result = '';
$sep = ',';
foreach($row as $cname => $cvalue)
    $result .= $cvalue . $sep;

echo 'Result='.$result;

【讨论】:

以上是关于PHP 无法从 ActionScript3 接收参数的主要内容,如果未能解决你的问题,请参考以下文章

关于Flash ActionScript3.0加载json数据问题

使用 Actionscript3 将图片从 XML doc 导入 Flash

从 PHP 文件接收 HTTP POST 回显响应(发送 POSTS 工作正常,这是我无法弄清楚的接收)

PHP使用CURL设置header头传参以及设置Content-Type: application/json类型的后台数据接收

无法从 JSON 接收数据 - PHPMyAdmin

变着花样来接参,PHP中接收外部参数的方式