⊗ppPmRdIns 405 of 447 menu

การเปลี่ยนเส้นทางทันทีใน PHP

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

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

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

<?php if ($_GET['test']) { header('Location: test.php'); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); // จะทำงานแม้มีการเปลี่ยนเส้นทาง! ?>

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

<?php if ($_GET['test']) { header('Location: test.php'); die(); } $query = "UPDATE users SET changed=1 WHERE id=1"; mysqli_query($link, $query); ?>

ลองสร้างผลข้างเคียงที่ไม่พึงประสงค์ ในโค้ดของคุณ จากนั้นแก้ไข โดยใช้ฟังก์ชัน die

ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ