Ringkasan beberapa masalah yang perlu diperhatikan saat menggunakan PHP Header untuk lompatan halaman
Penulis:Eve Cole
Waktu Pembaruan:2009-06-05 16:25:10
Saat menggunakan header("location:test.php") untuk melompat di PHP, Anda harus memperhatikan poin-poin berikut, yang akan membantu memecahkan beberapa masalah yang sering dihadapi pemula.
1. Tidak boleh ada spasi antara lokasi dan ":", jika tidak maka akan terjadi kesalahan.
2. Tidak boleh ada keluaran apa pun sebelum menggunakan header.
3. Kode PHP setelah header juga akan dieksekusi.
Berikut perbandingan dengan redirection respon.redirect di asp:
Contoh 1:
respon.redirect "../test.asp"
header("lokasi:../test.php");
Perbedaan keduanya:
Fungsi pengalihan ASP dapat berfungsi setelah mengirimkan file header ke klien.
menyukai
<html><kepala></kepala><tubuh>
<%response.redirect "../test.asp"%>
</tubuh></html>
Periksa apakah kode berikut di php akan melaporkan kesalahan:
<html><kepala></kepala><tubuh>
<?
header("lokasi:../test.php");
?>
</tubuh></html>
Ini adalah satu-satunya cara:
<?
header("lokasi:../test.php");
?>
<html><head></head><tubuh>...</body></html>
Artinya, fungsi header tidak dapat mengirim data apa pun ke klien sebelumnya.
Contoh 2:
di asp
<html><kepala></kepala><tubuh>
<%
respon.redirect "../a.asp"
respon.redirect "../b.asp"
%>
</tubuh></html>
Hasilnya adalah pengalihan file a.asp.
Bagaimana dengan phpnya?
<?
header("lokasi:../a.php");
header("lokasi:../b.php");
?>
<html><kepala></kepala><tubuh></tubuh></html>
Kami menemukan bahwa itu mengalihkan b.php.
Ternyata setelah mengeksekusi redirect di asp, kode selanjutnya tidak akan dieksekusi.
Setelah php mengeksekusi header, ia terus mengeksekusi kode berikut.
Dalam hal ini, pengalihan header di php tidak sebaik pengalihan di asp. Terkadang kita tidak dapat menjalankan kode berikut setelah pengalihan:
Umumnya kami menggunakan
jika(...)
tajuk("...");
kalau tidak
{
...
}
Namun kita cukup menggunakan cara berikut ini:
jika(...)
{ tajuk("...");keluar();}
Perhatikan juga bahwa masalah mungkin terjadi jika Unicode (UTF-8) digunakan untuk menyandikan, dan pengaturan cache perlu disesuaikan.
<[email=%@]%@LANGUAGE="VBSCRIPT[/email]" CODEPAGE="936"%>
<%jika Permintaan.ServerVariables("SERVER_NAME")="s.jb51.net" lalu
respon.redirect "berita/index.htm"
lain%>
<%akhir jika%>
<skrip>
var url = lokasi.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';
</skrip>