آموزش ارسال و دریافت داده بین فلش و PHP ( زبان as3 )

kiarash.M

Active Member
از اونجایی که چنین حرکتی برای کسانی که تازه به فلش پیوستند کار جذاب و شگفت انگیزی به نظر می آید و چند تن از دوستان در خواست چنین آموزشی را داشتند با دیدن چنید مثال مختلف یک مثال خوب و فارسی طوری که هر کی دید متوجه شه تهیه کردم !

فایل های کل پروژه که 100% تست شده قبلا ، در پیوست موجود می باشید .






مقدمه:


برای شروع شما باید به این نکته توجه کنید که ارتباط فلش با db و باقی فایل توسط یک فایل serverside مثل php asp cgi و باید انجام شه و خود flashplayer بنا به دلایل امنیتی نمی تواند این کا رو انجام دهد !
پ.ن : وقتی شما میبینید که air این کا رو انجام میده دلیل اینه که air از flashplayer برای کارش استفاده نمیکنه !
پ.ن 2 : در این آموزش دقت ما روی flashplayer و as3 و زبان serverside ائه php است .



پیش نیاز های دانستنی :

باید این نکته را بدانید که flash داده هایی که به صورت خطی load می کنه رو میتونه بخونه و آنها را با اپراتور های = و & مقدار دهی و جدا کنه ؛ در ضمن در PHP شما توانایی دادن اطلاعات به فایل از طریق دو متود POST و GET هستید ؛ که متود POST همون چیزی ائه که بار ها و بار ها در همه جا دیدید مثل همین انجمن که do=newthread&f=23
به do مقدار newthread و به f مقدار 23 می ده .

ولی متود get کاملا امن بوده و از طریق URL منتقل نمی شود شما در متود POST می توانید دستی مقدایر را تغییر دهید ! که ممکن است باعث ایجاد خطا شود که در GET این گونه نیست ..



شروع :

کل کار به این شکل که ما یک سری متغییر از فلش به php میفرستیم و php هم یک سری داده به flash بر می گردونه .. کار با روش POST بسیار ساده است به مثال زیر دقت کنید :



PHP:
var myVariables:URLVariables = new URLVariables();

myVariables.myName = "esm ..";
myVariables.INFO = " .. tozhiat ...";


var myURLRequest:URLRequest = new URLRequest("get.php");
myURLRequest.data = myVariables;


navigateToURL(myURLRequest, '_blank');


در سه خط اول کاری شبیه تولید object انجام می دهدی و در خط 4و5 مقادیر را به URL نسبت می دهید یعنی در واقع خود فلش آنها را به صورت خطی پشت URL می چینید .. و در آخر با navigateToURL فایل PHP را احظار می کنید ..

در فایل get.php داریم :


PHP:
<?php

echo $_GET['myName'];
echo $_GET['INFO'];

?>

که به این شکل داده ها یی که از فلش گرفتیم را در صفحه چاپ می کنییم ..





حالا مثال را با روش GET به صورت پیشرفته تر انجام میدیم
در این مثال تمام روش های ارسال و دریافت مورد بحث قرار گرفته ..

به محتویات فایل دقت کنید



PHP:
import net.jabeabzar.loaders.vldr;


var vl:vldr;
//
sendBtn.addEventListener(MouseEvent.CLICK,sendBtnHandler);


function sendBtnHandler(e:MouseEvent) {
	
	
	// POST!!! مهم 
	var varObj:Object = {};
	varObj.textinput0 = escape(textinput0.text);
	varObj.textinput1 = escape(textinput1.text);
	


// با استفاده از دو روش گت و خطی به پی اچ پی متغیر ارسال میکنیم
// این گونه مقدار دهی با آبجکت توسط کلاسی که قبلا طرحی کردیم صورت میگیرد
vl = new vldr("varloader.php?var_get=moteghayere khati be PHP!", varObj);
	vl.addEventListener(Event.COMPLETE, onVarsLoaded);
	vl.addEventListener(Event.CANCEL, onVarsCancel);
}


function onVarsLoaded(e:Event) {
	var msg:String = " ---!Communication with the server was successful.\n\n";
	msg += "az PHP ==>> -> "+e.target.vars23.PHP1+"\n";
	msg += "var_get -> "+unescape(e.target.vars23.var_get)+"\n";
	msg += "textinput0 -> "+unescape(e.target.vars23.textinput0)+"\n";
	msg += "textinput1 -> "+unescape(e.target.vars23.textinput1)+"\n";
	tf_servermsg.textColor = 0x009900;
	tf_servermsg.text = msg;
}


function onVarsCancel(e:Event) {
	tf_servermsg.textColor = 0x990000;
	tf_servermsg.text = e.target.errormsg;
}


برای ارسال و دریافت به روش GET کلاسی جدا طراحی شده که از اون استفاده کردیم
در صفحه دو txtbox داریم که کاربر با پر کردن داده به اون ها مقدارشان راه به PHP ارسال می کند و PHP اطلاعاتی دیگر را بر می گرداند .. ( فایل این نمونه در پیوست موجود است )

در داخل php هم به روشی کاملا مشابه قبل داده ها رو از کار بر می گیریم ، فقط این بار فلش منتظر می مونه تا بعد از دادن داده های یک داده های دیگری از php بگیره که php با echo کردن ( چیزی شبیه trace در فلش ) داده ها رو بر می گردونه .. حالا فلش آنها را به صورت خطی داره با استفاده از کلاسی که طراحی شده و دونستن اسامی متغیر ها آنها رو جدا کرده و نمایش می دهد ..




حالا بعد از دادن داده ها به PHP می توید کار های پیشرفته تری با فایل swf اتون انجام دهید برای نمونه از کابر توسط فلش نام کاربری و کلمه عبور را گرفته به PHP می دهید با PHP از طریق SQL درستی آنها را در database چک کرده و به کاربر توسط دستور echo اعلام میکنید ..



فایل کامل آموزش + فایل کلاس و fla تحت cs3 و فایل php ..
http://learnbox.jabeabzar.com/getFile/2
 

kiarash.M

Active Member
escape تابعی است که از زمان as2 بوده و کارش encode کردن اده های unicode ائه ..
همون طور که دیدد وقتی فارسی باشه URL اونو کپی کنید به جای حروف فارسی معادل encode آنها قرار می گره ( این برای اینه که تو سیستم های که توانایی ذخیره unicode ندارند اطلاعات unicode رو ذخیره کنید )
 

saeid99

New Member
هنگامی که اطلاعات رو از صفحه php دریافت میکنیم یا ارسال میکنیم آیا صفحه دوباره باید لود بشه؟
 

++Hadi++

Active Member
مرسی از کیارش عزیز
و برای ارسال شی ایکسمل (مجموعه داده ) به asp یا php کافیه ، شیی از نوع String رو بوجود بیارین و از ورودی های کاربری ، رشته ایکسملی رو بوجود بیارین و این رشته رو به asp یا php پاس بدین تا asp یا php ، این رشته متنی ایکسمل جنریت شده رو به فایل XML در هاست تبدیل کنه .
بای...
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا