⊗ppPmHpRHP 400 of 447 menu

ปัญหาเกี่ยวกับส่วนหัวของ HTTP Response ใน PHP

ตามกฎของ HTTP จะต้องส่ง ส่วนหัวของ HTTP ก่อน จากนั้นจึงส่งเนื้อความของ HTTP Response เนื่องจากเหตุนี้ การทำงานกับฟังก์ชัน header ใน PHP จึงมีลักษณะเฉพาะของตัวเอง

ประเด็นคือ หากก่อนเรียกใช้ฟังก์ชันนี้ มีการส่งออก (output) ไปยังหน้าจอใดๆ มันจะถูกตีความว่าเป็นจุดเริ่มต้นของ เนื้อความตอบกลับ ในกรณีนี้ การเรียกใช้ ฟังก์ชัน header จะนำไปสู่ การแจ้งเตือน (warning) จาก PHP พร้อมข้อความ headers already sent ทั้งที่ส่วนหัวอาจจะยังถูกส่งไป หรือแม้แต่ข้อผิดพลาดอาจไม่แสดง (ขึ้นอยู่กับ การตั้งค่า PHP) แต่ส่วนใหญ่แล้วสิ่งนี้จะเกิดขึ้นแค่ บนเครื่องพัฒนา (local) เท่านั้น และเมื่อนำเว็บไซต์ขึ้นไปบนอินเทอร์เน็ต ทุกอย่างจะพัง

การส่งออกไปยังหน้าจอ หมายถึง ข้อความใดๆ ก็ได้ ตัวอย่างเช่น:

ข้อความ <?php header('Content-Type: text/html'); ?>

หรือบรรทัดว่าง:

<?php header('Content-Type: text/html'); ?>

หรือช่องว่าง:

<?php header('Content-Type: text/html'); ?>

หรือแท็ก:

<div> <?php header('Content-Type: text/html'); ?> </div>

หรือการส่งออกผ่าน echo:

<?php echo 'abc'; header('Content-Type: text/html'); ?>

หรือการส่งออกผ่าน var_dump:

<?php $str = 'abc'; var_dump($str); header('Content-Type: text/html'); ?>

แม้แต่การแจ้งเตือน (warning) ของ PHP ก็ถือเป็นการส่งออก ไปยังหน้าจอ ในตัวอย่างต่อไปนี้ มีการตั้งใจ อ้างอิงถึงตัวแปรที่ไม่มีอยู่จริง ซึ่งจะนำไปสู่การแสดงผล การแจ้งเตือน:

<?php $text += 1; header('Content-Type: text/html'); ?>

การแยกแท็ก PHP ก็สร้าง การส่งออกไปยังหน้าจอเช่นกัน:

<?php echo 'abc'; ?> <?php header('Content-Type: text/html'); ?>

จงสร้างการส่งออกไปยังหน้าจอโดยตั้งใจ ก่อนฟังก์ชัน header และศึกษาข้อความข้อผิดพลาดที่เกิดขึ้น

แก้ไขข้อผิดพลาดที่เกิดขึ้นในโค้ดนี้:

<!DOCTYPE html> <html> <head> <?php header('Content-Type: text/html'); ?> </head> <body> ข้อความ <body> <html>
ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ