คอมพิวเตอร์ Windows อินเทอร์เน็ต

ความแตกต่างระหว่างรับและโพสต์ การใช้เมธอด GET และ POST เพิ่มเติมเกี่ยวกับ HTTP

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

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

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

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

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

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

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

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

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

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

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

ไปที่ที่อยู่ต่อไปนี้ (สำหรับคำอธิบายด้วยภาพ): http://calendarin.net/calendar.php?year=2016 ให้ความสนใจกับแถบที่อยู่ของเบราว์เซอร์: calendarin.net/calendar.php ? ปี = 2016ชื่อไฟล์หลัก ตามด้วยเครื่องหมายคำถาม (?) และพารามิเตอร์ "ปี" ที่มีค่า "2016" ดังนั้น สิ่งที่อยู่หลังเครื่องหมายคำถามคือคำขอ GET มันง่าย หากต้องการส่งพารามิเตอร์มากกว่าหนึ่งตัว แต่หลายพารามิเตอร์ จะต้องคั่นด้วยเครื่องหมายและ (&) ตัวอย่าง: calendarin.net/calendar.php ? ปี = 2016 & แสดง = วันทำงานและวันหยุด

ไฟล์หลักยังคงตั้งชื่อ ตามด้วยเครื่องหมายคำถาม (?) จากนั้น - พารามิเตอร์ "ปี" ที่มีค่า "2016" จากนั้น - เครื่องหมายและ (&) จากนั้น - พารามิเตอร์ "แสดง" พร้อมค่า "ทำงาน" -days-and-days -off ".

พารามิเตอร์ GET สามารถเปลี่ยนแปลงได้โดยตรงใน แถบที่อยู่เบราว์เซอร์ ตัวอย่างเช่น การเปลี่ยนค่า "2016" เป็น "2017" และกดปุ่ม คุณจะไปที่ปฏิทินสำหรับปี 2017

นี่คือการส่งข้อมูลในลักษณะที่ซ่อนอยู่ (ที่อยู่เพจไม่เปลี่ยนแปลง) นั่นคือคุณสามารถดูสิ่งที่ถูกส่งด้วยความช่วยเหลือของโปรแกรม (สคริปต์) เท่านั้น ตัวอย่างเช่น ในเครื่องมือต่อไปนี้สำหรับการนับอักขระในข้อความ ข้อมูลต้นฉบับจะถูกส่งโดยใช้วิธี POST: http://usefulonlinetools.com/free/character-counter.php

หากคุณมีคำถาม ข้อคิดเห็น และอีเมลของฉันที่บริการของคุณ

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

หากในการเข้าถึงเซิร์ฟเวอร์โดยใช้วิธี GET ก็เพียงพอแล้วที่เราจะพิมพ์คำขอลงใน URL จากนั้นในวิธี POST ทุกอย่างทำงานตามหลักการที่แตกต่างกัน

เพื่อตอบสนองคำขอประเภทนี้ เราต้องคลิกที่ปุ่มที่มีแอตทริบิวต์ type = "submit" ซึ่งอยู่บนหน้าเว็บ โปรดทราบว่าปุ่มนี้อยู่ในองค์ประกอบ

ด้วยแอตทริบิวต์ method ที่ตั้งค่าให้โพสต์

พิจารณา HTML นี้:

ป้อนข้อความ:


หากผู้ใช้ป้อนข้อความในช่องข้อความและคลิกที่ปุ่ม "ส่ง" ตัวแปรข้อความที่มีค่าของเนื้อหาที่ผู้ใช้ป้อนจะถูกส่งไปยังเซิร์ฟเวอร์

คำขอ POST และ GET อย่างง่าย

ตัวแปรนี้จะถูกส่งโดยวิธี POST

หากคุณเขียนในรูปแบบนี้:

จากนั้นข้อมูลจะถูกส่งโดยใช้วิธี GET

หากในกรณีของคำขอ GET ปริมาณข้อมูลที่เราสามารถถ่ายโอนถูกจำกัดด้วยความยาวของแถบที่อยู่ของเบราว์เซอร์ ในกรณีของคำขอ POST จะไม่มีข้อจำกัดดังกล่าว และเราสามารถโอนจำนวนที่มีนัยสำคัญได้ ของข้อมูล

ความแตกต่างอีกประการระหว่างวิธี POST และวิธี GET วิธี POST จะซ่อนตัวแปรทั้งหมดที่ส่งผ่านไปยังมันและค่าของมันในเนื้อหา (Entity-Body) ในกรณีของเมธอด GET จะถูกเก็บไว้ในสตริงคำขอ (Request-URI)

นี่คือตัวอย่างคำขอ POST:

POST / HTTP / 1.0 \ r \ n
โฮสต์: www.site.ru \ r \ n
ผู้อ้างอิง: http://www.site.ru/index.html\r\n
คุกกี้: รายได้ = 1 \ r \ n
ประเภทเนื้อหา: แอปพลิเคชัน / x-www-form-urlencoded \ r \ n
เนื้อหา-ความยาว: 35 \ r \ n
\ r \ n
เข้าสู่ระบบ = Dima & รหัสผ่าน = 12345

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

นอกจากนี้ วิธี POST ไม่เพียงแต่ถ่ายโอนข้อความ แต่ยังถ่ายโอนข้อมูลมัลติมีเดีย (รูปภาพ เสียง วิดีโอ) มีพารามิเตอร์ประเภทเนื้อหาพิเศษที่กำหนดประเภทข้อมูลที่ต้องการโอน

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

นี่คือตัวอย่างการประมวลผลใน PHP:

echo $ _POST ['ข้อความ'];
?>

ในโพสต์ที่แล้ว เราตัดสินใจว่าเบราว์เซอร์ (ไคลเอนต์) ส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์ และเซิร์ฟเวอร์ส่งการตอบกลับ HTTP ไปยังไคลเอนต์ คำขอและการตอบกลับเหล่านี้ได้รับการประมวลผลตามกฎเกณฑ์บางประการ มีบางอย่างเช่นไวยากรณ์ควรเขียนอย่างไรและในลำดับใด ต้องมีโครงสร้างที่ชัดเจน

มาดูโครงสร้างนี้กันดีกว่า ซึ่งใช้ในการสร้างคำขอและการตอบสนองในโปรโตคอล HTTP

คำขอ HTTP ประกอบด้วยสามส่วนหลัก ซึ่งมาในลำดับที่แสดงด้านล่างทุกประการ มีบรรทัดว่างระหว่างส่วนหัวและเนื้อหาของข้อความ (เป็นตัวคั่น) เป็นอักขระป้อนบรรทัด

สตริงว่าง (ตัวคั่น)

โพสต์และรับคำขอ ความแตกต่างระหว่างคำขอและข้อไหนดีกว่าและเพื่อจุดประสงค์อะไร

เนื้อหาข้อความ (เนื้อหาเอนทิตี) - พารามิเตอร์ทางเลือก

สตริงข้อความค้นหา- ระบุวิธีการส่ง URL ที่จะเข้าถึง และเวอร์ชันของโปรโตคอล HTTP

หัวเรื่อง- อธิบายเนื้อความของข้อความ ส่งพารามิเตอร์ต่าง ๆ และข้อมูลอื่น ๆ

เนื้อหาข้อความ- นี่คือข้อมูลซึ่งส่งในคำขอ เนื้อหาของข้อความเป็นพารามิเตอร์ทางเลือกและสามารถละเว้นได้

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

ในรายละเอียดเพิ่มเติมแต่ละองค์ประกอบของคำขอ เราจะพิจารณาในหมายเหตุต่อไปนี้

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

คำขอจากเบราว์เซอร์:

โฮสต์: webgyry.info

คุกกี้: wp-settings

การเชื่อมต่อ: รักษาชีวิต

ในตัวอย่างต่อไปนี้ เนื้อหาของข้อความมีอยู่แล้ว

การตอบสนองของเซิร์ฟเวอร์:

ประเภทเนื้อหา: ข้อความ / html; ชุดอักขระ = UTF-8

การเข้ารหัสการถ่ายโอน: chunked

การเชื่อมต่อ: รักษาชีวิต

Keep-Alive: หมดเวลา = 5

X-Pingback: //webgyry.info/xmlrpc.php

เอกสารไม่มีชื่อ

นี่คือข้อความที่แลกเปลี่ยนระหว่างไคลเอนต์และเซิร์ฟเวอร์ผ่านโปรโตคอล HTTP

อีกอย่าง คุณต้องการที่จะรู้ว่าองค์ประกอบบางอย่างในไซต์ของคุณมีความรู้สึกใด ๆ โดยใช้ "เป้าหมาย" ของ Yandex Metrics และ Google Analytics หรือไม่?

กำจัดสิ่งที่ใช้ไม่ได้ เพิ่มสิ่งที่ได้ผล และเพิ่มผลกำไรของคุณเป็นสองเท่า

หลักสูตรการกำหนดเป้าหมาย Yandex Metrica ..

หลักสูตรการตั้งเป้าหมาย Google Analytics ..

ไคลเอนต์ HTTP ส่งคำขอไปยังเซิร์ฟเวอร์ในรูปแบบของข้อความคำขอซึ่งมีรูปแบบดังต่อไปนี้:

  • ขอสตริง (จำเป็น)
  • ชื่อ (องค์ประกอบเสริม)
  • สตริงว่าง (จำเป็น)
  • เนื้อหาของข้อความ (ไม่บังคับ)

เรามาดูองค์ประกอบแต่ละอย่างแยกกัน

สตริงข้อความค้นหา

สตริงคำขอเริ่มต้นด้วยโทเค็นเมธอด ตามด้วย URI คำขอและเวอร์ชันโปรโตคอล องค์ประกอบถูกแยกออกจากกันด้วยช่องว่าง:

ลองพิจารณาองค์ประกอบนี้โดยละเอียด

วิธีการขอ

อิลิเมนต์นี้ระบุเมธอดที่จะเรียกบนฝั่งเซิร์ฟเวอร์บน URI ที่ระบุ

มีแปดวิธีใน HTTP:

  • ศีรษะ
    ใช้เพื่อรับบรรทัดสถานะและชื่อเรื่องจากเซิร์ฟเวอร์โดย URI ไม่เปลี่ยนแปลงข้อมูล
  • รับ
    ใช้เพื่อรับข้อมูลจากเซิร์ฟเวอร์ที่ URI ที่ระบุ ไม่เปลี่ยนแปลงข้อมูล
  • โพสต์
    ใช้เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ (เช่น ข้อมูลนักพัฒนา ฯลฯ) โดยใช้รูปแบบ HTML
  • ใส่
    แทนที่ข้อมูลก่อนหน้าทั้งหมดบนทรัพยากรด้วยข้อมูลที่โหลดใหม่
  • ลบ
    ลบข้อมูลปัจจุบันทั้งหมดบนทรัพยากรที่ระบุโดย URI
  • เชื่อมต่อ
    สร้างการเชื่อมต่อทันเนลกับเซิร์ฟเวอร์ที่ URI ที่ระบุ
  • ตัวเลือก
    อธิบายคุณสมบัติการเชื่อมต่อสำหรับทรัพยากรที่ระบุ
  • ติดตาม
    จัดเตรียมข้อความที่มีการติดตามย้อนกลับของตำแหน่งของ URI ของทรัพยากรที่ระบุ

ขอ URI

URI (Uniform Resource Identifier) ​​​​คือตัวระบุของทรัพยากรที่ส่งคำขอ รูปแบบ URI ที่พบบ่อยที่สุดแสดงไว้ด้านล่าง:

‘*’ ใช้เมื่อคำขอ HTTP ไม่ได้เจาะจงสำหรับทรัพยากรเฉพาะ แต่ใช้กับเซิร์ฟเวอร์ ใช้เมื่อไม่จำเป็นต้องใช้วิธีการกับทรัพยากรเท่านั้น ตัวอย่างเช่น,

แน่นอน uriใช้เมื่อมีการร้องขอ HTTP ไปยังพร็อกซี ขอให้พร็อกซีส่งคำขอจากแคชที่มีอยู่และส่งคืนการตอบกลับ ตัวอย่างเช่น:

asbolutny_path | แหล่งที่มาใช้โดย chatso ส่วนใหญ่

เรียนรู้ที่จะทำงานกับคำขอ GET และ POST

ขอทรัพยากรเฉพาะของเซิร์ฟเวอร์เฉพาะ ตัวอย่างเช่น ลูกค้าต้องการรับทรัพยากรจากเซิร์ฟเวอร์ผ่านพอร์ต 80 ที่อยู่ของทรัพยากรคือ “www.proselyte.net” และส่งคำขอต่อไปนี้:

กำลังขอช่องส่วนหัว

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

ด้านล่างนี้คือรายการของฟิลด์ส่วนหัวที่สำคัญที่สุดที่สามารถใช้ได้:

  • ยอมรับ-Charset
  • ยอมรับการเข้ารหัส
  • ยอมรับ-ภาษา
  • การอนุญาต
  • คาดหวัง
  • If-Match
  • ถ้า-แก้ไข-ตั้งแต่
  • If-None-Match
  • If-Range
  • If-Unmodified-Since
  • พิสัย
  • ผู้อ้างอิง
  • ตัวแทนผู้ใช้

หากเราต้องการใช้ไคลเอนต์ของเราเองและเว็บเซิร์ฟเวอร์ของเราเอง เราก็สามารถสร้างฟิลด์ส่วนหัวของเราเองได้

ตัวอย่างคำขอ HTTP

นี่เป็นการสรุปการศึกษาคำขอ HTTP ของเรา
ในบทความถัดไป เราจะมาดูการตอบสนองของ HTTP

วิธีหนึ่งที่คุณสามารถส่งคำขอ HTTP ไปยังเซิร์ฟเวอร์คือคำขอ GET วิธีนี้เป็นวิธีที่ใช้กันทั่วไปและส่วนใหญ่มักทำการร้องขอไปยังเซิร์ฟเวอร์โดยใช้วิธีนี้

วิธีที่ง่ายที่สุดในการสร้างคำขอ GET คือการพิมพ์ URL ลงในแถบที่อยู่ของเบราว์เซอร์

เบราว์เซอร์จะส่งข้อมูลต่อไปนี้ไปยังเซิร์ฟเวอร์:

GET / HTTP / 1.1
โฮสต์: webgyry.info
ตัวแทนผู้ใช้: Mozilla / 5.0 (Windows NT 6.1; rv: 18.0) Gecko / 20100101 Firefox / 18.0
ยอมรับ: ข้อความ / html, แอปพลิเคชัน / xhtml + xml, แอปพลิเคชัน / xml; q = 0.9, * / *; q = 0.8
ยอมรับภาษา: ru-RU, ru; q = 0.8, en-US; q = 0.5, en; q = 0.3
ยอมรับการเข้ารหัส: gzip, deflate
คุกกี้: wp-settings
การเชื่อมต่อ: รักษาชีวิต

คำขอประกอบด้วยสองส่วน:

1. คำขอ line

2.headers (ส่วนหัวของข้อความ)

โปรดทราบว่าคำขอ GET ไม่มีเนื้อหาข้อความ แต่นี่ไม่ได้หมายความว่าด้วยความช่วยเหลือนี้ เราไม่สามารถถ่ายโอนข้อมูลใดๆ ไปยังเซิร์ฟเวอร์ได้

ความแตกต่างระหว่างวิธี GET และ POST

สามารถทำได้โดยใช้พารามิเตอร์ GET พิเศษ

ในการเพิ่มพารามิเตอร์ GET ให้กับคำขอ คุณต้องใส่เครื่องหมาย "?" ที่ส่วนท้ายของ URL และหลังจากนั้นให้เริ่มถามตามกฎต่อไปนี้:

Parameter_name1 = parameter_value1 & Parameter_name2 = Parameter_value2 & ...

ตัวคั่นระหว่างพารามิเตอร์คือเครื่องหมาย "&"

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

http://site.ru/page.php?name=dima&age=27

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

นี่คือตัวอย่างวิธีการทำใน PHP

echo "ชื่อของคุณ:". $ _GET ["ชื่อ"]. "
»;
echo "อายุของคุณ:" $ _GET ["อายุ"]. "
»;
?>

โครงสร้าง $ _GET ["parameter_name"] อนุญาตให้คุณแสดงค่าของพารามิเตอร์ที่ส่งผ่าน

จากการรันโค้ดนี้ในเบราว์เซอร์ สิ่งต่อไปนี้จะปรากฏขึ้น:

ชื่อของคุณ: ดิมา
อายุของคุณ:27

เรายังส่งคำขอไปยังเซิร์ฟเวอร์โดยใช้วิธี GET

คุณอาจสังเกตเห็นว่าในไซต์ส่วนใหญ่ คุณสามารถดูที่อยู่ต่อไปนี้:

Http: //site/index.php? Blog = 2

ที่นี่แม้จะไม่รู้ php คุณก็สามารถเดาได้ว่าเรากำลังอ้างถึงไฟล์ index.phpแต่น้อยคนนักที่จะรู้ว่าเกิดอะไรขึ้นหลังเครื่องหมายคำถาม มันค่อนข้างง่าย: ? บล็อก = 2นี่คือการประกาศตัวแปรส่วนกลาง "$ _GET [" บล็อก "]" ด้วยค่า "2" ดังนั้นฉันจึงส่งตัวแปรไปยังสคริปต์ที่รับผิดชอบในการแสดงข้อมูลจากฐานข้อมูล มาเขียนสคริปต์เล็ก ๆ ที่คุณจะเห็นทุกสิ่งอย่างชัดเจน:

if (isset ($ _ GET ["blog"])) (
echo $ _GET ["บล็อก"];
}
?>

เราใช้คำสั่งเงื่อนไข if () เนื่องจากเงื่อนไขเป็นบรรทัดต่อไปนี้:

Isset ($ _ GET ["บล็อก"])

isset () ช่วยให้คุณค้นหาว่ามีตัวแปรที่ระบุในวงเล็บหรือไม่ นั่นคือเงื่อนไขที่ฉันอธิบายในโค้ดมีลักษณะดังนี้: หากตัวแปร $ _GET ["blog"] มีอยู่ ให้แสดงเนื้อหาของ ตัวแปรนี้บนหน้าจอ นี่คือสิ่งที่เกิดขึ้น:

ฉันคิดว่ามันชัดเจน มีการสร้างตัวแปรทั่วโลก $ _GETด้วยตัวระบุที่เราประกาศในแถบที่อยู่ ( ในกรณีนี้ด้วยตัวระบุ "บล็อก")

ตอนนี้ฉันต้องการชี้แจงประเด็นหนึ่ง สมมติว่าเราต้องประกาศตัวแปรสองตัว เราจะทำสิ่งนี้ได้อย่างไร ตัวแปรตัวแรกถูกประกาศหลังเครื่องหมายคำถาม "?" ตัวแปรที่สองถูกประกาศหลังจาก "&" ( บอกตามตรงไม่รู้ว่าป้ายนี้คืออะไร) นี่คือตัวอย่างการประกาศตัวแปรสามตัว:

Http: //site/index.php? A = 1 & b = 2 & c = 3

นี่คือรหัสผลลัพธ์:

if (isset ($ _ GET ["a"]) และ isset ($ _ GET ["b"]) และ isset ($ _ GET ["c"])) (
echo $ _GET ["a"]. "
";
echo $ _GET ["b"]. "
";
echo $ _GET ["c"]. "
";
}
?>

เงื่อนไขจะเป็นดังนี้:

หากมีตัวแปรส่วนกลาง $ _GET ["a"] และตัวแปรส่วนกลาง $ _GET ["b"] และตัวแปรส่วนกลาง $ _GET ["c"] ให้แสดงตัวแปรดังกล่าว, นี่คือผลลัพธ์:

แบบฟอร์ม

ก่อนที่เราจะไปถึง โพสต์แบบสอบถามคุณต้องเข้าใจว่ารูปแบบคืออะไร? ทำไมจึงจำเป็น? เนื่องจากตัวแปรส่วนกลาง $ _POST [""] ถูกสร้างขึ้นผ่านแบบฟอร์ม แบบฟอร์มคืออะไร? เหล่านี้เป็นฟิลด์สำหรับป้อนข้อมูลบางประเภทโดยผู้ใช้ เขตข้อมูลอยู่ในบรรทัดเดียว เขตข้อมูลขนาดใหญ่ นอกจากนี้ยังมีปุ่มตัวเลือก ช่องทำเครื่องหมาย มาจัดเรียงทุกอย่างตามลำดับ ...

แบบฟอร์มเป็นแท็ก:


องค์ประกอบของแบบฟอร์ม

แบบฟอร์มมีคุณสมบัติฉันจะแสดงรายการที่พบบ่อยที่สุด:

มาสร้างแบบฟอร์มกันเถอะ:


องค์ประกอบของแบบฟอร์ม

ในฐานะที่เป็นไฟล์ตัวจัดการ ฉันใส่ไฟล์ test.phpตามที่ฉันเขียนตัวอย่างให้คุณ ฉันกำหนดวิธีการส่งโพสต์เนื่องจากวิธีการเหล่านี้ถูกใช้ใน 99.9% ของกรณีทั้งหมด ฉันยังให้ชื่อแบบฟอร์มของเรา - form

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

ฉันแน่ใจว่าคุณเคยเห็นฟิลด์ดังกล่าวมากกว่าหนึ่งครั้ง ดังนั้นที่นี่ อย่างที่พวกเขาพูดว่า: "ไม่มีความคิดเห็น"

ตอนนี้ เรามารวบรวมแบบสอบถามการฝึกอบรมสั้นๆ ที่เราจะทำกันต่อไป หน้าที่ของเราคือเขียนแบบสอบถามเล็กๆ ที่จะบอกเราถึงชื่อบุคคลที่กรอก เพศ เขามาจากประเทศอะไร สีที่เขาชอบ และช่องข้อความที่ผู้ใช้สามารถเพิ่มบางอย่างเกี่ยวกับตัวเองได้ นั่นคือสิ่งที่ฉันทำ:

นามสกุลของคุณ ชื่อนามสกุล:

คุณเพศอะไร:
NS
NS

คุณมาจากประเทศอะไร



สีที่ชอบ :

สีดำ:
สีแดง:
สีขาว:
อื่น:

เกี่ยวกับตัวฉัน:




โปรดทราบว่าเกือบทุกแท็กมีแอตทริบิวต์ ค่า, มีไว้เพื่ออะไร? มันบันทึกข้อมูลที่คุณจะถ่ายโอนไปยังหน้าอื่น ฉันหวังว่ามันจะชัดเจน

ตอนนี้ หากเราเรียกใช้โค้ดนี้ในเบราว์เซอร์ เราจะเห็นสิ่งต่อไปนี้:

ฉันใช้แอตทริบิวต์สำหรับ form การกระทำที่มีความหมาย test.phpซึ่งหมายความว่า ข้อมูลจากแบบฟอร์มจะถูกส่งไปยังไฟล์ test.php

โพสต์คำขอ

ทีนี้มาเขียนโค้ด php กัน เพื่อให้เราดูข้อมูลที่เรากรอกเข้าไป ข้อมูลถูกเก็บไว้ที่ไหน? ในกรณีของคำขอรับข้อมูลของเราถูกเก็บไว้ในตัวแปรส่วนกลาง $ _GET [""] เมื่อส่งคำขอโพสต์ ข้อมูลจะอยู่ในตัวแปรส่วนกลาง $ _POST [""] วี วงเล็บเหลี่ยมจำเป็นต้องลงทะเบียนเช่นในกรณีของตัวแปรโกลบอลตัวระบุ คำถามคือ ฉันจะหาตัวระบุนี้ได้ที่ไหน นั่นเป็นเหตุผลที่เราต้องการแอตทริบิวต์ชื่อบนองค์ประกอบของแบบฟอร์ม! ชื่อเหล่านี้เป็นกุญแจสำคัญสำหรับเราใน อาร์เรย์ทั่วโลกโพสต์. มาเริ่มอธิบายสคริปต์กัน:

if (isset ($ _ POST ["submit"])) (
echo "ชื่อ:". $ _ POST ["fio"]. "
";
echo "Sex:". $ _ POST ["sex"]. "
";
echo "ประเทศที่พำนัก:". $ _ POST ["city"]. "
";

Echo "สีที่ชอบ:
";
echo $ _POST ["color_1"]. "
";
เสียงสะท้อน $ _POST ["color_2"]. "
";
เสียงสะท้อน $ _POST ["color_3"]. "
";
เสียงสะท้อน $ _POST ["color_4"]. "
";
echo "เกี่ยวกับฉัน:" $ _ POST ["about"]. "


";
}
?>

เงื่อนไข if ที่เราได้เขียนไว้ว่า: หากมีตัวแปรส่วนกลาง $ _POST ["submit"] เราจะแสดงข้อมูลบนหน้าจอ ตัวแปรส่วนกลางนี้ถูกสร้างขึ้นหากเราคลิกที่ปุ่มส่งนั่นคือสาเหตุใน ตัวอย่างนี้ต้องระบุแอตทริบิวต์ชื่อในปุ่ม คุณอาจสงสัยว่าเหตุใดแอตทริบิวต์ชื่อจึงเป็นทางเลือกสำหรับปุ่ม มันค่อนข้างง่าย โดยปกติโปรแกรมเมอร์จะไม่ติดตามการกดปุ่ม แต่ติดตามข้อมูลที่ส่ง สำหรับ งานที่ถูกต้องตัวอย่างเช่น แบบฟอร์มการติดต่อ จำเป็นต้องติดตามไม่ใช่การกดปุ่ม แต่เป็นความถูกต้องของการป้อนข้อมูล และค้นหาว่าข้อมูลนี้ถูกป้อนหรือไม่ ในตัวอย่างของเรา เราไม่ได้ตรวจสอบข้อมูลที่ส่ง แต่เพียงติดตามการคลิกปุ่มเพื่อทำให้ตัวอย่างง่ายขึ้น ... นี่คือสิ่งที่เราได้รับ:

บทสรุป

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

ป.ล.: คุณต้องการที่จะ เกมส์คอมพิวเตอร์กลายเป็นจริงมากยิ่งขึ้น? Directx 11 สำหรับ windows 7 สามารถดาวน์โหลดได้ฟรีบน Windows ใน! เพลิดเพลินไปกับกราฟิกที่ยอดเยี่ยม!

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

เล็กน้อยเกี่ยวกับ HTTP

เซิร์ฟเวอร์ยอมรับคำขอสามประเภท: GET, POST และ HEAD คำขอโปรแกรมไปยังเว็บเซิร์ฟเวอร์มีลักษณะดังนี้:

รับ /index.html HTTP / 1.0

ส่วนแรกในกรณีนี้คือ GET คือวิธีการขอ ส่วนที่สองคือ index.html คือ URL ที่ร้องขอ และส่วนที่สามคือ HTTP / 1.0 เป็นโปรโตคอลที่ไคลเอ็นต์ใช้

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

GET วิธี

โดยค่าเริ่มต้น คำขอใช้เมธอด GET เมธอด POST จะใช้เมื่อระบุไว้อย่างชัดเจนในคำขอแบบฟอร์มเท่านั้น เป็นสิ่งสำคัญมากสำหรับโปรแกรมเมอร์ CGI ที่จะต้องเข้าใจว่าเมื่อมีการร้องขอ GET ข้อมูลในแบบฟอร์มจะถูกส่งไปยังเซิร์ฟเวอร์พร้อมกับ URL เว็บเซิร์ฟเวอร์ที่รองรับ CGI จะคัดลอกข้อมูลนี้ไปยังตัวแปรสภาพแวดล้อมชื่อ QUERY_STRING หลังจากนั้นโปรแกรม CGI มีหน้าที่รับข้อมูลจากตัวแปรสภาพแวดล้อมและประมวลผล

URL ที่มีสตริงการสืบค้นมีลักษณะดังนี้:

Http://www.domen-name.com/login.pl?nick=maks&psw=parol

เข้าสู่ระบบ? แยกสตริงการสืบค้นออกจาก URL จริงของทรัพยากร nick และ psw เป็นตัวแปรที่ส่งผ่านไปยังเซิร์ฟเวอร์ maks และ parol เป็นค่าของพวกมันตามลำดับ

วิธีโพสต์

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

เมื่อใช้วิธี POST เนื้อหาคำขอจะถูกส่งไปยังโปรแกรมเป็นอินพุตมาตรฐาน

การเลือกระหว่าง GET และ POST

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

ลองดูสถานการณ์สองสามสถานการณ์ที่คุณควรเลือกใช้วิธี GET หรือ POST

  • หากคุณต้องการให้โปรแกรมของคุณถูกเรียกโดยการอ้างอิง ควรใช้เมธอด GET
  • ถ้าคุณไม่ต้องการให้อาร์กิวเมนต์ที่ส่งผ่านไปยังโปรแกรมของคุณถูกเขียนไปยังล็อกไฟล์ของเซิร์ฟเวอร์ ให้ใช้วิธี POST ตัวอย่างเช่น ถ้าแบบฟอร์มต้องใช้ชื่อผู้ใช้และรหัสผ่าน คุณอาจไม่ต้องการให้บันทึกชื่อและรหัสผ่านในไฟล์รายงาน นอกจากนี้ ไม่ควรส่งรหัสผ่านเป็นส่วนหนึ่งของ URL
  • หากแบบฟอร์มของคุณมีมิติข้อมูลที่สำคัญ เช่น แบบฟอร์มมีกล่องข้อความพร้อมหมายเหตุและความคิดเห็น คุณควรใช้วิธี POST โดยทั่วไป คุณสามารถใช้วิธี GET ในกรณีนี้ได้เช่นกัน แต่คุณอาจพบกับข้อจำกัดขนาด URL ที่แตกต่างกันออกไป ระบบปฏิบัติการและเบราว์เซอร์ (จำกัดโดยขนาดของตัวแปรสภาพแวดล้อม) ใช้วิธี POST ได้ง่ายขึ้น
  • หากแบบฟอร์มของคุณมีฟิลด์ไฟล์ ให้ใช้วิธี POST นอกจากนี้ ในกรณีนี้ คุณต้องตั้งค่าแอตทริบิวต์ ENCTYPE เป็น multipart / form-data

คำอธิบาย

แอตทริบิวต์ method จะบอกเซิร์ฟเวอร์เกี่ยวกับวิธีการขอ

ไวยากรณ์

...

ค่า

ค่าของแอตทริบิวต์ method จะคำนึงถึงขนาดตัวพิมพ์ มีสองวิธี - รับและโพสต์

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

คุณสมบัติที่จำเป็น

ค่าเริ่มต้น

HTML5 IE Cr Op Sa Fx

แท็กรูปแบบแอตทริบิวต์วิธีการ