Rumah >pembangunan bahagian belakang >tutorial php >Apakah perbezaan antara PHP_SELF, PATH_INFO, SCRIPT_NAME dan REQUEST_URI dan yang manakah harus saya gunakan?
Apabila membangunkan aplikasi sebelah pelayan, menentukan alamat tepat permintaan adalah penting untuk navigasi dan pengendalian. Artikel ini membandingkan empat superglobal PHP: PHP_SELF, PATH_INFO, SCRIPT_NAME dan REQUEST_URI, untuk memberikan pemahaman yang jelas tentang perbezaan dan kebolehpercayaan mereka.
PHP_SELF mewakili skrip semasa yang sedang dilaksanakan. Nilainya termasuk URI penuh skrip, termasuk mana-mana subdirektori atau rentetan pertanyaan. Dalam contoh yang disediakan, di mana mod_rewrite digunakan untuk menghalakan permintaan kepada pengawal utama, PHP_SELF akan sentiasa menjadi "index.php," tanpa mengira URL yang diminta sebenar.
PATH_INFO mengandungi bahagian URI mengikut nama skrip dan sebarang rentetan pertanyaan. Ia mewakili maklumat laluan berbanding skrip. Menggunakan contoh yang sama, jika URL yang diminta ialah "http://www.example.com/faq/whatever", PATH_INFO akan menahan "/faq/whatever."
SCRIPT_NAME memberikan laluan lengkap dan nama fail bagi skrip yang sedang dijalankan. Dalam kebanyakan kes, ia serupa dengan PHP_SELF, tetapi berbeza apabila menggunakan mod_rewrite dengan RewriteBase atau jika permintaan itu adalah subpermintaan. Dalam contoh mod_rewrite, SCRIPT_NAME akan menjadi "/test.php" dan bukannya "index.php."
REQUEST_URI mengandungi URI lengkap seperti yang dihantar oleh klien, termasuk sebarang rentetan pertanyaan . Ia adalah perwakilan paling lengkap bagi URL yang diminta. Walau bagaimanapun, ia boleh berbeza daripada SCRIPT_NAME dan PHP_SELF dalam keadaan tertentu, seperti rentetan pertanyaan tidak kosong, ubah hala sisi pelayan atau ralat HTTP (cth., 404).
Contoh berikut menggambarkan perbezaan antara superglobal ini:
Apabila URL diminta dalam bentuk "http://example.com/test.php/foo/bar":
Apabila rentetan pertanyaan bukan kosong dimasukkan (http://example.com/test.php?foo=bar):
Apabila ubah hala sisi pelayan berkuat kuasa:
Berdasarkan contoh ini, REQUEST_URI menyediakan perwakilan paling komprehensif bagi URL yang diminta. Walau bagaimanapun, ia boleh dipengaruhi oleh ubah hala sisi pelayan atau ralat HTTP. PHP_SELF dan SCRIPT_NAME biasanya boleh dipercayai untuk menentukan alamat skrip, tetapi PATH_INFO boleh berguna untuk mengekstrak maklumat laluan tertentu apabila mod_rewrite digunakan.
Atas ialah kandungan terperinci Apakah perbezaan antara PHP_SELF, PATH_INFO, SCRIPT_NAME dan REQUEST_URI dan yang manakah harus saya gunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!