简体   繁体   中英

Passing arrays from Flash to PHP

I am having a problem passing an array variable from Flash (AS2) to PHP. In action script I have several arrays defined like this

output["px1"]
output["px2"]
output["px3"]

and then I use the following code to pass the variables into a php file

output.sendAndLoad("orders/print2cart.php",output,"POST");

I want to know how to get the data from the array in PHP. I have tried using $_POST['px1'] , $_POST['output']['px1'] , $_POST['output'] but I cannot seem to get any data. Any ideas as to what I can change to get the desired result?

Thanks!

EDIT: Just noticed that I one of the other variables in output (output.username) is also not being sent to PHP, despite it showing up in flash. Using the following code to alert to flash and it does show all the variables correctly. getURL("javascript:alert('Print Stamp: " + output.PrintStamp + " User: " + output.username "')");

EDIT: Seems like once I send a pretty long array (or a string for that matter) none of the other fields associated with the LoadVars variable are sent either. I googled it up for limits and it says text limits are ~ 63000. Still not sure if that is the problem

Try it as a String.

Use Array.join(); in flash and send the value returned by that, then use explode() in PHP convert it back to an array.

var dataOut:LoadVars = new LoadVars();
var dataIn:LoadVars = new LoadVars();

dataOut.info = your_array.join("#");

vars.sendAndLoad("url", dataIn, "post");

dataIn.onLoad = function(go:Boolean):Void
{
    if(go)
    {
        trace('success');
    }
    else trace('connection failed');
}

The PHP:

<?php
    $str = $_POST["info"];
    $myarray = explode($str);
?>

You can do the same as you would do with HTML, by naming your parameters "array[0]", "array[1]", etc... :

    var urlVariable:URLVariables = new URLVariables();
    urlVariable["phpArray[0]"] = "arrayEntry0";
    urlVariable["phpArray[1]"] = "arrayEntry1";

    var loader:URLLoader = new URLLoader();
    var request:URLRequest = new URLRequest("http://yourserver.com/phpScript.php");
    request.method = URLRequestMethod.POST;
    request.data = urlVariable;

    loader.load(request);

then serverside you can verify the result received by php script :

    print_r($_POST);

it should output :

    Array
    (
        [phpArray] => Array
            (
                [0] => arrayEntry0
                [1] => arrayEntry1
            )
    )

and for multiple dimension array you can use :

    urlVariable["phpArray[0][0]"] 

Since there were no other alternatives and I went through a lot of stuff before finally concluding that Arrays of large sizes cannot be passed through from AS2 to PHP very easily. My array was actually an image converted to pixels, so what I did was that I split the array into 2 pieces and posted to the PHP file twice instead of only once. Another alternative would be to split and post the array to a text file first and then read that text file directly from PHP.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM