متدهای GET و POST در php
	 آموزش متد GET و POST در زبان برنامه نویسی php پی اچ پی

در حالت کلی دو روش وجود دارد تا یک کاربر بتواند داده های خودش را به سمت سرور با زبان php ارسال کند : 

  • متد POST
  • متد GET

این به معنی این نیست که فقط این متدها ، متدهای ارسال داده ها هستند بلکه متد های دیگری هم وجود دارد ولی تمرکز ما روی GET و POST است که بیشترین کاربرد را دارند و اگر اینها را یاد بگیرید ، باقی موارد را به سادگی یاد خواهید گرفت.

قبل از اینکه مرورگر اطلاعات وارد شده توسط کاربر را به سمت سرور ارسال کند آنها را رمزنگاری میکند که به آن URL encoding گفته میشود . 

در مثال زیر که مشاهده میکنید داده ها بصورت نام و مقدار جدا شده با علامت & از هم دیگر قرار دارند که به این شیوه داده ها ارسال میشود : 

name1=value1&name2=value2&name3=value3

آموزش زبان برنامه نویسی php بصورت ویدیویی میتواند به راحتی این مفاهیم را به شما انتقال دهد.

متد GET در php

در این روش ، داده ها به آخر آدرسی که اطلاعات را ارسال میکند میچسبند و با علامت ؟ از آدرس جدا میشوند و همانند مثال بالا متغیرها یا پارامتر های ارسالی با & از هم دیگر جدا میشوند و در آدرس بار مرورگر قابل مشاهده و تغییر هستند  . 

مثال : 

http://www.test.com/index.htm?name1=value1&name2=value2

 

نکاتی درباره ی متد GET در php : 

  • در متد GET اطلاعات ارسالی بصورت یک رشته در آخر آدرسی که اطلاعات را ارسال میکنیم قابل مشاهده و تغییر دادن میباشد 
  • در متد GET محدودیت ارسال اطلاعات تا 1024 کاراکتر میباشد 
  • برای اطلاعات حساس و امنیتی مثل پسورد هرگز از متد GET استفاده نمیشود 
  • از متد GET برای ارسال اطلاعات باینری مثل تصویر، داکیومنت ورد و امثال اینها به سمت سرور ، استفاده نمیشود 
  • داده های ارسال شده توسط GET توسط QUERY_STRING  قابل دسترسی است 
  • برای دریافت اطلاعات ارسال شده بصورت GET در اسکریپت php از $_GET استفاده میشود که ارایه ای از داده ها را در اختیار شما میگذارد 

 

مثال  : 

<?php
   if( $_GET["name"] || $_GET["age"] ) {
      echo "Welcome ". $_GET['name']. "<br />";
      echo "You are ". $_GET['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "GET">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

نتیجه ی خروجی کدهای بالا : 

متد GET پی اچ پی

آموزش ویدیویی کار با متد GET در زبان برنامه نویسی php در دوره ی آموزش php استاد نیک زاد ارائه شده است.

متد POST در php

در متد POST زبان php ، داده ها بصورت مخفی در header درون درخواست HTTP  قرار میگیرند . داده ها  همانطور که در بخش متد GET گفتیم رمزنگاری میشوند و در QUERY_STRING  داخل header قرار میگیرند .

  •  برخلاف متد GET در متد POST هیچ محدودیتی از نظر سایز داده ها وجود ندارد 
  • متد POST برای ارسال ASCII  و داده های باینری مفید است 
  • داده هایی که در متد POST ارسال میشود درون headr درخواست HTTP قرار میگیرد و امنیت بسیار بالاتری دارد و بیشتر امنیت بعدی آن مربوط به درخواست های HTTP است که اگر پروتکل شما امن باشد هیچ اتفاق امنیتی رخ نخواهد داد 
  • داده هایی که بصورت POST ارسال میشوند از طریق متغیر $_POST بصورت آرایه قابل دسترسی هستند و در مقصد میتوانید آنها را دریافت کنید 

مثال : 

<?php
   if( $_POST["name"] || $_POST["age"] ) {
      if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
         die ("invalid name and name should be alpha");
      }
      echo "Welcome ". $_POST['name']. "<br />";
      echo "You are ". $_POST['age']. " years old.";
      
      exit();
   }
?>
<html>
   <body>
   
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
   
   </body>
</html>

 

نتیجه ی کدهای بالا : 

متد POST در php

 

متغیر $_REQUEST  در php

متغیر $_REQUEST در php  در بر دارنده ی تمام داده های ورودی بصورت GET و POST است در حقیقت کار $_GET و $_POST و حتی $_COOKIE را بصورت یکجا انجام میدهد . 

برای روشن شدن مطلب یک مثال میزنیم : 

<?php
   if( $_REQUEST["name"] || $_REQUEST["age"] ) {
      echo "Welcome ". $_REQUEST['name']. "<br />";
      echo "You are ". $_REQUEST['age']. " years old.";
      exit();
   }
?>
<html>
   <body>
      
      <form action = "<?php $_PHP_SELF ?>" method = "POST">
         Name: <input type = "text" name = "name" />
         Age: <input type = "text" name = "age" />
         <input type = "submit" />
      </form>
      
   </body>
</html>

نکته : در مثال بالا متغیر $_PHP_SELF  به خود صفحه ی جاری اشاره میکند تا فرم بجای دیگری ارسال نشود . 

خروجی کدهای بالا :

متغیر $_REQUEST در PHP

نکته مهم :‌ اگر علاقه به یادگیری حرفه ای php دارید حتما بحث مهم MVC در زبان برنامه نویسی php در نظر بگیرید و بعد از یادگیری کامل پی اچ پی ، نوبت آموزش php mvc است.

اتمام درس