พารามิเตอร์จากคำขอรับ php เรียนรู้การทำงานกับคำขอ GET และ POST การสร้างคำขอ GET ด้วย PHP

ฉันมีโครงสร้าง 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% ของกรณี ฉันยังตั้งชื่อแบบฟอร์มของเราด้วย

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

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

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

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

เพศของคุณ:

และ

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



สีที่ชอบ :

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

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




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

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

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

คำขอโพสต์

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

if(isset($_POST["ส่ง"])) (
echo "ชื่อเต็ม: ".$_POST["fio"]"
";
echo "เพศ: ".$_POST["เพศ"]"
";
echo "ประเทศที่พำนัก: ".$_POST["เมือง"]"
";

เอคโค่ "สีที่ชอบ:
";
เสียงสะท้อน $_POST["color_1"]"
";
เสียงสะท้อน $_POST["color_2"]"
";
เสียงสะท้อน $_POST["color_3"]"
";
เสียงสะท้อน $_POST["color_4"]"
";
echo "เกี่ยวกับตัวคุณ: ".$_POST["เกี่ยวกับ"]"


";
}
?>

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

บทสรุป

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

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

จากการรับ(9)

วิธี "โค้ดน้อยลง" ในการรับพารามิเตอร์จากสตริงการสืบค้น URL ที่มีรูปแบบเช่นนี้คืออะไร

www.mysite.com/category/subcategory?myqueryhash

ผลลัพธ์ควรเป็น: myqueryhash

ฉันรู้เกี่ยวกับเรื่องนี้:

www.mysite.com/category/subcategory?q=myquery

คำตอบ

รหัสและสัญกรณ์นี้ไม่ใช่ของฉัน Evan K แก้ไขงานที่มีหลายค่าในชื่อเดียวกันด้วยฟังก์ชันที่ผู้ใช้กำหนด ;) นำมาจาก:

ผลลัพธ์ตัวอย่างข้างต้น:

สวัสดีฮันเนส!

หากคุณต้องการรับสตริงการสืบค้นทั้งหมด:

$_SERVER["QUERY_STRING"]

นอกจากนี้ หากคุณกำลังมองหาชื่อไฟล์ปัจจุบันพร้อมกับสตริงการสืบค้น คุณเพียงแค่ต้องมีสิ่งต่อไปนี้

ชื่อฐาน($_SERVER["REQUEST_URI"])

ซึ่งจะให้ข้อมูลแก่คุณดังตัวอย่างต่อไปนี้

ไฟล์.php? arg1 = ค่า & arg2 = ค่า

และหากคุณต้องการเส้นทางแบบเต็มไปยังไฟล์โดยเริ่มต้นจากรูทเช่น /folder/folder2/file.php?arg1=val&arg2=val ให้ลบฟังก์ชัน basename() ออกแล้วใช้การซ้อนทับ

$_SERVER["REQUEST_URI"]

ขอบคุณ @K. Shahzad สิ่งนี้จะช่วยเมื่อคุณต้องการเขียนสตริงคิวรีใหม่โดยไม่ต้องเขียนเพิ่มเติมใหม่ สมมติว่าคุณเขียนใหม่ /test/? X = y ใน index.php? Q = test & x = y และคุณต้องการรับสตริงข้อความค้นหา

ฟังก์ชัน get_query_string())( $arr = explode("?",$_SERVER["REQUEST_URI"]); if (count($arr) == 2)( return ""; )else( return "?".end( $ เอ่อ)”
"; ) ) $query_string = get_query_string();

วิธี PHP ในการทำเช่นนี้คือการใช้ฟังก์ชัน parse_urlซึ่งแยกวิเคราะห์ URL และส่งคืนส่วนประกอบ รวมถึงสตริงการสืบค้น

$url = "www.mysite.com/category/subcategory?myqueryhash"; เสียงสะท้อน parse_url($url, PHP_URL_QUERY); # เอาต์พุต "myqueryhash"

นี่คือฟังก์ชันของฉันในการกู้คืนชิ้นส่วน เส้นขอ ผู้อ้างอิง .

หากหน้าที่เรียกมีสตริงการสืบค้นอยู่แล้ว และคุณต้องกลับไปที่หน้านั้นและต้องการส่ง $_GET vars บางส่วน (ไม่ใช่ทั้งหมด) (เช่น หมายเลขหน้า)

ตัวอย่าง: สตริงการสืบค้น Referrer was?foo=1&bar=2&baz=3 การเรียก RefererQueryString("foo" , "baz") ส่งคืน foo=1&baz=3" :

ฟังก์ชัน RefererQueryString(/* var args */) ( //คืนค่าสตริงว่างหากไม่มี Referer หรือไม่มี $_GET vars ใน Referer ที่พร้อมใช้งาน: if (!isset($_SERVER["HTTP_REFERER"]) || Empty($_SERVER["HTTP_REFERER" " "]) ||. Empty(parse_url($_SERVER["HTTP_REFERER"], PHP_URL_QUERY))) ( return ""; ) // รับการสอบถาม URL ของผู้อ้างอิง (เช่น "threadID=7&page=8") $refererQueryString = parse_url ( urldecode($_SERVER["HTTP_REFERER"]), PHP_URL_QUERY); // คุณต้องการแยกค่าใด (คุณส่งชื่อเป็นตัวแปร) $args = func_get_args(); // รับสตริง "" URL ของผู้อ้างอิง: $pairs = explode("&",$refererQueryString); //String คุณจะกลับมาในภายหลัง: $return = ""; //วิเคราะห์สตริงที่ดึงมาและค้นหาสตริงที่สนใจ: foreach ($pairs as $pair) ) ( $keyVal = explode("=",$pair); $key = &$keyVal; $val = urlencode($keyVal); // หากคุณส่งชื่อเป็น arg ให้แนบคู่ปัจจุบันเพื่อส่งคืน string: if( in_array($key,$args)) ( $return .= "&". $key . "=" .$val; ) ) //นี่คือคู่ "key=value" ที่ส่งคืนของคุณซึ่งติดกาวไว้ด้วยกันกับ " &": return ltrim($return,"&"); ) //หากผู้อ้างอิงของคุณคือ "page.php?foo=1&bar=2&baz=3" //และคุณต้องการ header() กลับไปที่ "page.php?foo=1&baz=3" //(no "bar", เฉพาะ foo และ baz) จากนั้นใช้: header("Location: page.php?".refererQueryString("foo","baz"));

ฝ่ายสนับสนุนของ Microsoft ระบุว่า: "ความยาว URL สูงสุดคือ 2,083 อักขระใน Internet Explorer"

IE ประสบปัญหากับ URL มานานแล้ว ดูเหมือนว่า Firefox จะทำงานได้ดีกับอักขระมากกว่า 4,000 ตัว