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:
  1. <?php  
  2.   
  3. $EOL="<br>\n";  
  4. // -----------------------------------------  
  5. // get function  
  6.   
  7. function get_userdata()  
  8. {  
  9.   $t= time();  
  10.   echo "&uid=$t&uname=gizike";  
  11.   return;  
  12. }  
  13.   
  14. // -----------------------------------------  
  15. // put function  
  16. // -----------------------------------------  
  17. function put_userdata($uid$uscore)  
  18. {  
  19.   echo "id=[$uid]";  
  20.   echo "uscore=[$uscore]";  
  21.   return;  
  22. }  
  23. // module body  
  24. // echo basename(__FILE__)." running ...$EOL";  
  25. if ($_GET["func"] == "get")  
  26. {  
  27.   get_userdata();  
  28. }  
  29.   
  30. if ($_GET["func"] == "put")  
  31. {  
  32.   put_userdata($_GET["uid"], $_GET["uscore"]);  
  33. }  
  34. // echo basename(__FILE__)." ready.$EOL";  
  35. ?>  
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:
  1. <?php  
  2. $returnVars = array();  
  3. $returnVars['uname'] = "John Doe";  
  4. $returnVars['uid'] = "123";  
  5. $returnString = http_build_query($returnVars);  
  6.   
  7. echo $returnString;  
  8. ?>  
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