ตัวเลือกของบรรณาธิการ:

การโฆษณา

บ้าน - สำหรับผู้เริ่มต้น
วิธีการถ่ายโอนข้อมูล PHP และ GET และ POST POST, GET: คำขอแตกต่างกันอย่างไร การถ่ายโอนข้อมูลโดยใช้วิธี get คืออะไร

คำอธิบาย

คุณลักษณะ method จะบอกเซิร์ฟเวอร์เกี่ยวกับวิธีการร้องขอ

ไวยากรณ์

...

ค่านิยม

ค่าของแอตทริบิวต์ method คำนึงถึงขนาดตัวพิมพ์

มีสองวิธี - รับและโพสต์ รับ วิธีนี้เป็นวิธีหนึ่งที่ใช้กันทั่วไปและได้รับการออกแบบมาเพื่อรับข้อมูลที่จำเป็นและถ่ายโอนข้อมูลไปแถบที่อยู่

- จากนั้นคู่ชื่อ=ค่าจะถูกต่อท้ายที่อยู่หลังเครื่องหมายคำถามและคั่นด้วยเครื่องหมายแอมเปอร์แซนด์ (& สัญลักษณ์) ความสะดวกในการใช้วิธีการรับคือสามารถใช้ที่อยู่ที่มีพารามิเตอร์ทั้งหมดซ้ำ ๆ ได้โดยบันทึกไว้เช่นในบุ๊กมาร์กของเบราว์เซอร์และคุณยังสามารถเปลี่ยนค่าพารามิเตอร์ได้โดยตรงในแถบที่อยู่

โพสต์ วิธีการส่งข้อมูลไปยังเซิร์ฟเวอร์ในการร้องขอเบราว์เซอร์ ซึ่งจะทำให้คุณสามารถส่งข้อมูลได้มากกว่าวิธี get ที่มีอยู่ เนื่องจากมีขีดจำกัดที่ 4KB ข้อมูลจำนวนมากถูกใช้ในฟอรั่ม บริการอีเมล การกรอกฐานข้อมูล การส่งไฟล์ ฯลฯ

แอตทริบิวต์ที่จำเป็น

ค่าเริ่มต้น



แท็ก FORM แอตทริบิวต์วิธีการส่ง

เมื่อพัฒนาโครงการใดๆ

การทำงานกับแบบฟอร์มใน PHP และ HTML

แบบฟอร์มจะถูกระบุโดยแท็กแบบฟอร์ม:

คุณลักษณะวิธีการระบุว่าจะใช้วิธีใดในการส่งแบบฟอร์ม มี 2 ​​วิธี - GET และ POST- อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ด้านล่าง ในขณะที่เราจะพูดถึงองค์ประกอบหลักของแบบฟอร์มโดยย่อ:

ช่องข้อความ - ป้อนข้อความ

ช่องข้อความที่คุณสามารถป้อนข้อมูลได้ คุณลักษณะชื่อ- ชื่อ ช่องข้อความ, ค่า- ความหมาย. พวกเขามีลักษณะเช่นนี้:

ปุ่ม - ป้อนข้อมูลส่ง

ปุ่มที่ใช้ในการส่งแบบฟอร์ม ดูเหมือนว่านี้:

บล็อกข้อความ - พื้นที่ข้อความ

บล็อกข้อความ มักใช้สำหรับเขียนข้อความขนาดใหญ่ แถวแอตทริบิวต์ cols - ความยาวและความกว้าง

รูปร่าง:

อ่านเพิ่มเติมเกี่ยวกับแบบฟอร์มบนเว็บไซต์ของเราหรือในแหล่งอื่น ๆ จุดประสงค์ของบทเรียนนี้คือเพื่อแสดงให้เห็นว่าทำอย่างไร ประมวลผลแบบฟอร์มโดยใช้ PHP

วิธี GET และ POST เมื่อส่งแบบฟอร์ม

วิธีการรับและโพสต์ถูกระบุไว้ในแอตทริบิวต์วิธีการของแบบฟอร์มเมื่อมีการเตรียมใช้งาน:

วิธีการรับแจ้งข้อมูลในที่อยู่เพจ วิธีการโพสต์- ในหัวข้อข่าว เพื่อให้เข้าใจได้ดีขึ้นว่ามันคืออะไร วิธีการ GET และ POSTเรามาเขียนสคริปต์ที่จะส่งชื่อและข้อความของเราไปยังเซิร์ฟเวอร์ จากนั้นเซิร์ฟเวอร์จะแสดงข้อความบนหน้าจอ

ในข้อมูล PHP ได้รับโดยใช้วิธี GETเก็บไว้ในตัวแปร $_GET- ข้อมูล ส่งโดยใช้วิธี POSTเก็บไว้ในตัวแปร $_โพสต์.

ขั้นแรกเรามาเขียนโค้ดเพื่อทำงานกับวิธี GET จากนั้นจึงใช้วิธี POST

แบบฟอร์ม - สตูดิโอออกแบบ OX2.ru

 

print_r($_GET); //ส่งออกอาร์เรย์โดยใช้ print_r
?>

ชื่อของคุณ:
ข้อความ:



ตอนนี้เรามาปรับปรุงสคริปต์เพื่อส่งข้อมูลโดยใช้วิธี POST

แบบฟอร์ม - สตูดิโอออกแบบ OX2.ru

 

print_r($_POST); //ส่งออกอาร์เรย์โดยใช้ print_r
?>

ชื่อของคุณ:
ข้อความ:



เพื่อให้เข้าใจการทำงานมากขึ้นด้วย แบบฟอร์มใน PHPการส่งและรับข้อมูล วิธีการ POST และ GETในบทเรียนหน้าเราจะสร้างเกมลอจิกง่ายๆ

เมื่อพัฒนาโครงการใดๆ สิ่งพื้นฐานที่สุดประการหนึ่งคือการสื่อสารกับผู้ใช้ เราสามารถถามเขาบางสิ่งบางอย่างและให้สิทธิ์เขาในการตอบ (แบบสำรวจ) เราสามารถให้สิทธิ์เขาในการเขียนความคิดเห็นเกี่ยวกับผลิตภัณฑ์หรือบริการ เราสามารถช่วยเขาคำนวณต้นทุนการบริการของเราได้หากจำเป็นต้องสร้างออนไลน์ ร้านค้า ฯลฯ

OX2 2014-10-05 2014-10-05

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

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

Name1=value1&name2=value2&name3=value3

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

วิธีการรับ

วิธีการ GET ส่งข้อมูลผู้ใช้ที่เข้ารหัสซึ่งผนวกเข้ากับคำขอเพจ หน้าและข้อมูลที่เข้ารหัสแยกออกจากกันหรือไม่ เครื่องหมายคำถาม

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

  • วิธีการ GET จะสร้างสตริงแบบยาวที่ปรากฏในบันทึกเซิร์ฟเวอร์ของคุณในช่อง "ตำแหน่ง" ของเบราว์เซอร์
  • เมธอด GET จำกัดการส่งอักขระได้สูงสุด 1,024 ตัวเท่านั้น
  • อย่าใช้วิธี GET หากคุณมีรหัสผ่านหรืออื่นๆ ข้อมูลที่เป็นความลับเพื่อส่งไปยังเซิร์ฟเวอร์
  • GET ไม่สามารถใช้ในการถ่ายโอนข้อมูลไบนารี่ เช่น รูปภาพหรือ เอกสารข้อความไปยังเซิร์ฟเวอร์
  • ข้อมูลที่ส่งโดยใช้วิธี GET สามารถเข้าถึงได้โดยใช้ ตัวแปรสภาพแวดล้อม QUERY_STRING
  • PHP จัดเตรียม $_GET associative array เพื่อเข้าถึงข้อมูลที่ส่งทั้งหมดโดยใช้วิธี GET

if($_GET["name"] || $_GET["age"]) ( echo "Welcome ". $_GET["name"]; echo "You are ". $_GET["age"]. " ปี "; ออก(); )

ชื่อ: อายุ:

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

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

  • วิธี POST ไม่มีการจำกัดขนาดของข้อมูลที่จำเป็นต้องส่ง
  • สามารถใช้วิธี POST เพื่อส่ง ASCII และข้อมูลไบนารีได้
  • ข้อมูลที่ส่งโดยใช้วิธี POST จะส่งผ่านส่วนหัว HTTP ดังนั้นความปลอดภัยจึงขึ้นอยู่กับโปรโตคอล HTTP ด้วยการใช้ HTTP ที่ปลอดภัย คุณสามารถมั่นใจได้ว่าข้อมูลของคุณปลอดภัย
  • PHP จัดเตรียมอาร์เรย์ที่เชื่อมโยง $_POST เพื่อเข้าถึงข้อมูลทั้งหมดที่ส่งโดยใช้วิธี POST

ลองตัวอย่างต่อไปนี้โดยการวาง ซอร์สโค้ดลงในสคริปต์ test.php

if($_POST["name"] || $_POST["age"]) ( if (preg_match("[^A-Za-z"-]",$_POST["name"])) ( ตาย (" ชื่อที่ไม่ถูกต้องและชื่อควรเป็น alpha"); ) echo "Welcome ". $_POST["name"]; echo "You are ". $_POST["age"]. " years old."; exit(); )

ชื่อ: อายุ:

$_REQUEST ตัวแปร

ตัวแปร PHP $_คำขอมีเนื้อหาเช่น $_GET, $_โพสต์, ดังนั้น $_คุกกี้- เราจะหารือเกี่ยวกับตัวแปร $_คุกกี้เมื่อเราพูดถึงคุกกี้

ตัวแปร PHP $_REQUEST สามารถใช้เพื่อดึงผลลัพธ์จากข้อมูลแบบฟอร์มที่ส่งโดยใช้วิธี GET และ POST

สิ่งที่พวกเขามีเหมือนกันก็คือพวกมันทำงานในลักษณะเดียวกัน ไม่มีความแตกต่างในทางเทคนิคระหว่างพวกเขา แต่มีความแตกต่างทางอุดมการณ์

ฉันจะพูดถึงพวกเขาในบริบทของ PHP โปรดทราบว่าโปรโตคอล HTTP เกี่ยวข้องทางอ้อมกับ PHP เนื่องจากถูกสร้างขึ้นสำหรับการแลกเปลี่ยน หน้า htmlและ PHP ก็ขยายขีดความสามารถของทั้งสองอย่าง

คำขอ GET ใช้เพื่อรับข้อมูลและ POST ใช้ในการส่ง (โปรดจำไว้ว่าในทางเทคนิคแล้วพวกมันทำงานเหมือนกัน)

ดังนั้น ในบริบทของ PHP ตามอุดมการณ์นี้ เราจึงทำสิ่งต่อไปนี้:
1. ทุกครั้งที่คุณเริ่ม PHP อาร์เรย์ superglobal ($_GET, $_POST) จะถูกสร้างขึ้นตามค่าเริ่มต้น
2. หากมีเครื่องหมายคำถาม(?) ในสตริงการสืบค้น ทุกอย่างหลังจากนั้นถือว่า พารามิเตอร์คำขอ GET จะแสดงในรูปแบบ "key"="value" และใช้อักขระเครื่องหมายและ (&) เป็นตัวคั่น
ตัวอย่าง:
รับ /index.php?name=Andrey&surname=Galkin
นี่คือสตริงการสืบค้น มี 2 พารามิเตอร์ พารามิเตอร์เหล่านี้จะเข้าไปในอาร์เรย์ $_GET
3. $_POST ถูกกรอกด้วยวิธีอื่น เนื้อหาของอาร์เรย์นี้เต็มไปด้วย "ส่วนหัวคำขอ" นั่นคือจากสถานที่ซึ่งซ่อนเร้นจากการมองเห็นอย่างชัดเจน เบราว์เซอร์จะดูแลงานทั้งหมดในการสร้างส่วนหัวดังกล่าว แม้ว่าบางครั้งบางสิ่งจะถูกแก้ไขในส่วนหัวด้วยตนเอง

ส่วนใหญ่แล้วคำขอโพสต์จะใช้ในรูปแบบ (เพื่อส่งข้อมูล)

ตัวอย่างเช่น เรามีแบบฟอร์มเข้าสู่ระบบที่มี 2 ช่อง: เข้าสู่ระบบและรหัสผ่าน

สมมติว่าเรากำลังใช้วิธี GET จากนั้น เมื่อส่งแบบฟอร์ม เราจะไปที่ที่อยู่ต่อไปนี้ /login.php?login=Andrey&password=123 คุณจะยอมรับว่าการส่งข้อมูลดังกล่าวด้วยวิธีนี้ไม่ปลอดภัยเลย ใครๆ ก็สามารถเปิดเบราว์เซอร์ของคุณได้ และเริ่มป้อนที่อยู่เว็บไซต์ เพื่อดูรหัสผ่านและการเข้าสู่ระบบของคุณจากประวัติ

แต่ถ้าเราระบุวิธี POST เราจะได้รับคำขอต่อไปนี้:
POST /login.php (login=Andrey&password=123) สิ่งที่อยู่ในวงเล็บจะถูกซ่อนไว้และไม่ได้บันทึกไว้ในเบราว์เซอร์แต่อย่างใด

เพื่อสรุป:
GET คือการรับหน้าเฉพาะเข้ามา แบบฟอร์มบางอย่าง(การเรียงลำดับ หน้าบล็อกปัจจุบัน แถบค้นหา ฯลฯ)
POST - สำหรับการส่งข้อมูลที่ไม่ส่งผลต่อการแสดงเพจ ในแง่ที่ว่าข้อมูลนี้มีผลกับผลลัพธ์ของสคริปต์เท่านั้น (การเข้าสู่ระบบ รหัสผ่าน หมายเลขบัตรเครดิต ข้อความ ฯลฯ)

และข่าวดีอีกอย่างก็คือสามารถนำมารวมกันได้ เป็นต้น
POST /index.php?page=login (login=Andrey&password=123) ฉันคิดว่าฉันได้อธิบายไปเพียงพอแล้วว่าจะเกิดอะไรขึ้นและพารามิเตอร์ใดจะเข้าสู่อาร์เรย์ใด

การใช้วิธี GET และ POST ใน PHP เป็นเรื่องยากที่จะประเมินค่าสูงไป เนื่องจากวิธีการเหล่านี้พบได้ในเกือบทุกเว็บไซต์ ก่อนที่จะศึกษาเนื้อหาที่อธิบายไว้ด้านล่าง ฉันขอแนะนำให้คุณทำความคุ้นเคยกับแท็ก html

- มาดูรายละเอียดแต่ละวิธีเหล่านี้กัน

วิธีการรับ

วิธีการ GET ใช้สตริง URL เพื่อถ่ายโอนข้อมูล คุณอาจสังเกตเห็น URL ที่ยาวและไม่ชัดเจน ตัวอย่างเช่น: function.php?login=Alex&email=dezyakin- ในกรณีนี้ ข้อมูลจะถูกประมวลผลใน function.php หลังเครื่องหมายคำถาม "?" จะมีรายการพารามิเตอร์ที่ส่งผ่าน (พารามิเตอร์ถูกคั่นด้วย "&") พร้อมด้วยค่า: พารามิเตอร์การเข้าสู่ระบบถูกกำหนดให้เป็นค่า Alex และตัวแปรอีเมลถูกกำหนดให้เป็นค่า dezyakin ข้อมูลจะถูกจัดเก็บไว้ในอาร์เรย์ซูเปอร์โกลบอล $_GET ตัวอย่างของการใช้วิธี GET แสดงไว้ด้านล่าง:

เข้าสู่ระบบ: อีเมล: การใช้อาร์เรย์ superglobal $_GET เราจะแสดงค่าที่ยอมรับได้:*/เอคโค่ "
เข้าสู่ระบบ = ". $_GET["เข้าสู่ระบบ"] ; echo "
อีเมล = ". $_GET["อีเมล"] ; ?>

สังเกตว่าเราอ่านค่าจาก $_GET superglobal array ได้อย่างไร: $_GET["ตัวแปร_ชื่อ"]- ในตัวอย่างของเรา ชื่อตัวแปรถูกประกาศในรูปแบบ (name=login และ name=email)

คำแนะนำ:
ก่อนที่จะประมวลผลค่าที่ได้รับ ฉันแนะนำให้คุณตรวจสอบการมีอยู่ของค่าเหล่านั้นผ่านฟังก์ชันต่างๆ isset(ชื่อตัวแปร)หรือ ว่างเปล่า (ชื่อตัวแปร)- ฟังก์ชั่นเหล่านี้ถูกกล่าวถึงในบทที่ 2 ก่อนหน้า: ตัวแปรใน PHP ตัวอย่างเช่น:

ตรวจสอบการมีอยู่โดยใช้ isset:ถ้า isset ($_GET["เข้าสู่ระบบ"] ) ( ตัวดำเนินการสำหรับการประมวลผลการเข้าสู่ระบบ ... } //หรือตรวจสอบการมีอยู่โดยใช้ว่าง:ถ้าว่างเปล่า ($_GET["email"] ) ( โอเปอเรเตอร์สำหรับการประมวลผลอีเมล ... } ?>

ในแบบฟอร์ม คุณสามารถระบุชื่อไฟล์ที่จะประมวลผลค่าที่ถ่ายโอนได้ ทำได้โดยใช้แอตทริบิวต์การกระทำของแบบฟอร์ม ซึ่งสามารถกำหนดที่อยู่ของไฟล์นี้ได้ ตามค่าเริ่มต้น ไฟล์นี้ถูกกำหนดไว้ ไฟล์ปัจจุบัน(เช่น ประมวลผลในไฟล์ที่มีแบบฟอร์มอยู่) นี่คือตัวอย่างที่ข้อมูลจากแบบฟอร์มถูกถ่ายโอนไปยังไฟล์ sccipt.php เพื่อการประมวลผล:

เข้าสู่ระบบ: อีเมล:

ไฟล์ script.php ต้องมีตัวจัดการข้อมูลบางประเภท ไม่เช่นนั้นข้อมูลจะถูกส่งผ่านโดยว่างเปล่า

วิธีการ GET มีข้อเสียหลายประการ:

  • ผู้ใช้เห็นค่าของพารามิเตอร์ที่ส่งผ่าน
  • ผู้ใช้สามารถปลอมแปลงได้ง่าย พารามิเตอร์ที่ผ่าน;
  • การส่งข้อมูลไบนารี่ไม่สะดวก (คุณต้องเข้ารหัสข้อมูลดังกล่าว) รูปแบบข้อความ);
  • ปริมาณข้อมูลที่ถ่ายโอนมีจำกัด - 8 KB;

เนื่องจากข้อเสียข้างต้น วิธี GET จึงใช้เฉพาะในกรณีที่จำเป็นต้องถ่ายโอนข้อมูลจำนวนเล็กน้อย และข้อมูลนี้ไม่ได้จัดประเภทในทางใดทางหนึ่ง

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

วิธี POST แตกต่างจาก GET ตรงที่ข้อมูลจะถูกถ่ายโอนในรูปแบบส่วนตัว มีอาร์เรย์ superglobal $_POST ซึ่งสามารถอ่านข้อมูลได้ดังนี้: $_POST["ตัวแปร_ชื่อ"]- ตัวอย่างเช่น:

เข้าสู่ระบบ: "> อีเมล์: ">
การใช้อาร์เรย์ superglobal $_POST เราจะแสดงค่าที่ยอมรับได้:*/เอคโค่ "
เข้าสู่ระบบ = ". $_POST["เข้าสู่ระบบ"] ; echo "
อีเมล = ". $_POST["อีเมล"] ; ?>

ผลลัพธ์ของการรันโค้ดข้างต้นจะแสดงในรูปด้านล่าง:

อย่างที่คุณเห็น URL ไม่มีคำลงท้ายใด ๆ แต่ยังคงได้รับและแสดงข้อมูล

บันทึก:
1) ปริมาณของค่าที่ส่งโดยใช้วิธี POST ถูกจำกัดโดยค่าเริ่มต้นและเท่ากับ 8 MB ในการเพิ่มค่านี้ คุณต้องเปลี่ยนคำสั่ง post_max_size ใน php.ini

2) ใน PHP เวอร์ชันก่อนหน้า แทนที่จะใช้ชื่ออาร์เรย์ superglobal แบบสั้น $_GET และ $_POST กลับใช้ชื่อที่ยาวกว่า: $HTTP_GET_VARS และ $HTTP_POST_VARS ตามค่าเริ่มต้นจะถูกปิดใช้งานใน PHP 5 แต่คุณสามารถเปิดใช้งานได้ในไฟล์กำหนดค่า php.ini โดยใช้พารามิเตอร์ register_long_arrays ในเวอร์ชัน php 6 ชื่อยาวเหล่านี้จะไม่สามารถใช้ได้

3) ก่อนที่จะประมวลผลตัวแปรจาก $_POST ฉันแนะนำให้คุณตรวจสอบตัวแปรว่ามีตัวแปรอยู่หรือไม่ เช่นเดียวกับที่ทำกับเมธอด GET



 


อ่าน:


ใหม่

วิธีฟื้นฟูรอบประจำเดือนหลังคลอดบุตร:

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

การใช้สไตล์ใน Excel วิธีสร้างสไตล์ใหม่ของคุณเอง

หากคุณใช้ตัวเลือกเดียวกันนี้ในการจัดรูปแบบเซลล์ในเวิร์กชีตในสเปรดชีตของคุณอย่างสม่ำเสมอ การสร้างสไตล์การจัดรูปแบบ...

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

เกิดข้อผิดพลาดอะไรระหว่างการติดตั้ง?

หมายเหตุ: โปรแกรม AutoLISP สามารถทำงานได้บน AutoCAD เวอร์ชันเต็มเท่านั้น โดยจะไม่ทำงานภายใต้ AutoCAD LT (ไม่รวมกรณีโหลด...

สถานภาพทางสังคมของบุคคลในสังคม

สถานภาพทางสังคมของบุคคลในสังคม

เสนอแนะสิ่งที่กำหนดการเลือกสถานะหลักของบุคคล การใช้ข้อความและข้อเท็จจริงของชีวิตทางสังคม ตั้งสมมติฐานสองข้อ และ...

การตีความข้อผิดพลาดแบบเต็ม

การตีความข้อผิดพลาดแบบเต็ม

มีผู้ใช้จำนวนไม่น้อยที่ต้องเผชิญกับปรากฏการณ์หน้าจอสีน้ำเงินแห่งความตาย จะทำอย่างไร (Windows 7 มักเกิดปัญหานี้บ่อยที่สุด)...

ฟีดรูปภาพ อาร์เอสเอส