ملخص للعديد من المشكلات التي يجب الانتباه إليها عند استخدام PHP Header للقفزات بين الصفحات
الكاتب:Eve Cole
وقت التحديث:2009-06-05 16:25:10
عند استخدام header("location:test.php") للانتقال إلى PHP، يجب عليك الانتباه إلى النقاط التالية، والتي ستساعد في حل بعض المشكلات التي غالبًا ما يواجهها المبتدئون.
1. لا يمكن أن يكون هناك مسافة بين الموقع و: "، وإلا سيحدث خطأ.
2. لا يمكن أن يكون هناك أي إخراج قبل استخدام الرأس.
3. سيتم أيضًا تنفيذ كود PHP الموجود بعد الرأس.
فيما يلي مقارنة مع إعادة التوجيه Response.redirect في asp:
مثال 1:
استجابة. إعادة توجيه "../test.asp"
header("location:../test.php");
الفرق بين الاثنين:
يمكن أن تعمل وظيفة إعادة التوجيه الخاصة بـ ASP بعد إرسال ملف الرأس إلى العميل.
يحب
<html><الرأس></الرأس><الجسم>
<%response.redirect "../test.asp"%>
</body></html>
تحقق مما إذا كانت التعليمات البرمجية التالية في PHP ستبلغ عن خطأ:
<html><الرأس></الرأس><الجسم>
<؟
header("location:../test.php");
?>
</body></html>
هذه هي الطريقة الوحيدة:
<؟
header("location:../test.php");
?>
<html><head></head><body>...</body></html>
أي أن وظيفة الرأس لا يمكنها إرسال أي بيانات إلى العميل من قبل.
مثال 2:
في آسيا والمحيط الهادئ
<html><الرأس></الرأس><الجسم>
<%
استجابة. إعادة توجيه "../a.asp"
استجابة. إعادة توجيه "../b.asp"
%>
</body></html>
والنتيجة هي إعادة توجيه الملف a.asp.
ماذا عن PHP؟
<؟
header("location:../a.php");
header("location:../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" إذن
إعادة توجيه "الأخبار/index.htm"
آخر٪>
<%نهاية إذا%>
<النص البرمجي>
فار 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';
</script>