SORU
11 Kasım 2008, Salı


PHP_SELF PATH_INFO SCRİPT_NAME vs vs vs REQUEST_URI

Codeıgniter PHP uygulama inşa ediyorum. Codeıgniter ana denetleyicisi için tüm istekleri gönderir: index.php. Ancak, URI index.php görmek hoşuma gitmiyor. Örneğin, http://www.example.com/faq/whatever http://www.example.com/index.php/faq/whatever yol. Bir senaryo adresi ne olduğunu bilmek için güvenilir bir yol istiyorum, gezinti ne yapacağımı bilemiyorum. mod_rewrite, Codeıgniter belgelerine başı olarak kullandım.

Kural aşağıdaki gibidir:

RewriteEngine on
RewriteCond $1 !^(images|inc|favicon\.ico|index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L] 

Normalde, sadece php_self kontrol ederdim ama bu durumda her zaman index.php. REQUEST_URI, PATH_INFO, vb. bulabilirim ama en güvenilir hangi olacağına karar vermeye çalışıyorum. Herkes (veya nerede bulacağımı biliyorum) PHP_SELF, PATH_INFO, SCRIPT_NAME, ve REQUEST_URI gerçek arasındaki farkı biliyor mu? Yardımlarınız için teşekkürler!

Not: Boşluk eklemek zorunda kaldım Bu YÜZDEN alt çizgi olarak görür, ve nedense italik yapar.

Güncellendi: Boşlukları düzeltildi.

CEVAP
28 Kasım 2008, Cuma


Bu değişkenler arasında farklılıklar bazı pratik örnekler
Örnek 1. PHP_SELF SCRİPT_NAME farklıdırsadeceurl talep formu
http://example.com/test.php/foo/bar

[PHP_SELF] => /test.php/foo/bar
[SCRIPT_NAME] => /test.php

(bu PATH_INFO mantıklı bilgi [PATH_INFO] içerdiğinde durum gibi görünüyor =>/foo/bar) Not: bu bazı eski PHP sürümlerinde farklı olarak kullanılan (&;= 5.0 ? lt).

Örnek 2. REQUEST_URI olmayan boş bir sorgu dizesi girildiğinde SCRİPT_NAME farklıdır:
http://example.com/test.php?foo=bar

[SCRIPT_NAME] => /test.php
[REQUEST_URI] => /test.php?foo=bar

Örnek 3. REQUEST_URI farklı sunucu tarafı zaman SCRİPT_NAME redirecton etkisi olduğu (örneğin apache üzerinde büyü):

http://example.com/test.php

[REQUEST_URI] => /test.php
[SCRIPT_NAME] => /test2.php

Örnek 4. REQUEST_URI komut ile HTTP hataları işlerken SCRİPT_NAME farklıdır.
Apache Direktifi kullanarak Veremiyoruz 404 /404error.php
http://example.com/test.php

[REQUEST_URI] => /test.php
[SCRIPT_NAME] => /404error.php

IIS sunucu özel hata sayfaları kullanarak
http://example.com/test.php

[SCRIPT_NAME] => /404error.php
[REQUEST_URI] => /404error.php?404;http://example.com/test.php

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Charles Griffin Gibson

    Charles Grif

    26 NİSAN 2006
  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • hoorahjencar

    hoorahjencar

    6 HAZİRAN 2007

İLGİLİ SORU / CEVAPLAR