PHP - รับ & วิธีการโพสต์

มีสองวิธีที่ไคลเอนต์เบราว์เซอร์สามารถส่งข้อมูลไปยังเว็บเซิร์ฟเวอร์

  • วิธีการรับ
  • วิธีการโพสต์

ก่อนที่เบราว์เซอร์จะส่งข้อมูลจะเข้ารหัสโดยใช้รูปแบบที่เรียกว่าการเข้ารหัส URL ในโครงร่างนี้คู่ชื่อ / ค่าจะถูกรวมเข้ากับเครื่องหมายที่เท่ากันและคู่ที่แตกต่างกันจะถูกคั่นด้วยเครื่องหมายและ

name1=value1&name2=value2&name3=value3

ช่องว่างจะถูกลบออกและแทนที่ด้วยอักขระ+และอักขระอื่น ๆ ที่ไม่ใช่ตัวเลขและตัวอักษรจะถูกแทนที่ด้วยค่าฐานสิบหก หลังจากเข้ารหัสข้อมูลแล้วข้อมูลจะถูกส่งไปยังเซิร์ฟเวอร์

วิธีการรับ

เมธอด GET จะส่งข้อมูลผู้ใช้ที่เข้ารหัสต่อท้ายคำขอเพจ หน้าและข้อมูลที่เข้ารหัสจะถูกคั่นด้วยไฟล์? ตัวละคร.

http://www.test.com/index.htm?name1=value1&name2=value2
  • เมธอด GET จะสร้างสตริงแบบยาวที่ปรากฏในบันทึกเซิร์ฟเวอร์ของคุณในกล่องตำแหน่งของเบราว์เซอร์:

  • เมธอด GET ถูก จำกัด ให้ส่งได้ไม่เกิน 1024 อักขระเท่านั้น

  • อย่าใช้วิธี GET หากคุณมีรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ ที่จะส่งไปยังเซิร์ฟเวอร์

  • GET ไม่สามารถใช้เพื่อส่งข้อมูลไบนารีเช่นรูปภาพหรือเอกสารคำไปยังเซิร์ฟเวอร์

  • ข้อมูลที่ส่งโดยวิธี GET สามารถเข้าถึงได้โดยใช้ตัวแปรสภาพแวดล้อม QUERY_STRING

  • PHP ให้ $_GET Associative array เพื่อเข้าถึงข้อมูลที่ส่งทั้งหมดโดยใช้เมธอด GET

ลองใช้ตัวอย่างต่อไปนี้โดยใส่ซอร์สโค้ดในสคริปต์ 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>

มันจะให้ผลลัพธ์ดังต่อไปนี้ -

วิธีการโพสต์

วิธีการ POST จะถ่ายโอนข้อมูลผ่านส่วนหัว HTTP ข้อมูลจะถูกเข้ารหัสตามที่อธิบายไว้ในกรณีของเมธอด GET และใส่ในส่วนหัวที่เรียกว่า QUERY_STRING

  • วิธีการ POST ไม่มีข้อ จำกัด เกี่ยวกับขนาดข้อมูลที่จะส่ง

  • สามารถใช้วิธีการ POST เพื่อส่ง ASCII เช่นเดียวกับข้อมูลไบนารี

  • ข้อมูลที่ส่งโดยวิธี POST จะผ่านส่วนหัว HTTP ดังนั้นความปลอดภัยจึงขึ้นอยู่กับโปรโตคอล HTTP ด้วยการใช้ Secure HTTP คุณสามารถมั่นใจได้ว่าข้อมูลของคุณปลอดภัย

  • PHP ให้ $_POST Associative array เพื่อเข้าถึงข้อมูลที่ส่งทั้งหมดโดยใช้วิธี 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>

มันจะให้ผลลัพธ์ดังต่อไปนี้ -

ตัวแปร $ _REQUEST

ตัวแปร PHP $ _REQUEST มีเนื้อหาของทั้ง $ _GET, $ _POST และ $ _COOKIE เราจะพูดถึงตัวแปร $ _COOKIE เมื่อเราจะอธิบายเกี่ยวกับคุกกี้

ตัวแปร PHP $ _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 ตัวแปรมีชื่อของ self script ที่จะถูกเรียกใช้

มันจะให้ผลลัพธ์ดังต่อไปนี้ -