Cevaplara yorum özelliği eklendi. Lütfen tartışmalar için yorumları kullanın. Tüm güncellemeler

.HTACCESS İLK SEGMENTİ / PARAMETREYİ SİLME

İyi geceler dostlarım,


Tayfun ERBİLEN'in "Sıfırdan PHP Projesi oluşturma" videosundaki dosya sistemini kendime benimsedim gayet temiz geldiği için fakat routing de bir sıkıntı yaşadım, ilk başlarda çözerim diye salladım fakat çözemedik. Yaşadığım sıkıntıyı şöyle örneklendirecek olursak eğer

" blabla.com/profile/testkullanici " yapısında link yapısı mevcut. fakat ben burada ilk segmenti kaldırıp url yi " blabla.com/testkullanici " olarak oluşturmak istiyorum. Malesef yapamadım.

.htaccess de şöyle bir şey denedim fakat yanıt vermedi


 RewriteRule ^/profile/(.+)$ /$1 [L,QSA]

.htaccess sabit şekli şu şekildedir

RewriteEngine On
RewriteRule ^([0-9a-zA-Z-_/]+)$ index.php?url=$1 [QSA]


Index.php ile gerekli controller çağırılması şu şekilde.

blabla.com/profil/test-kullanici urlsi çalıştığı zaman profil controllere a gidiyor $_URL[0] profili temsil ediyor

<?php
    require "app/init.php";

    $_URL = get("url");
    $_URL = array_filter(explode("/", $_URL));

    if(!isset($_URL[0])) {
        $_URL[0] = "index";
    }

    if(!file_exists(controller($_URL[0]))) {
        $_URL[0] = "index";
    }
 
    require controller($_URL[0]);
   


4

Cevaplar (4)

İşlem devam ediyor, lütfen bekleyin..
Tayfun Erbilen
@tayfunerbilen
2 ay önce

eğer controller ismi olmadan doğrudan yapacaksanız o zaman ilk değeri alıp önce üye var mı onu kontrol edeceksiniz. Yani;


require "app/init.php";

$_URL = get("url");
$_URL = array_filter(explode("/", $_URL));

if (!isset($_URL[0])) {
    $_URL[0] = "index";
}

// üye varmı kontrol et
$query = $db->prepare('SELECT * FROM users WHERE user_url = :url');
$user = $query->execute([
    'url' => $_GET[0]
]);

// eğer urle ait üye varsa profile controllerini çalıştırmak için değeri profile e eşitle
if ($user) {
    $_GET[0] = 'profile';
}

if (!file_exists(controller($_URL[0]))) {
    $_URL[0] = "index";
}

require controller($_URL[0]);


Ve böylece profile.php çalışırsa $user değişkeninden üye bilgilerine erişip ona göre işlem yaptırabilirsin.

İşlem devam ediyor, lütfen bekleyin..
falanfilan
@blahblahblah
2 ay önce

Uyguladım fakat sonuç vermedi. Ayrıca burada PHP yerine .htaccess ile bir şeyler yapılması gerekmez mi ?

From : http://localhost/index?url=profil/dynamicString
To : http://localhost/dynamicString


bunu .htaccess ile yapamaz mıyız ?

İşlem devam ediyor, lütfen bekleyin..
Tayfun Erbilen
@tayfunerbilen
2 ay önce

sen zaten htaccess'te gerekeni yapmışsın dinamik hale getirmişsin. php tarafında bunu halletmen gerek, bunu daha önce çok kez yaptım ve bu mantıkta yapılıyor. Olmadı demek olmaz yani, biraz daha çaba :) olmadı ne olmadı? ne sonuç vermedi? debug yaptın mı? önce üye url geliyor mu onu test ettin mi? dbde öyle bir üye varm ı onu tespit ettin mi? üyelere ait sorgun çalışıyor mu değer dönüyor mu onu test ettin mi? yani birşeye sonuç vermedi demek için her ihtimali değerlendirip test etmek gerekir.

İşlem devam ediyor, lütfen bekleyin..
falanfilan
@blahblahblah
2 ay önce

tamam oldu dediğin gibi yapılıyormuş kafam ayık değildi ondan ilk başta yapamadım sanırım. Bu arada sitede bazı sorunlar var doğru cevap olarak işaretliyemiyorum false döndürüyor bir bak ona istersen. Birde sana sorum olacak sen yabancidizi.com u açarken geçmiş dizilerin kaynaklarını nasıl buldun mantık nedir? Yeni eklenen diziler statik olarak mı yoksa dinamik olarak mı ekleniyor? Geçmiş tüm dizilerin arşivini nereden buldun ve dinamik şekilde yükledin cevaplarsan sevinirim.

İşlem devam ediyor, lütfen bekleyin..

Cevap yaz Sadece sorunun cevabını yazın