ฉันมีโครงสร้าง URL พร้อมสตริงการสืบค้นและพารามิเตอร์ที่เรียกว่าตำแหน่ง
http://computerhelpwanted.com/jobs/?occupation=administrator&position=network+administrator
ฉันยังมีดรอปดาวน์การเลือกแบบฟอร์มพร้อมกับชื่อตำแหน่งการเลือกแบบฟอร์ม
เมื่อผู้ใช้ทำการเลือก ระบบจะส่งค่าพารามิเตอร์ไปยังแอ็ตทริบิวต์ action โดยเลือก name="position" เป็นพารามิเตอร์เพื่อใช้ในสตริงการสืบค้น
คำถามของฉันคือฉันจะเข้าถึงค่าการเลือกแบบฟอร์มแยกจากค่าสตริงการสืบค้นได้อย่างไร
ฉันใช้เมธอด _GET เพื่อเรียกค่าจากพารามิเตอร์สตริงการสืบค้น
$position = isset($_GET["position"]) ? ($_GET["ตำแหน่ง"]) : "";
แน่นอนว่าสิ่งนี้ได้รับค่าจากโครงสร้าง URL ไม่ใช่องค์ประกอบของแบบฟอร์ม หรืออาจจะใช่ไม่แน่ใจ แต่จากการทดสอบแล้ว ดูเหมือนว่าฉันจะได้ข้อสรุปว่าได้รับจาก URL ไม่ใช่ตามแบบฟอร์ม
ฉันจะเข้าถึงค่าที่เลือกของแบบฟอร์มเมื่อเปรียบเทียบใน PHP ของฉันได้อย่างไร
อัปเดต
ฉันมีปัญหากับ Canonical URL ที่ระบุในส่วนหัว
นี่คือวิธีที่มันควรจะเป็น
ข้อแตกต่างเพียงอย่างเดียวคือ - และ + ในสตริงการสืบค้น
สตริงการสืบค้นของฉันไม่ใช่ทั้งหมดที่มี + บางคนมี-. แต่ฉันแสดงเนื้อหาในทั้งสอง URL ไม่ว่าจะมี - หรือ + ไม่ว่าจะด้วยวิธีใด URL ทั้งสองจะได้รับเนื้อหาในหน้าเดียวกัน
แต่เนื่องจาก Canonical ถูกสร้างขึ้นแบบไดนามิกจาก URI และไม่ได้มาจากค่าขององค์ประกอบแบบฟอร์ม จึงมีอักขระ Canonical ที่แตกต่างกัน 2 ตัวในหน้าเนื้อหาทั้งสองหน้า
การใช้ _Get('value') จะดึงค่าจากสตริงการสืบค้นแทนองค์ประกอบแบบฟอร์ม ฉันรู้สิ่งนี้เพราะค่าองค์ประกอบแบบฟอร์มมีช่องว่างระหว่างผู้ดูแลระบบเครือข่ายซึ่งได้รับ urlencoded เมื่อแบบฟอร์มส่งเป็น network+administrator ดังนั้นหากฉันสามารถเปรียบเทียบกับค่าองค์ประกอบแบบฟอร์มฉันสามารถตั้งค่ามาตรฐานที่ถูกต้องได้
ดังนั้นเราจึงศึกษาพื้นฐานของ PHP อีกครั้งและในบทความนี้เราจะทำความคุ้นเคยกับวิธีส่งผ่านตัวแปรใน PHP ได้แก่ วิธีการรับและโพสต์- แต่ละรายการมีข้อดีและข้อเสีย และใช้ในสถานการณ์ที่เหมาะสมซึ่งจะกล่าวถึงในบทความนี้ นอกจากนี้เรายังจะดูตัวอย่างโค้ดที่สาธิตวิธีการทำงานของวิธี POST และ GET
การส่งผ่านตัวแปรโดยใช้วิธี GET
วิธีการส่งตัวแปรนี้ใช้ใน PHP เพื่อส่งผ่านตัวแปรไปยังไฟล์โดยใช้แถบที่อยู่ นั่นคือตัวแปรจะถูกส่งทันทีผ่านแถบที่อยู่ของเบราว์เซอร์ ตัวอย่างเช่น ลิงก์ไปยังบทความใน WordPress โดยไม่ใช้ CNC (SEF) ซึ่งมีลักษณะดังนี้:
https://site/?p=315
นั่นคือในกรณีนี้ ตัวแปร $p ที่มีค่า 315 จะถูกส่งผ่าน ตอนนี้เรามาดูวิธีการ GET โดยละเอียดมากขึ้นโดยใช้ตัวอย่าง สมมติว่าเราต้องส่งตัวแปรสามตัว $a, $b และ $c ไปที่ไฟล์ วิธีการรับและแสดงผลรวมบนหน้าจอ คุณสามารถใช้รหัสต่อไปนี้สำหรับสิ่งนี้
$a = $_GET["a"]; $b = $_GET["b"]; $c = $_GET["ค"]; $summa = $a + $b + $c; echo "ผลรวม $a + $b + $c = $summa";
เนื่องจากตัวแปรทั้งหมดจะถูกวางไว้ใน อาร์เรย์ระดับโลก GET() จากนั้นเราจะกำหนดค่าขององค์ประกอบที่สอดคล้องกันของอาร์เรย์ GET ให้ตัวแปรของเราก่อน เราทำสิ่งนี้ตั้งแต่เริ่มต้นเพื่อหลีกเลี่ยงข้อผิดพลาดต่างๆ เมื่อส่งผ่านตัวแปร ต่อไปเพื่อสาธิตการทำงาน เราเขียนสูตรที่กำหนดเองและแสดงผลลัพธ์บนหน้าจอ
หากต้องการทดสอบวิธี GET เพียงเพิ่มเครื่องหมายคำถาม “?” ลงในลิงก์ไฟล์ และผ่านเครื่องหมายและ "&" แสดงรายการตัวแปรที่มีค่า ให้เรามีไฟล์ get.phpซึ่งอยู่ที่รากของไซต์ ในการถ่ายโอนตัวแปรไปยังไฟล์ เพียงเขียนสิ่งต่อไปนี้ลงในแถบที่อยู่
http://site/get.php?a=1&b=2&c=3
ดังที่คุณเห็นจากตัวอย่าง ขั้นแรกเราจะเพิ่มเครื่องหมายคำถามไว้หลังชื่อไฟล์ ต่อไป เราจะลงทะเบียนตัวแปรและระบุค่าโดยใช้เท่ากับ หลังจากนี้ เราจะแสดงรายการตัวแปรอื่นๆ ในลักษณะเดียวกันผ่านเครื่องหมายแอมเพอร์แซนด์ ตอนนี้ เมื่อเราไปตามลิงค์นี้ เราจะเห็นผลรวมของตัวแปร $a, $b และ $c
วิธีนี้ง่ายมาก และไม่จำเป็นต้องสร้างไฟล์เพิ่มเติม ข้อมูลที่จำเป็นทั้งหมดมาโดยตรงผ่านแถบที่อยู่ของเบราว์เซอร์
ทีนี้เรามาดูวิธีที่สองในการส่งผ่านตัวแปรใน PHP กันดีกว่า - ด้วยวิธี POST.
การส่งผ่านตัวแปรไปยัง PHP โดยใช้วิธี POST
วิธีนี้ช่วยให้คุณถ่ายโอนตัวแปรอย่างลับๆ จากไฟล์หนึ่งไปยังอีกไฟล์หนึ่งได้ ตามที่คุณเข้าใจแล้ว โดยปกติจะใช้สองไฟล์เพื่อวัตถุประสงค์เหล่านี้ อันแรกมีแบบฟอร์มสำหรับการป้อนข้อมูลเริ่มต้น และอันที่สองประกอบด้วยไฟล์ผู้บริหารที่ยอมรับตัวแปร สำหรับการสาธิต ลองดูโค้ดต่อไปนี้
รหัสไฟล์แรกพร้อมแบบฟอร์มการส่งข้อมูล ตั้งชื่อมันว่า post-1.php
- การกระทำ – ระบุไฟล์ที่จะถ่ายโอนตัวแปร
- วิธีการ – วิธีการส่งผ่านตัวแปร ในกรณีของเรา นี่คือวิธี POST
- ชื่อ – ชื่อของแบบฟอร์ม ในเวลาเดียวกัน ตัวแปรที่มีชื่อเดียวกันจะถูกถ่ายโอนไปยังไฟล์
ช่องข้อความ:
- ชื่อ – ชื่อตัวแปร ในกรณีของเรา นี่คือชื่อและนามสกุล (ตัวแปรชื่อและนามสกุล)
- ประเภท – ประเภทฟิลด์ ในกรณีของเรา นี่คือช่องข้อความ
- name – ชื่อของปุ่มและตัวแปรที่จะถูกส่งไปพร้อมกับตัวแปรอื่นๆ
- ประเภท – ประเภทปุ่ม ในกรณีของเรานี่คือปุ่มสำหรับส่งข้อมูล
- ค่า – ข้อความบนปุ่ม
รหัสของไฟล์ที่สองซึ่งจะทำหน้าที่เป็นตัวรับตัวแปร เรียกมันว่า post-2.php กันดีกว่า
$ชื่อ = $_POST; $นามสกุล = $_POST; echo "ค่าของตัวแปรที่ส่งผ่านโดยวิธี POST คือ $name และ $lastname";
เช่นเดียวกับวิธี GET เราจะกำหนดค่าขององค์ประกอบที่เกี่ยวข้องให้กับตัวแปรก่อน อาร์เรย์ระดับโลกโพสต์- ต่อไป เพื่อความชัดเจน เราจะแสดงตัวแปรเหล่านี้บนหน้าจอโดยใช้
ตอนนี้เมื่อเราโหลดไฟล์แรก แบบฟอร์มก็จะโหลดขึ้นมา หลังจากป้อนข้อมูลแล้วให้คลิกที่ปุ่ม "ส่ง" ซึ่งส่งผลให้หน้าที่มีไฟล์ที่สองเปิดขึ้นในแท็บใหม่ซึ่งจะแสดงค่าที่เขียนในแบบฟอร์มในหน้าก่อนหน้า นั่นคือค่าของตัวแปรจากไฟล์แรกจะถูกถ่ายโอนไปยังไฟล์ที่สอง
นี่เป็นการสรุปบทความนี้เกี่ยวกับการส่งผ่านตัวแปรใน PHP หากคุณไม่ต้องการพลาดการปรากฏตัวของบทความอื่น ๆ ในบล็อก ฉันขอแนะนำให้สมัครรับจดหมายข่าวด้วยวิธีที่สะดวกในส่วน "สมัครสมาชิก" หรือใช้แบบฟอร์มด้านล่าง
นั่นคือทั้งหมดที่ ขอให้โชคดีและประสบความสำเร็จในการเรียนรู้พื้นฐานของ PHP
คุณอาจสังเกตเห็นว่าในเว็บไซต์ส่วนใหญ่ คุณสามารถดูที่อยู่ต่อไปนี้:
http://site/index.php?blog=2
ที่นี่ แม้จะไม่รู้ php คุณก็สามารถเดาได้ว่าเรากำลังเข้าถึงไฟล์อยู่ ดัชนี.phpแต่มีน้อยคนที่รู้ว่าอะไรเกิดขึ้นหลังเครื่องหมายคำถาม มันค่อนข้างง่าย: ?บล็อก=2นี่คือการประกาศตัวแปรโกลบอล "$_GET["blog"]" ที่มีค่า "2" ดังนั้นฉันจึงส่งตัวแปรไปยังสคริปต์ที่รับผิดชอบในการแสดงข้อมูลจากฐานข้อมูล มาเขียนสคริปต์เล็ก ๆ ที่คุณสามารถเห็นทุกสิ่งได้อย่างชัดเจน:
ถ้า(isset($_GET["บล็อก"])) (
เสียงสะท้อน $_GET["บล็อก"];
}
?>
เราใช้ตัวดำเนินการเงื่อนไข if() และบรรทัดต่อไปนี้ถูกใช้เป็นเงื่อนไข:
ไอเซต($_GET["บล็อก"])
isset() ช่วยให้คุณค้นหาว่ามีตัวแปรที่ระบุในวงเล็บอยู่หรือไม่ นั่นคือเงื่อนไขที่ฉันอธิบายไว้ในโค้ดมีลักษณะดังนี้: หากมีตัวแปร $_GET["blog"] อยู่ ให้แสดงเนื้อหาของตัวแปรนี้ บนหน้าจอ นี่คือสิ่งที่เกิดขึ้น:
ฉันคิดว่ามันชัดเจน มีการสร้างตัวแปรทั่วโลก $_GETด้วยตัวระบุที่เราประกาศไว้ในแถบที่อยู่ ( ในกรณีนี้ด้วยตัวระบุ "บล็อก")
ตอนนี้ฉันต้องการชี้แจงประเด็นหนึ่ง สมมติว่าเราต้องประกาศตัวแปรสองตัว จะต้องทำอย่างไร? ตัวแปรแรกจะถูกประกาศหลังเครื่องหมายคำถาม "?" ตัวแปรตัวที่สองถูกประกาศหลังเครื่องหมาย “&” ( พูดตามตรงฉันไม่รู้ว่าสัญลักษณ์นี้คืออะไร) นี่คือตัวอย่างการประกาศตัวแปร 3 ตัว:
http://site/index.php?a=1&b=2&c=3
นี่คือรหัสผลลัพธ์:
if(isset($_GET["a"]) และ isset($_GET["b"]) และ isset($_GET["c"])) (
เสียงสะท้อน $_GET["a"]"
";
เสียงสะท้อน $_GET["b"]"
";
เสียงสะท้อน $_GET["c"]"
";
}
?>
สภาพเสียงเช่นนี้:
หากมีตัวแปรโกลบอล $_GET["a"] และตัวแปรโกลบอล $_GET["b"] และตัวแปรโกลบอล $_GET["c"] ให้แสดงตัวแปรเหล่านั้นบนหน้าจอนี่คือผลลัพธ์:
แบบฟอร์ม
ก่อนที่เราจะไปถึง โพสต์คำขอคุณต้องเข้าใจว่ารูปแบบคืออะไร? ทำไมจึงจำเป็น? เนื่องจากตัวแปรโกลบอล $_POST[""] ถูกสร้างขึ้นผ่านแบบฟอร์ม แบบฟอร์มคืออะไร? เหล่านี้เป็นฟิลด์สำหรับผู้ใช้ในการป้อนข้อมูลบางอย่าง มีทั้งฟิลด์แบบบรรทัดเดียว ฟิลด์ขนาดใหญ่ รวมถึงปุ่มตัวเลือกและกล่องกาเครื่องหมาย ลองดูทุกอย่างตามลำดับ...
แบบฟอร์มเป็นแท็ก:
แบบฟอร์มมีคุณสมบัติ ฉันจะแสดงรายการที่พบบ่อยที่สุด:
มาสร้างแบบฟอร์มกันเถอะ:
ฉันตั้งค่าไฟล์เป็นไฟล์ตัวจัดการ ทดสอบ.phpเนื่องจากในนั้นข้าพเจ้าจึงเขียนตัวอย่างไว้ให้ท่านทั้งหลาย ฉันตั้งค่าวิธีการส่งเป็นโพสต์เพราะเป็นวิธีการที่ใช้ใน 99.9% ของกรณี ฉันยังตั้งชื่อแบบฟอร์มของเราด้วย
ตอนนี้เรามาดูโลกแห่งองค์ประกอบของรูปแบบกันดีกว่า สิ่งแรกที่คุณต้องเข้าใจคือองค์ประกอบเกือบทั้งหมดเป็นแท็ก ข้อแตกต่างเพียงอย่างเดียวคือในคุณลักษณะ พิมพ์ที่แท็กเหล่านี้ ให้ฉันแสดงรายการองค์ประกอบของฟอร์มที่ใช้:
ฉันแน่ใจว่าคุณเคยเห็นช่องดังกล่าวมากกว่าหนึ่งครั้ง ดังนั้นนี่คือสิ่งที่พวกเขาพูดว่า: “ไม่มีความคิดเห็น”
ตอนนี้เรามาสร้างแบบสอบถามการฝึกอบรมเล็กๆ น้อยๆ ซึ่งเราจะดำเนินการต่อไป งานของเราคือสร้างแบบสอบถามเล็กๆ ที่จะบอกชื่อบุคคลที่กรอก เพศ ประเทศที่พวกเขามาจาก สีที่ชอบ และช่องข้อความที่ผู้ใช้สามารถเพิ่มบางอย่างเกี่ยวกับตนเองได้ นี่คือสิ่งที่ฉันได้รับ: