Rumah >pembangunan bahagian belakang >tutorial php >Apakah perbezaan antara PHP_SELF, PATH_INFO, SCRIPT_NAME dan REQUEST_URI dan yang manakah harus saya gunakan?

Apakah perbezaan antara PHP_SELF, PATH_INFO, SCRIPT_NAME dan REQUEST_URI dan yang manakah harus saya gunakan?

Linda Hamilton
Linda Hamiltonasal
2024-11-02 20:42:30492semak imbas

What are the differences between PHP_SELF, PATH_INFO, SCRIPT_NAME, and REQUEST_URI and which one should I use?

Memahami Perbezaan: PHP_SELF lwn PATH_INFO lwn SCRIPT_NAME lwn REQUEST_URI

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

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

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

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

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).

Perbandingan dan Kebolehpercayaan

Contoh berikut menggambarkan perbezaan antara superglobal ini:

  • Apabila URL diminta dalam bentuk "http://example.com/test.php/foo/bar":

    • PHP_SELF: /test.php/foo/bar
    • SCRIPT_NAME: /test.php
    • PATH_INFO: /foo/bar
  • Apabila rentetan pertanyaan bukan kosong dimasukkan (http://example.com/test.php?foo=bar):

    • PHP_SELF: /test.php
    • SCRIPT_NAME: /test.php
    • PATH_INFO: (kosong)
    • REQUEST_URI: /test.php?foo=bar
  • Apabila ubah hala sisi pelayan berkuat kuasa:

    • PHP_SELF: /test.php (permintaan asal)
    • SCRIPT_NAME: /test2.php (permintaan diubah hala)
    • REQUEST_URI: /test.php (permintaan asal)

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn