Değişkenleri ve güzel adresler GET

4 Cevap php

ben bu noob soru biraz olduğunu düşünüyorum, ama burada gider.

PHP daha iyi bir anlayış $ _GET değişkenleri almak için çalışıyorum. CMS vb bir çok site.com/42 gibi bir şey içine site.com /? ID = 42 gibi şeyler dönüştürmek

Benim sorum bu durumda $ _GET değişkenleri ne olur, nedir? Ben denemek ve sayfa yük GET dizi yazdırmak ve boş.

4 Cevap

Eğer argümanlar bu şekilde geçtiği takdirde, geleneksel ? GET sözdizimi kullanılarak geçmedi gibi, artık değişkenleri GET edilecektir. Onlar kullandığınız "CMS" çerçeve tarafından işlenecek URL sadece bir parçası vardır.

Eğer geçmek oldu Ancak, bir "geleneksel" değişkeni GET ve sunucu üzerinde okumak istiyorsanız, CMS belgelerine danışmak gerekir. Çerçeve oldukça URL kullanmak için gidiyor, onlar artık gerekli olduğu gibi muhtemelen de, herhangi bir GET değişkenleri kaldıracaktır. Örneğin, CodeIgniter MVC framework (değil kendi başına bir CMS, ancak bunları oluşturmak için kullanılan olabilir) yapar.

Onlar bunu yolu kullanarak mod_rewrite edilir

Temelde web sunucusu başka bir şey için URI istekleri "yeniden" var, bu yüzden sizin gibi gelen istekleri var

http://your.site.com/Page/arg1/arg2/arg3

Ama yazma kuralı ile, bu desen (/ Page için bağlı tüm istekleri) içine maç Apache dönüş istekleri olacak:

http://your.site.com/Page?a=arg1&b=arg2&c=arg3

Daha sonra nihayet PHP $ _GET ['a'], $ _GET ['b'] ve $ _GET ['c'] değerleri için tüm set olurdu.

Çıkış this book

Sen site.com/42 gibi bir şey yapmak ve uygun bir yeniden yazma kuralı ekleyerek = 42 ID bir GET değişkeni koruyabilirsiniz. . Örneğin, Apache Web Server çalıştıran varsayarak, aşağıdaki ile (sizin webroota dizininde bulunur) htaccess dosyasını değiştirmek olabilir:

RewriteEngine On
RewriteRule ^(.*) /?id=$1 [L]

Şey, artık bir GET değişkeni değil, değişken sadece URL parçası olur. Bu URL'ler sonra özel uygulama tarafından çözümlenir. Çoğu MVC çerçeveler /controller/action/params üstünlüğünü takip ve aşağı parçası konumuna dayalı URL kırmak:

  • İlk /controller bölümü kullanmak için hangi kontrolör belirler
  • İkinci /action parçası aramak için hangi yöntemi belirler
  • Herhangi şu parametre sadece alıcı işleve argüman olarak geçirilir, anlam fonksiyonuna bağlıdır ve sipariş
  • Bazıları da /page:2 gibi adlı parametreleri kullanmak, bu yüzden doğru sırayla bağımlı olmak zorunda değilsiniz

Bu, tüm özelleştirilebilir. Onlar bile uygulama isabet önce de eski GET param URL'lerin içine URL'lerin bu tür yeniden yazmak için web sunucusu (Apache gibi) kullanabilirsiniz.