Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ