PHP Rota Sistemi
Router, route veya rota sistemi olarak geçen yapının tanımı ve PHP ile nasıl yapılacağı ile ilgili bilgiler yer almaktadır.
Rota sistemi nedir?
Router veya route genellikle ağ cihazlarında rastlanan kavramdır ve yönlendirici, rota, yol vb. anlamlara gelir.
Rota sistemi kullanıcıların isteklerini yönetmek için kullanılan bir yapıdır.
Rota sistemi sayesinde kullanıcı ve SEO dostu adresler oluşturulabilir.
Örneğin; kullanıcı web sayfasının /giris veya /kayit bölümlerine istek gönderdiğinde isteklere herhangi bir web sunucusu yerine PHP rota sistemi ile yanıt verilir.
Ayarların yapılması
PHP ile rota sistemi yapmak için öncellikle Apache, nginx vb. web sunucu yazılımlarının üstelendiği isteklere cevap verme işinin PHP’ye verilmesi gerekir.
Apache web sunucusu kullanan sistemler için .htaccess dosya yapısının aşağıdaki gibi düzenlenmesi gerekir.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Komutlardaki RewriteEngine On ile adreslerin /kayit, /giris vb. olmasını aktifleştiriyor.
RewriteRule ile tüm isteklerin PHP rota sisteminin olduğu index.php dosyasına yönlendirilmesini sağlıyor.
RewriteCond ile gelen klasör ve dosya isteklerinin index.php yönlendirilmesini devre dışı bırakıyor.
Nginx web sunucusu kullanan sistemler için nginx.conf dosya yapısının aşağıdaki gibi düzenlenmesi gerekir.
location / {
try_files $uri $uri/ /index.php;
}
Nginx ayarları ile gelen tüm istekler index.php yönlendiriliyor.
PHP CLI yapısı kullanıldığında parametre rota dosyasının eklenmesi gerekir.
PHP rota sistemi
Gerekli web sunucusu ayarlarının yapılmasından sonra gelen istekleri PHP ile alıp bu isteklere cevap vermek rota sistemi için yeterli olacaktır.
PHP ile gelen istekleri almak için $_SERVER değişkenine ait REQUEST_URI değeri kullanılır.
<?php
echo $_SERVER['REQUEST_URI'];
?>
Girilen adres http://localhost/giris gibi bir adres olduğunda REQUEST_URI değer olarak /giris alacaktır.
Değer kontrol edilerek aşağıdaki gibi basit bir rota sistemi oluşturulabilir.
<?php
$adres = explode('/', trim(mb_strtolower($_SERVER['REQUEST_URI']), '/'));
switch ($adres[0]) {
case '':
echo "Anasayfa";
break;
case 'giris':
echo "Giriş sayfası";
break;
case 'kayit':
echo "Kayıt sayfası";
break;
default:
echo "Olmayan bir sayfa";
break;
}
?>
PHP ile rota sistemi yapımı örnekteki gibi basit olabileceği gibi istek yöntemine (GET, POST, PUT, DELETE vb.) göre işlem yapan bir rota sistemi de yapılabilir.
Gelen istek yöntemini almak için $_SERVER değişkenine ait REQUEST_METHOD değeri kullanılır.
<?php
$adres = explode('/', trim(mb_strtolower($_SERVER['REQUEST_URI']), '/'));
$yontem = $_SERVER['REQUEST_METHOD'];
if ($adres[0]=='giris' && $yontem == 'GET') {
echo "Giriş formu burada yer alabilir.";
}
if ($adres[0]=='giris' && $yontem == 'POST') {
echo "Form istekleri burada yer alabilir.";
}
?>
Rota sistemi ile REST API, SEO dostu adres gibi işlemlerin yapılması kolaylaşacaktır.
PHP ile rota sistemini yazmak yerine çeşitli hazır yapıların (framework, class) kullanımı zaman, güvenlik ve hız gibi nedenlerden dolayı daha faydalı olacaktır.
PHP Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.