พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / header(\"Location: login.html\");
jomtee
jomtee
Thu 14 Feb 2008 11:47:45

header("Location: login.html");

กับ

echo "<meta http-equiv=\"refresh\" content=\"0;URL=login.php\" />";

ต่างกันยังไงครับ เพราะเวลาใช้ ผมจะใช้

 echo "<meta http-equiv=\"refresh\" content=\"0;URL=admin.php\" />";

แต่   header("Location: login.html");

มันฟ้อง error ครับ

webmaster
webmaster
Thu 14 Feb 2008 22:11:33
ต้องเข้าใจการทำงานของ http protocol ด้วยนิดนึงครับ

Server จะทำการส่ง header มาบอก client ก่อนจะทำการส่ง content ดังนั้น
header() จะทำงานได้เฉพาะก่อนมีการส่ง content เท่านั้นครับ ส่วน meta tag นั้นจะเป็นส่วนของ head ของ content เพื่อให้ browser ทำงานเสมือนว่ามีการส่ง header มาสั่งเช่นเดียวกัน แต่ทั้งสองอย่างจะต่างกันตรงที่ header() จะทำงานเมื่อ browser อ่าน header ของเอกสารมาถึงถ้ามีคำสั่งดังกล่าว browser จะทำการไปเรียกเอกสารที่ระบุทันที ส่วน meta tag อย่างที่บอกว่ามันเป็นเพียง content แบบนึงดังนั้น browser จะต้องรอรับข้อมูลในส่วน content ก่อนถึงจะทำงานดังต้องการได้

header จะเป็นการบังคับ browser ที่มีประสิทธิภาพมากกว่า ส่วน meta นั้นอาจจะมีปัญหาในบางครั้งในบาง browser ครับ

ดังที่แจ้งแล้วว่า header ทำงานจะต้องส่งก่อน content ดังนั้นคำสั่ง header จึงต้องส่งไปก่อน content ทั้งหมด ก่อนจะมีการ echo หรือแม้แต่ error ซึ่งก็จะมีการ render error ไปยัง browser อาจจะทำให้ error ได้เช่นกันครับ
โจม
โจม
Fri 15 Feb 2008 08:35:06

ขอบคุณครับ

Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login