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
Lepaskan: 2024-11-02 20:42:30
asal
547 orang telah melayarinya

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan