• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

فراگیری آسان زبان PHP

تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
فلسفه وجودی آرایه همینست که قرار است یکسری پردازش مشخص بر روی تعدادی (احتمالا زیاد) شیء هم جنس انجام شود . یعنی برای تک تک اشیاء عملیات یکسان خواهد بود . حال بهینه ترین راه برای دستیابی به این اشیاء استفاده از ساختمان داده ایست که همه را تحت یک نام ذخیره کرده و بعد با یک آفست یا شماره یا هر مکانیزم دیگری بتوان به آنها دسترسی داشت .
برای تعریف آرایه در PHP می توان از دستور زیر استفاده کرد :
کد:
<?php
$array = array();
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
با این کار (استفاده از دستور array) یک آرایه ایجاد کرده ایم . حتی می توانیم به هنگام ایجاد آرایه مقادیر خانه های آنرا نیز مشخص کنیم . ولی نکته ای که در همین ابتدا باید به آن اشاره کنم اینست که آرایه در PHP بسیار منعطف تر از آرایه در زبان های دیگری مانند c است . چرا که هم این متد را می توانید بدون پارامتر بکار برید و هم با پارامتر . همچنین در تعداد پارامتر ها محدودیتی وجود ندارد می توانید تا دلتان بخواهد پارامتر به این متد بدهید و لزومی هم ندارد که تعداد خانه های آرایه از قبل مشخص باشد و حتی می توانید بعد از تعریف آرایه خانه ای به آن بیفزائید . به مثال زیر توجه کنید :
کد:
<?php
$cars = array("BMW" , "Audi" , "Benz");
$countries = new array("Iran" , "Germany" , "Egypt" , "The U.S");
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
همانطور که می بینید در خط اول ، آرایه ای با 3 عضو و در خط دوم آرایه ای با 4 عضو تعریف شده است .
در زبان PHP سه نوع آرایه وجود دارد :
1- آرایه های عددی (Numeric Array)
2- آرایه های انجمنی (Associative Array)
3- آرایه های چند بعدی (Multidimensional Array)
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
1- آرایه های عددی در PHP
آرایه عددی یا Numeric Array آرایه ایست که در اکثر زبان های برنامه نویسی وجود دارد . در این آرایه ، به کل آرایه یک نام می دهیم بدین ترتیب هر یک از خانه های آرایه یک شماره ایندکس می گیرد و با آن شماره خاص می توانیم به یک خانه خاص آرایه دست بیابیم. به مثال زیر توجه کنید :
کد:
<?php
$cars = array("BMW" , "Audi" , "Benz");
$countries = new array("Iran" , "Germany" , "Egypt" , "The U.S");
echo "Our cars are : ".$cars[0]." , ".$cars[1]." , ".$cars[2];
$cars[3] = "Opel";
?>
همانطور که می بینید به خانه های آرایه با یک شماره که به نام آرایه اضافه شده است دسترسی پیدا کردیم . این شماره اندیس آرایه یا ایندکس (index) یا آفست نام دارد . اندیس آرایه از شماره صفر شروع می شود و همانطور که می بینید در خط آخر این برنامه یک خانه به آرایه اضافه شده است به همین سادگی ! بدون آنکه از قبل و در هنگام تعریف آرایه فکرش را کرده باشیم . البته پیمایش آرایه یا دستیابی به خانه های آرایه معمولا به این شکل انجام نمی شود بلکه با استفاده از دستور foreach (حلقه foreach) این کار قابل انجام است . اگر میخواهید راجع به دستور foreach بیشتر بدانید، مطلب حلقه های تکرار while و for از همین سایت را مطالعه فرمائید.
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
2- آرایه های انجمنی (Associative Array)
آرایه انجمنی آرایه ایست که در آن به ازاء هر مقدار (هر خانه) یک فیلد بنام کلید نیز در نظر گرفته می شود که این کلید باید در بین کلید های خانه های دیگر منحصر به فرد و یکتا باشد . برای دستیابی به خانه های یک آرایه انجمنی ، دیگر از اندیس عددی استفاده نمی شود بلکه از فیلد کلید به عنوان رشته کلیدی دستیابی استفاده می شود . به مثال زیر توجه کنید :
کد:
<?php
$ages =  array("Ali" => 21 , "Ahmad" => 24 , "Akbar" => 19);
echo $ages["Ali"];
?>
این کد یک آرایه انجمنی با سه عضو ایجاد می کند و بعد به هنگام استفاده از کلید هایی که به هنگام تعریف داده شده برای دستیابی به عضو مربوطه استفاده می شود در اینجا باید حواستان باشد که این کلید مانند سایر موارد دیگر در PHP به حروف بزرگ و کوچک حساس است (Case Sensitive).
آرایه های انجمنی نقش عمده و مهمی در PHP بازی می کنند . اکثر کارها در PHP از دریافت پارامترهای ارسالی از صفحات وب گرفته تا واکشی اطلاعات از دیتابیس همه و همه از آرایه های انجمنی استفاده می کنند . آرایه هایی مانند $_GET ، $_POST ، $_SESSION ، $_COOKIE و ... نمونه هایی از آرایه های انجمنی هستند .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
- آرایه های چند بعدی (Multidimensional Array) :
این نوع آرایه ، آرایه ایست که هر عضو آن می تواند خود آرایه باشد . در حقیقت این نوع آرایه همانست که به آن آرایه ای از آرایه ها می گویند . حال این آرایه می تواند عددی باشد ، می تواند انجمنی باشد . در هر دو نوع آرایه چند بعدی وجود دارد . حتی بعد های مختلف می توانند انواع مختلف داشته باشند مثلا بعد اول انجمنی باشد و بعد دوم عددی مانند مثال زیر :
کد:
<?php
$families = array(
"Alavi"=>array("Ali" , "Ahmad" , "Akbar") ,
"Akbari=>array("Hasan" , "Mahdi"),
"Ahmadi"=>array("Zahra" , "Majid" , "Maryam" , "Meisam")
);
echo "Second Member of Alavi family is : ".$families['Alavi'][1];
?>
این آرایه دارای بعد اول انجمنی و بعد دوم عددیست . در حقیقت در سطح اول یک آرایه انجمنی داریم که دارای سه عضو است : خانواده های Alavi ، Akbari و Ahmadi . و در سطح دوم هر یک از این خانواده های اعضای خود را دارند که در داخل هر خانواده با شماره (ایندکس) به آنها دست می یابیم بنابراین سطح دوم عددیست .
همانطور که از مثال فوق نیز پیداست یکی از تفاوت های عمده ای که آرایه در PHP با آرایه در سایر زبانها دارد اینست که در آرایه های چند بعدی PHP لازم نیست تعداد اعضای بعد های دوم به بعد با هم برابر باشند مانند مثال فوق که یک آرایه دو بعدیست که اولین عضو بعد اول دارای 3 عضو در بعد دوم و دومین عضو بعد اول (خانواده Akbari) دارای دو عضو در بعد دوم است .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
تابع چیست ؟
آیا تا به حال شده که از انجام یک کار تکراری در برنامه نویسی خسته شده باشید و پیش خود بگوئید ای کاش یکبار این کار را به کامپیوتر می گفتم و هر موقع دلم میخواست از او می خواستم که آن کار را انجام دهد ؟ اگر جواب مثبت است تابع همان چیزیست که شما آرزوی آنرا داشتید . (اگر هم جواب منفی است به این معنیست که شما هنوز در اصول پایه ای برنامه نویسی مشکل دارید بهتر است به عقب برگردید و اصول برنامه نویسی ساخت یافته را دقیق تر و با تمرین بیشتری یاد بگیرید) .
تابع در حقیقت قطعه کدیست که یکبار آنرا می نویسید و برای آن یک اسم انتخاب می کنید و هربار احساس نیاز کردید کدی که داخل تابع نوشته اید باید اجرا شود می توانید فقط با صدا زدن نام تابع (خواهیم دید) آن تابع و در حقیقت دستورات داخل آنرا اجرا کنید . کد زیر شکل کلی تعریف تابع است :
کد:
<?php
function <function_name>(<parameters_list>)
{
//Do Somethings
}
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
برای اجرا و اصطلاحا فراخوانی تابع فوق به شکل زیر عمل می کنیم :
کد:
<?php
<function_name>(<arguments_list>);
?>
نام تابع چه به هنگام تعریف و چه به هنگام فراخوانی حداقل با یک زوج پرانتز باز و بسته همراهی می شود . این زوج پرانتز برای نگهداری لیست پارامتر ها یا آرگومان های تابع است که در ادامه معنی و لزوم وجود آنها را خواهیم دید . فرض کنید بخواهیم تابعی بنویسیم که فقط وظیفه چاپ یک پیغام را دارد و هیچ آرگومانی دریافت نمی کند تعریف و فراخوانی این تابع به شکل زیر خواهد بود :
کد:
<?php
function printName()
{
echo "Mohammad Abdollahi";
}
echo " Your Name is ";
printName();
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
این تابع وظیفه نوشتن نام را بر عهده دارد و تا وقتی که فراخوانی نشود اجرا نخواهد شد . در حقیقت نوشتن یک قطعه کد داخل بلوک تابع ضمانت نی کند که به هنگام لود صفحه و تا وقتی که تابع فراخوانی نشود آن قطعه کد اجرا نگردد . بنابراین پس از اجرای خط اول برنامه پیام Your Name is چاپ شده و سپس در خط بعدی با فراخوانی تابع قطعه کد داخل تابع اجرا شده و عبارت Mohammad Abdollahi چاپ می شود .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
همانطور که شما نیز متوجه شدید اینگونه استفاده از تابع کارایی آنرا کاهش میدهد (بلکه موجب افزایش کد نویسی نیز می شود) . از آنجا که فلسفه ایجاد تابع تقسیم یک کار به بخش های کوچک تر است باید تابع را به گونه ای نوشت که کارها را زیادتر نکند و اصطلاحا بار اضافی وارد ننماید . مثلا فرض کنید برنامه ای نوشته اید که در یک سازمان در حال کار است . می خواهید هر فرد در سازمان پس از ورود به سیستم با پیغام فوق مواجه شود اگر به شکل بالا کدنویسی کنید باید برای چاپ نام هر فرد داخل سازمان یک تابع بنویسید بنابراین برای سازمانی با 2000 نفر پرسنل نیاز به 2000 تابع فقط برای چاپ نام هایشان دارید !!!! برای فائق آمدن بر این مشکل از پارامترهای تابع استفاده می کنیم . در حقیقت با این کار ، روال و منطق کار را از داده ها جدا می کنیم . به مثال زیر که تغییر یافته مثال بالا است توجه کنید :
کد:
<?php
function printName($userName)
{
echo $userName;
}
$name = "Mohammad Abdollahi";
echo " Your Name is ";
printName($name);
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
در مثال فوق تابعی تعریف کرده ایم که یک پارامتر بنام userName دریافت کرده و آنرا چاپ می کند . به هنگام فراخوانی ، برای این پارامتر تابع یک آرگومان بنام name ارسال کرده ایم . در اینجا چون مثال ما صرفا جهت آموزش استفاده از پارامتر است متغیر name را دستی مقدار دهی کرده ایم ولی مثلا می تواند از دیتابیس پر شود . متغیر name که به تابع ارسال می شود در بدنه تابع نام userName به خود می گیرد . در حقیقت از این متغیر یک کپی در حافظه گرفته می شود و به آن در بدنه تابع userName گفته می شود و دیگر با متغیر اصلی ارسال شده کاری نداریم . حال برای چاپ نام هر نفر کافیست فقط نام وی را به این تابع ارسال کنیم و خود تابع را فقط یکبار می نویسیم . نکته مهم در مطالعه PHP اینست که هر جا به عبارت پارامتر برخورد کردید منظور متغیریست که به هنگام تعریف تابع در سرآیند (Header) تابع معرفی شده است و هر گاه بنام آرگومان برخورد کردید منظور متغیر یا عبارتیست که به هنگام فراخوانی تابع استفاده شده است .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
بازگشت مقدار از تابع با استفاده از دستور return :
اكثر اوقات لازم است كه تابع وظيفه اي كه بر عهده دارد را انجام داده و نتيجه آنرا به صورت خروجي به نقطه اي از برنامه كه تابع را فراخواني كرده بازگرداند . اين مهم با استفاده از دستور return قابل انجام است . بدين شكل كه مقدار بازگشتي از تابع را جلوي دستور return مي نويسيم . هر تابع مي تواند يك يا چند return داشته باشد ولي فقط يكي از آنها اجرا خواهد شد . چرا كه با اجراي اولين دستور return اجراي تابع خاتمه يافته و كنترل اجراي برنامه به كد فراخواني كننده باز مي گردد. به مثال زير دقت كنيد :
کد:
<?php
function add($num1 , $num2)
{
$sum = $num1 + $num2;
return $sum;
}
echo add(1,2);
?>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
چيزي كه تا كنون بر روي اين سايت از زبان PHP ياد گرفته ايد شايد دقيقا چيزي نبوده كه شما به دنبال آن بوده ايد . زبان PHP به پويايي و تعامل با كاربر شهره است و اين كار را مي تواند به بهترين نحو انجام دهد . اگر بخواهيم با كاربر تعاملي داشته باشيم يعني ورودي از كاربر بگيريم يا چيزي شبيه اين بايد حتما ياد بگيريم كه چگونه با فرم ها كار كنيم . براي طراحي فرم ها از يكسري كنترل هاي برنامه نويسي استفاده مي كنيم . اكثر اين كنترل ها با تگ input زبان HTML قابل ايجاد هستند . منتها بايد بدانيم كه تا وقتي اين كنترل ها را در يك فرم قرار ندهيم به هنگام ارسال صفحه به سرور ، اطلاعاتي كه كاربر در اين كنترل ها وارد كرده به سمت سرور ارسال نخواهد شد . براي ايجاد يك فرم بايد از تگ فرم در HTML استفاده كرد . به شكل زير :
کد:
<form method="get" action="filename.php" >
//some controls
</form>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
همانطور كه مي بينيد تگ فرم دو خصيصه مهم دارد . يكي خصيصه method و ديگري خصيصه action .
خصيصه method مشخص مي كند اطلاعات داخل فرم به چه شكلي سمت سرور ارسال شوند . اين خصيصه دو مقدار مي گيرد . اگر مقدار اين خصيصه get باشد اطلاعات داخل url قرار گرفته و سمت سرور ارسال مي شوند . اگر مقدار اين خصيصه post باشد اطلاعات داخل بسته هاي http قرار گرفته و به سرور ارسال مي شوند .
خصيصه action مشخص مي كند اطلاعات اين فرم براي پردازش به چه فايلي بايد ارسال شوند و به هنگام دريافت اطلاعات اين فرم توسط سرور كدام فايل سرور بايد اجرا شود . در حقيقت خصيصه method هم مشخص مي كند اطلاعات به چه شكلي بايد به دست اين فايل برسند و اين فايل به چه صورت به اطلاعات ارسالي از سمت client دسترسي پيدا كند .
براي درك بهتر اين مطلب مثالي را با هم مرور مي كنيم . منتها قبل از مطالعه و بررسي مثال اگر با تگ input در html آشنايي نداريد مطلبي با همين عنوان را در بخش آموزش HTML از همين سايت مطالعه كنيد .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حال فرض كنيد يك صفحه وب داريم كه داراي دو كنترل از نوع input و يك كنترل از نوع submit است . مي خواهيم در اين دو كنترل از نوع input عددي وارد كرده و با كليك بر روي دكمه submit وارد صفحه جديدي شده و حاصل جمع دو عدد وارد شده را به همراه پيغام مناسبي ببينيم . براي اين كار يك فايل ايجاد مي كنيم بنام data.php . يادتان باشد چون اين فايل حاوي كدهاي PHP نيست حتي مي تواند با پسوند html ذخيره گردد :
کد:
<html>
<head>
<title>
Data Page
</title>
</head>
<body>
<form method="get" action="result.php">
First Number : <input type="text" name="txtFirstNumber" />
<br />
Second Number : <input type="text" name="txtSecondNumber" />
<br />
<input type="submit" value="Add" />
</form>
</body>
</html>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
هنگامي كه بر روي دكمه Add كليك شود ، چون كنترلي از جنس submit است اطلاعات آن به صورت خودكار به سرور ارسال مي شود . اگر يكي از input هاي فوق بيرون تگ form باشد اطلاعات مربوط به آن input به سمت سرور فرستاده نمي شود . هنگام ارسال به سمت سرور و به محض كليك بر روي دكمه Add (با فرض اينكه عدد اول 3 و عدد دوم 4 باشد) چون خصيصه action اين فرم با مقدار result.php مقدار دهي شده و خصيصه method آن نيز با get تنظيم شده است آدرسي كه در نوار آدرس مرورگر مشاهده خواهد شد عبارت خواهد بود از :
result.php?txtFirstNumber=3&txtSecondNumber=4
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
حال در فايل result.php چه كاري بايد انجام دهيم ؟ اين فايل مي تواند مخلوطي از كدهاي PHP براي پردازش اطلاعات ارسالي از كلاينت و كد هاي HTML براي قالب بندي صفحه و نمايش اطلاعات باشد . بهتر است كه حتي اگر براي قالب بندي و نمايش اطلاعات از كد HTML استفاده نمي كنيد از تگ هاي HTML ، Head و body براي استاندارد سازي صفحات استفاده كنيد . نمونه اي از پياده سازي فايل result.php را با هم در زير مي بينيم :
کد:
<html>
<head>
<title>
Result Page
</title>
</head>
<body>
<?php
$sum = $_GET['txtFirstNumber'] + $_GET['txtSecondNumber'];
echo "The Sumation of ".$_GET['txtFirstNumber']." and ".$_GET['txtSecondNumber']." is ".$sum;
?>
</body>
</html>
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
براي دريافت اطلاعات از فرمي كه توسط متد get ارسال شده بايد از آرايه انجمني $_GET استفاده كرد . توجه داشته باشيد كه به هنگام نوشتن تگ فرم عبارت get را به هر نحو (از نظر بزرگي و كوچكي حروف) كه دوست داشته باشيد مي توانيد بنويسيد زيرا تگ فرم به زبان HTML نوشته مي شود و اين زبان Case Sensitive نيست . اما در PHP نام اين آرايه حتما بايد به همين شكل (يعني با حروف بزرگ) نوشته شود . ضمن اينكه اين آرايه ، يك آرايه انجمني است يعني به عناصر آرايه بايد با يك كليد دسترسي پيدا كرد . حال اين كليد چيست ؟ مقدار خصوصيت name كه در تگ input در فرم HTML به كار رفته است .
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
اگر همين مثال را بخواهيم با متد post انجام دهيم كافيست در فرم HTML در قسمت method به جاي get ‌بنويسيم post . و در فايل result.php نيز به جاي آرايه $_GET از آرايه $_POST كه آن نيز انجمني است استفاده شود . توجه داشته باشيد كه در بسياري جاها از اين دو آرايه با نام تابع ياد شده است كه اشتباه است . در PHP تابع $_GET يا تابع $_POST نداريم . هنگامي كه اين مثال را با متد post بازنويسي كنيد مي بينيد كه به هنگام كليك بر روي دكمه Add آدرس نهايي result.php خواهد بود و هيچ گونه پارامتري در url ارسال نخواهد شد .
حال كه با اين دو متد ارسال صفحات وب يعني متد get و متد post آشنا شديد ببينيم اين دقيقا چه تفاوتهايي با هم دارند :
 
تاریخ عضویت
25 آگوست 2012
نوشته‌ها
87
لایک‌ها
0
محل سکونت
آبادان
تفاوت متد get و متد post :
از آنجايي كه متد get تمامي كنترل ها و مقادير آنها را از طريق url به سمت سرور ارسال مي كند واضح است كه اولين تفاوت get و post اينست كه از طريق متد get تنها مي توان اطلاعات متني را ارسال كرد و اطلاعاتي از قبيل فايل ، عكس و ... را تنها مي توان با متد post ارسال نمود .
دومين تفاوت متد ارسال get و متد ارسال post اينست كه متد get نا امن است . چرا كه همانطور كه گفتيم اطلاعات ارسالي را به صورت clear text يعني متن صريح نشان مي دهد . بنابراين براي گرفتن كلمه عبور كاربر حتي اگر از كنترل input از نوع password استفاده كنيم كه هنگام گرفتن كلمه عبور آنرا نشان نمي دهد ، به هنگام ارسال اين كلمه عبور در url نشان داده خواهد شد .
تفاوت سوم اينست كه بالاخره ميزان اطلاعات ارسالي توسط متد get محدود است و معمول نيست كه طول url بيش از 2000 كاراكتر باشد . چرا كه مرورگري مانند IE تنها 2048 كاراكتر اول آدرس را در نظر مي گيرد . (در تئوري متد get چنين محدوديتي وجود ندارد و اين محدوديت فقط در عمل و به خاطر رفتار مرورگر IE است) . ولي هنگام استفاده از متد post مي توانيد به طور پيش فرض حداكثر تا 8Mbyte اطلاعات سمت سرور ارسال كنيد كه البته اين مقدار قابل تغيير است . براي تغيير اين مقدار بايد در فايل php.ini كه فايل پيكربندي PHP است مقدار متغير محيطي post_max_size را بر حسب مگابايت تغيير دهيد (اين متغير به طور پيش فرض برابر است با 8Mbyte).
همانطور كه ديديم براي ارسال يك فرم دو متد بيشتر وجود ندارد . get و post . اگر فرم با متد get ارسال شده باشد در PHP از آرايه $_GET و اگر فرم با متد post ارسال شده باشد در PHP از آرايه $_POST استفاده مي شود و آرايه $_GET براي فرمي كه با متد post ارسال شده قابل استفاده نيست (و برعكس). اما صرفنظر از متد ارسال فرم در PHP مي توان از آرايه ديگري نيز استفاده كرد و آن آرايه $_REQUEST است. اين آرايه تمام كنترل هايي كه با استفاده از هر دو متد، ارسال شده باشند را دريافت مي كند .اين متد معمولا براي نوشتن وب سرويس هايي كه قرار است سرويسي به برنامه هاي نوشته شده توسط ساير برنامه نويسان دهد استفاده مي شود چرا كه يك برنامه نويس ممكن است از متد post استفاده كند و ديگري از متد get ولي شما كه نويسنده وب سرويس هستيد بايد پارامترهاي ارسالي هر دو را دريافت كنيد .
 
بالا