GET kullanmadan URL veri aktarmak

4 Cevap

Ben seçilmiş bir üye için bilgilerini görüntüleyen bir sayfa var. Page/member1 Bu bir PHP dosyası sadece yapmak mümkün mü: Page/index.php?Member=member1 Böyle yapmak web sitelerine bakın: Şu anda, ben şöyle GET verileri kullanarak URL üyesini seçmek seçin ?

4 Cevap

Sayfası isteklerini tek bir php script (aka kontrolör) kanalıyla böylece dostu URL'ler web sunucusu tarafından işleme çeşit gerekir.

Örneğin, Apache URL desenleri maç ve perde arkasında isteği değiştirme yeteneği vardır - aslında kullanıcı orijinal GET dize girmişti sanki tepki PHP yazmak istiyorsunuz, ama bunun yerine dostu URL kullanabilirsiniz.

. Apache için basit bir örnek - belge kök ve yazma bir htaccess koymak:

RewriteEngine On
RewriteRule   ^Page/([A-Za-z0-9\_]+)/?$   index.php?member=$1 [QSA,L]

Ben eşdeğer IIS ne olacağını bilmiyorum - ama mevcut olduğunun farkındayım

Bu sadece PHP ile yapılamaz -. Eğer mod_rewrite apache genellikle htacess ile bunu.

Web sunucusuna bağlıdır hepsi bunu yapmak için birçok yolu vardır. Apache, bazı olasılıklar:

  • mod_rewrite (en esnek yoldur, ancak yapılandırmak için sıkıcı olabilir)
  • Seçenek + MultiView (istenen URL'ye benzer adlı olmak çok kolay, ama gerektirir PHP dosyaları)
  • Özel 404 eylemci (önerilmez)

Apache kullanıyorsanız ve Multiview etkin söylüyorlar. Dosya Page.php Açıkçası Page/member1 dahil hangi, Page/* için bir maç olacaktır. Daha sonra (bak $_SERVER, ihtiyacınız olan her şeye sahiptir) URL incelemek ve isteği onur eğer karar olurdu.

Aşağıdaki kullanarak tek başına PHP bunu yapabilirsiniz:

1..) Belge kök dizinine göreli dosya alın.

$_SERVER['PHP_SELF']

http://example.com/test.php/foo.bar / test.php / foo.bar olacaktır.

2). Sizin sınırlayıcı tarafından Patlat (bu durumda /)

array explode  ( string $delimiter  , string $string  [, int $limit  ] )

3..) Dizideki değerleri doğrulayın ve sonra değişkenleri içine yerleştirin

var $myValue = myarray[0];