آموزش PHP

آموزش PHP - متدهای GET و POST

دو راه وجود دارد که سرویس گیرنده مرورگر می تواند اطلاعات را به سرور وب ارسال کند.

  • متد GET
  • متد POST

قبل از اینکه مرورگر اطلاعات را ارسال کند، آن را با استفاده از یک برنامه به نام encoding  URL  کدگذاری می کند. در این طرح، نام / مقدار با علامت های یکسان پیوند می شوند و جفت های مختلف با آمپرستر جدا می شوند.

name1=value1&name2=value2&name3=value3

فضاها با کاراکتر + جایگزین می شوند و هر کاراکتر غیر عددی دیگر با عدد هگزادسیمال جایگزین می گردد و پس از اطلاعات کدگذاری شده به سرور ارسال می شود.

متد GET

متد GET اطلاعات کاربر کد شده اضافه شده را به درخواست صفحه ارسال می کند. صفحه و اطلاعات کد گذاری شده توسط کاراکتر ؟ جدا می شوند.

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

 

  • متد GET یک رشته طولانی ایجاد می کند که در logهای سرور شما نمایش داده می شود، در browser's Location: box.
  • متد GET تنها محدود به ارسال حداکثر 1024 حرف می باشد.
  • اگر رمز عبور یا سایر اطلاعات حساس را به سرور ارسال می کنید هرگز از متد GET استفاده نکنید.
  • GET نمی تواند برای ارسال داده های دودویی، مانند تصاویر یا اسناد کلمه، به سرور مورد استفاده قرار گیرد.
  • داده های ارسال شده توسط متد GET می تواند با استفاده از متغیر محیطی QUERY_STRING قابل دسترسی باشد.
  • PHP آرایه associative با نام GET _$ را برای دسترسی به تمام اطلاعات ارسال شده با استفاده از متد GET فراهم می کند.

مثال زیر را با قرار دادن کد منبع در script test.php امتحان کنید.

<?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>

نتایج زیر را تولید می کند:

 forms

 

متد POST

متد POST اطلاعات را از طریق هدر HTTP انتقال می دهد. اطلاعات در صورت متد GET کد گذاری شده و در header به نام QUERY_STRING قرار داده می شوند. 

  • متد POST محدودیتی در اندازه داده ای که باید ارسال شود ندارد.
  • متد POST می تواند برای ارسال ASCII و همچنین اطلاعات باینری استفاده شود.
  • داده های ارسال شده توسط متد POST از HTTP header عبور می کنند در نتیجه امنیت بستگی به پروتکل HTTP دارد. با استفاده از HTTP امن می توانید اطمینان حاصل کنید که اطلاعات شما امن هستند.
  • PHP آرایه associative با نام _POST$  را برای دسترسی به تمام اطلاعات ارسال شده با استفاده از متد POST فراهم می کند.

مثال زیر را با قرار دادن کد منبع در اسکریپت test.php امتحان کنید.

<?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>

نتیجه زیر را تولید می کند:

forms 2

 

متغیر  _REQUEST$

متغیر $ _REQUEST حاوی محتویات $ _GET ، $ _POST، و $ _COOKIE است. ما در مورد متغیر $ _COOKIE در کوکی ها توضیح خواهیم داد.

متغیر $ _REQUEST می تواند برای دریافت نتیجه از داده های فرم ارسال شده با هر دو متد GET و POST استفاده شود.

مثال زیر را با قرار دادن کد منبع در اسکریپت test.php امتحان کنید.

<?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 شامل نام خود اسکریپت است که در آن نامیده می شود.

و نتیجه زیر را تولید می کند:

forms 3

در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش PHP

Learn PHP

سرفصل ها

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...