Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

www.site.com/uyeadi link oluşturma

Merhaba benim sorum siteye üye olan kullanıcılara ait bir profil hesabı linki örneğin www.site.com/uyeadi şeklilde bir link nasıl yapabilirim?
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • 1
    fka adlı üyenin fotoğrafı
    7 yıl önce yazılmış
    70 cevap - 0 soru
    PHP ile yazıyorsan

    Projenin ana dizinine .htaccess şeklinde bir dosya oluşturup


    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)$ user.php?username=$1


    kodunu yazarak user.php?username=uyeadi şeklinde request yapmasını sağlarsın,

    user.php'de bu değişkene
    $_GET['username']
    şeklinde ulaşabilirsin.

    Buna alternatif olarak PHP frameworkler kullanabilirsin, frameworklerdeki router olayı bu ihtiyacını giderebilir, fakat daha hızlı bir iş çıkarmak için yukarıdaki şekli öneririm.
    • mburak adlı üyenin fotoğrafı mburak
      teşekkürler
      7 yıl önce yazılmış
  • 2
    bcinarli adlı üyenin fotoğrafı
    7 yıl önce yazılmış
    12 cevap - 0 soru
    Benzer bir soruya (http://www.uzmansorusu.com/soru/479) cevabı vermiştim.

    fka'nın çözümü de doğru ama bir eksiklik var, senin bütün url sorgularını user.php dosyasına yönlendirmiş, o yüzden www.site.com/uyeadi şeklinde adresinde de user.php dosyası çalışacak, www.site.com/sayfaadi adresinde de user.php dosyası çalışacak.

    Sitende hem kullanıcılar hem de sayfalar olacak ise, adreslemeyi
    www.site.com/uye/uyeadi
    www.site.com/sayfadi
    www.site.com/haber/haberadi
    www.site.com/grup/grupadi

    şekline oluşturman daha iyi ve uygulama açısından mantıklı olacaktır.

    Sorunun cevabına gelince

    Bu tarz kullanım için öncelik yapmanın gereken 2 durum var
    1. sisteminiz apache tabanlı bir sunucu da olup, .htaccess dosyası ve mod_rewrite desteği kullanılabilir olmalı.
    2. Veritabanınızda, sayfalarınızı kaydettiğiniz tablo içerisinde, bu linklerde kullanacağınız "uyeadi" kısmıni kaydetmiş olduğunuz _UNIQUE_ değerli bir "uyeadi" sütunu olmalı.

    Zor Yöntem;

    Daha sonra önce htaccess içinde

    Options +FollowSymLinks
    RewriteEngine on

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . index.php [L]


    şeklinde bütün sorgularınızı index.php dosyasına gönderen bir tanımlama yapmanız gerekiyor. Daha sonra php dosyalarınızda hazırlayacağınız bir url_parser ile yazinin_basligi kısmını alıp, bunu veritabanınızdaki yazılarınızı/üyelerinizi eklediğiniz tablonun "yaziadi/uyeadi" şeklinde tanımlanmış ilgili kaydın sütunu ile karşılaştırmanız ve ilgili yazıyı seçmeniz gerekiyor.

    Yukarıdaki kullanım wordpress ve diğer benzeri sistemlerde kullanılan bir yöntem. İlk başlarda url parser hazırlamak zor gelebilir ciddi bir şekilde o zaman ikinci bir metod olarak şunu deneyebilirsiniz,

    Kolay Yöntem

    yine .htaccess kodunuzun içine şu kodu ekleyin
    Options +FollowSymLinks
    RewriteEngine on
    	      
    RewriteBase /
    
    RewriteRule ^uye/([A-Za-z0-9]+)/$ $1 [R]
    RewriteRule ^uye/([A-Za-z0-9]+)$ uye.php?title=$1
    	 
    RewriteRule ^grup/([A-Za-z0-9]+)/$ $1 [R]
    RewriteRule ^grup/([A-Za-z0-9]+)$ grup.php?title=$1
    	 
    RewriteRule ^haber/([A-Za-z0-9]+)/$ $1 [R]
    RewriteRule ^haber/([A-Za-z0-9]+)$ haber.php?title=$1
    
    RewriteRule ^([A-Za-z0-9]+)/$ $1 [R]
    RewriteRule ^([A-Za-z0-9]+)$ index.php?title=$1
    



    Bu kod ile php dosyanızın içerisinden bir
    $title = $_GET['title']

    şeklinde alabileceğiniz bir sanal querystringiniz olacak. Buradan sonra yine yukarıda anlattığım gibi, bu title değişkeni ile artık hangi sayfada iseniz, rahatlıkla veritabanında bulunan ilgili kaydı getirmek için kullanabileceğiniz bir değeriniz oluyor.
    • fka adlı üyenin fotoğrafı fka
      @bcinarli,

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . index.php [L]

      bunun yerine

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule (.*)$ index.php?route=$1 [L]

      kullanırsa,
      $_GET['route']
      parametresiyle url parsing yapmadan gelen verinin tümünü alabilir.

      Kaldı ki bir çok MVC yapısı bu şekilde kullanmaktadır.
      7 yıl önce yazılmış
    • gblack adlı üyenin fotoğrafı gblack
      peki index.php ye yönlendirdiğimizde bütün linkler için url_parser mantığı nasıl olmalı? gelen get verilerine göre include ederek mi?
      7 yıl önce yazılmış
    • bcinarli adlı üyenin fotoğrafı bcinarli
      genelde index.php de bir bootstrap komutu ve bazı include komutları bulunur MVC tarzı sistemlerde. Hazırlayacağınız url_parser fonksiyonu size urlnizi kısımlara ayırarak, bu kısımları kontrol edebileceğiniz bir sisteme sahip olmalı.
      7 yıl önce yazılmış