สรุปประเด็นต่างๆ ที่ควรคำนึงถึงเมื่อใช้ PHP Header สำหรับการข้ามหน้า
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-06-05 16:25:10
เมื่อใช้ header("location:test.php") เพื่อข้ามไปใน PHP คุณควรใส่ใจกับประเด็นต่อไปนี้ ซึ่งจะช่วยแก้ไขปัญหาบางอย่างที่มือใหม่มักพบ
1. ต้องไม่มีช่องว่างระหว่างตำแหน่งและ /// มิฉะนั้นจะเกิดข้อผิดพลาดขึ้น
2. ไม่สามารถมีเอาต์พุตใดๆ ก่อนที่จะใช้ส่วนหัว
3. โค้ด PHP ที่อยู่หลังส่วนหัวจะถูกดำเนินการด้วย
ต่อไปนี้เป็นการเปรียบเทียบกับการตอบสนองการเปลี่ยนเส้นทางใน asp:
ตัวอย่างที่ 1:
response.redirect "../test.asp"
header("ตำแหน่ง:../test.php");
ความแตกต่างระหว่างทั้งสอง:
ฟังก์ชันการเปลี่ยนเส้นทางของ ASP สามารถทำงานได้หลังจากส่งไฟล์ส่วนหัวไปยังไคลเอนต์
ชอบ
<html><หัว></หัว><ร่างกาย>
<%response.redirect "../test.asp"%>
</body></html>
ตรวจสอบว่าโค้ดต่อไปนี้ใน php จะรายงานข้อผิดพลาดหรือไม่:
<html><หัว></หัว><ร่างกาย>
-
header("ตำแหน่ง:../test.php");
-
</body></html>
นี่เป็นวิธีเดียว:
-
header("ตำแหน่ง:../test.php");
-
<html><head></head><body>...</body></html>
นั่นคือฟังก์ชันส่วนหัวไม่สามารถส่งข้อมูลใด ๆ ไปยังไคลเอนต์ได้ก่อน
ตัวอย่างที่ 2:
ใน asp
<html><หัว></หัว><ร่างกาย>
-
response.redirect "../a.asp"
response.redirect "../b.asp"
-
</body></html>
ผลลัพธ์คือการเปลี่ยนเส้นทางของไฟล์ a.asp
แล้ว PHP ล่ะ?
-
header("ตำแหน่ง:../a.php");
header("ตำแหน่ง:../b.php");
-
<html><head></head><body></body></html>
เราพบว่ามันเปลี่ยนเส้นทาง b.php
ปรากฎว่าหลังจากดำเนินการเปลี่ยนเส้นทางใน asp แล้วโค้ดที่ตามมาจะไม่ถูกดำเนินการ
หลังจากที่ php ดำเนินการส่วนหัวแล้ว มันก็จะยังคงดำเนินการโค้ดต่อไปนี้
ในเรื่องนี้ การเปลี่ยนเส้นทางส่วนหัวใน php ไม่ดีเท่ากับการเปลี่ยนเส้นทางใน asp บางครั้งเราไม่สามารถรันโค้ดต่อไปนี้หลังจากเปลี่ยนเส้นทาง:
โดยทั่วไปเราใช้
ถ้า(...)
ส่วนหัว("...");
อื่น
-
-
-
แต่เราสามารถใช้วิธีต่อไปนี้:
ถ้า(...)
{ ส่วนหัว("...");ทางออก();}
โปรดทราบว่าปัญหาอาจเกิดขึ้นได้หากใช้ Unicode (UTF-8) ในการเข้ารหัส และจำเป็นต้องปรับการตั้งค่าแคช
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%if Request.ServerVariables("SERVER_NAME")="s.jb51.net" แล้ว
response.redirect "ข่าว/index.htm"
อย่างอื่น%>
<%สิ้นสุดถ้า%>
<สคริปต์>
var url = location.href;
if(url.indexOf('http://www.devdao.com/')!=-1)location.href='/index/index.htm';
if(url.indexOf('http://www.knowsky.com/')!=-1)location.href='/index1/index.htm';
if(url.indexOf('http://www.google.com/')!=-1)location.href='/cn/index.asp';
if(url.indexOf('http://www.baidu.com/')!=-1)location.href='/cn/index.asp';
</สคริปต์>