ugrás a tartalomhoz

PHP és AS3

jtrencsenyi · 2008. Május. 19. (H), 19.03
Sziasztok!

SŰRGŐS segítségre szorulok. Adott egy más által írt php script, amivel kommunikálnom kellene Actionscript 3 alól. Egész pontosan két db változót (uid, uname) kellene átvennem és némi AS3 tevékenység után visszadanom ugyanennek a scriptnek két db változót (uid, uscore).

Ime a php script:

<?php

$EOL="<br>\n";
// -----------------------------------------
// get function

function get_userdata()
{
  $t= time();
  echo "&uid=$t&uname=gizike";
  return;
}

// -----------------------------------------
// put function
// -----------------------------------------
function put_userdata($uid, $uscore)
{
  echo "id=[$uid]";
  echo "uscore=[$uscore]";
  return;
}
// module body
// echo basename(__FILE__)." running ...$EOL";
if ($_GET["func"] == "get")
{
  get_userdata();
}

if ($_GET["func"] == "put")
{
  put_userdata($_GET["uid"], $_GET["uscore"]);
}
// echo basename(__FILE__)." ready.$EOL";
?>
Elvileg mindkét mindkét esetben get-es hívást vár a script.

Amikor adatot küld az AS3 felé, akkor így kell meghívni:

http://www.mydomain.com/myscript.php?func=get

Ekkor kellene AS3-ban beolvasni változókba az uid és az uname értékét, majd amikor lefutott az AS3-as program, akkor az visszaadná a uid és az uscore változókat a php script felé, valahogy így:

http://www.mydomain.com/myscript.php?func=get&uid=007&uscore=12345

Szóval nagyon hálás lennék, ha valamelyik AS3 guru segítene nekem, mert ez az URL VARS rész totál homályos folt számomra. A gondom csak az, hogy tegnapra kellene. :)
 
1

Próbálkoztam tovább :)

jtrencsenyi · 2008. Május. 19. (H), 19.06
Sziasztok!

Még valami... Az alábbi AS3 és PHP kódot próbáltam ki a szerverünkön és mindig a httpStatusHandler event handler hívódik meg, soha nem jut el a completeHandler-ig. Mi okozhatja?
Egyébként a httpStatusHandler a következőt írja ki:
[HTTPStatusEvent type="httpStatus" bubbles=false cancelable=false eventPhase=2 status=0]

package
{
	import flash.display.*;
	import flash.text.*;
	import flash.events.*;
	import flash.net.*;

	public class main extends Sprite

	{


		public var label1:TextField;
		public var label2:TextField;
		public var label3:TextField;
		public var label4:TextField;
		public var label5:TextField;

		public function main():void

		{

			label1  = createTextField(0, 360, 200, 20);
			label2  = createTextField(0, 380, 200, 20);
			label3  = createTextField(0, 400, 200, 20);
			label4  = createTextField(0, 420, 200, 20);
			label5  = createTextField(0, 440, 200, 20);

			var variables:URLVariables = new URLVariables();
			var request:URLRequest = new URLRequest("http://www.mydomain.com/myScript.php");
			request.method = URLRequestMethod.GET;
			request.data = variables;
			
			var loader:URLLoader = new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.VARIABLES;
			loader.addEventListener(Event.COMPLETE, completeHandler);
			loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
			loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
			loader.load(request);
			label1.text = variables.data.uname;
		}

		public function httpStatusHandler(e:Event):void
		{
			label2.text = "httpStatusHandler:" + e;
		}

		public function securityErrorHandler(e:Event):void
		{
			label3.text = "securityErrorHandler:" + e;
		}

		public function ioErrorHandler(e:Event):void
		{
			label4.text = "ioErrorHandler: " + e;
		}

		public function completeHandler(evt:Event):void
		{
			var username:String = evt.target.data.uname;
			var userid:String = evt.target.data.uid;
			label1.text = "username: " + username;
			label2.text = "uid: " + userid;
		}

		private function createTextField(x:Number, y:Number, width:Number, height:Number):TextField
		{
			var result:TextField = new TextField();
			result.x = x;
			result.y = y;
			result.width = width;
			result.height = height;
			result.textColor = 0x000000;
			result.background = false;
			result.backgroundColor = 0xFFFFFF;
			stage.addChild(result);
			return result;
		}
	}
}
A szerver oldali php kód:

<?php
$returnVars = array();
$returnVars['uname'] = "John Doe";
$returnVars['uid'] = "123";
$returnString = http_build_query($returnVars);

echo $returnString;
?>
2

ha még aktuális.... =)

ppy · 2009. Jan. 24. (Szo), 14.30
jó lenne tudni, h egyáltalán milyen hibaüzeneteket kapsz....
... h az Event.COMPLETE előtt egyáltalán sikerül e megnyitni a file-t (van e Event.OPEN) aztán nézném még a ProgressEvent.PROGRESS-t is, mert igaz elég speciális körülmények között, de már volt nekem olyan, h 100%-ig betöltötte a filet, csak valahogy nem jött az Event.COMPLETE...

Ez a példa viszont tutira működik:
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/net/URLLoader.html#includeExamplesSummary