PHP ile Belirli Bir Süre Sonra Başka Sayfaya Yönlendirme
PHP kullanırken bazen kullanıcıyı belirli bir süre beklettikten sonra başka bir sayfaya göndermek isteyebiliriz. Örneğin bir işlem tamamlandıktan sonra kullanıcıya kısa bir bilgilendirme mesajı gösterip birkaç saniye içerisinde ana sayfaya veya başka bir web sitesine yönlendirme yapılabilir.
Bu işlem için PHP'de header() fonksiyonundan yararlanabiliriz.
Örneğimizde kullanıcıya 3 saniye sonra başka bir sayfaya yönlendirileceği bilgisini göstereceğiz.
Kullanacağımız PHP Kodu
<?php
// Buradan saniyeyi ayarlayabilirsiniz.
$sn = 3;
// Buradan yönlendirmek istediğiniz adresi belirleyebilirsiniz.
header("refresh:$sn;url=https://www.google.com");
// Yönlendirme yapılmadan önce gösterilecek mesaj.
die("$sn saniye içerisinde başka sayfaya yönlendirilecektir.");
?>
$sn Değişkeni Ne İşe Yarar?
Kodumuzun ilk bölümünde $sn adında bir değişken oluşturuyoruz.
Bu değişken, kullanıcının kaç saniye bekleyeceğini belirlemek için kullanılıyor.
$sn = 3;
Buradaki 3 değerini değiştirerek bekleme süresini değiştirebilirsiniz.
Örneğin 5 saniye beklemek için:
$sn = 5;
10 saniye beklemek için ise:
$sn = 10;
Bu sayede yönlendirme süresini tek bir değişiklikle kontrol edebiliriz.
header() Fonksiyonu
PHP'deki header() fonksiyonu, tarayıcıya HTTP başlık bilgileri göndermek için kullanılır.
Bu örnekte ise tarayıcıya belirli bir süre sonra başka bir URL'ye geçmesi gerektiğini bildiriyoruz.
header("refresh:$sn;url=https://www.google.com");
Buradaki refresh ifadesi bekleme süresini belirtir.
url= bölümünden sonra ise kullanıcının gönderileceği adres bulunur.
URL Adresini Değiştirmek
Örneğin kullanıcıyı Google yerine kendi sitenizdeki başka bir sayfaya göndermek istiyorsanız:
header("refresh:$sn;url=https://www.bhebatu.com");
Belirli bir PHP sayfasına yönlendirmek için:
header("refresh:$sn;url=anasayfa.php");
Alt klasörde bulunan bir sayfaya yönlendirmek için:
header("refresh:$sn;url=site/index.php");
die() Fonksiyonu
Kodumuzun son bölümünde die() fonksiyonunu kullanıyoruz.
die(), PHP'nin çalışmasını durdurur ve içerisine yazılan mesajı ekrana gönderir.
die("$sn saniye içerisinde başka sayfaya yönlendirilecektir.");
Buradaki $sn değişkeninin değeri otomatik olarak mesaja eklenir.
Değişkenimizin değeri 3 olduğu için kullanıcı şu mesajı görür:
3 saniye içerisinde başka sayfaya yönlendirilecektir.
Kodun Çalışma Mantığı
Program çalıştırıldığında işlemler sırasıyla şu şekilde gerçekleşir:
$sn = 3;ile bekleme süresi 3 saniye olarak belirlenir.header()ile yönlendirilecek adres belirlenir.- Tarayıcı 3 saniye bekler.
die()ile kullanıcıya bilgilendirme mesajı gösterilir.- 3 saniyenin sonunda kullanıcı belirtilen URL'ye yönlendirilir.
Örneği Kendi Sitenizde Kullanmak
Örneğin bir PHP işleminden sonra kullanıcıyı 5 saniye içerisinde ana sayfaya göndermek istediğimizi düşünelim. Kod şu şekilde olabilir:
<?php
$sn = 5;
header("refresh:$sn;url=index.php");
die("$sn saniye içerisinde ana sayfaya yönlendirileceksiniz.");
?>
Bu kod çalıştırıldığında kullanıcıya:
5 saniye içerisinde ana sayfaya yönlendirileceksiniz.
mesajı gösterilir ve 5 saniye sonra index.php sayfasına geçilir.
Başka Bir Örnek: Başarılı İşlem Sonrası Yönlendirme
Bu yöntem özellikle form işlemlerinden sonra kullanışlıdır. Örneğin kullanıcı bir kayıt işlemini tamamladıktan sonra kısa bir mesaj gösterip giriş sayfasına yönlendirilebilir.
<?php
echo "İşleminiz başarıyla tamamlandı.";
$sn = 3;
header("refresh:$sn;url=giris.php");
?>
Ancak burada önemli bir nokta vardır: PHP'de header() kullanırken mümkün olduğunca daha önce tarayıcıya çıktı gönderilmemelidir.
Bu nedenle yönlendirme kodunu genellikle sayfanın başında çalıştırmak daha güvenlidir.
Önemli: header() Kullanırken Dikkat
header() fonksiyonunun düzgün çalışabilmesi için HTTP başlıklarının tarayıcıya gönderilmemiş olması gerekir.
Bu nedenle header() satırından önce gereksiz HTML, echo, boşluk veya başka bir çıktı bulunmamasına dikkat edilmelidir.
Aksi durumda PHP şu tarz bir hata verebilir:
Warning: Cannot modify header information - headers already sent
Bu hatayla karşılaşırsanız özellikle PHP dosyasının en başındaki boşlukları ve daha önce gönderilen çıktıları kontrol etmelisiniz.
Daha Modern Bir Kullanım
Sadece belirli bir URL'ye yönlendirme yapmak istiyorsanız PHP'de header("Location: ...") kullanımı da oldukça yaygındır.
Bu yöntemde yönlendirme hemen gerçekleştirilir.
<?php
header("Location: https://www.google.com");
exit;
?>
Burada herhangi bir bekleme süresi bulunmaz. Kullanıcı doğrudan belirtilen adrese gönderilir.
Dolayısıyla beklemeli yönlendirme yapmak istediğiniz durumlarda refresh,
hemen yönlendirme yapmak istediğiniz durumlarda ise Location kullanabilirsiniz.
Özet
$sndeğişkeni bekleme süresini belirler.header()yönlendirme işlemini başlatır.refreshbelirli bir süre sonra işlem yapılmasını sağlar.url=kullanıcının gönderileceği adresi belirtir.die()PHP çalışmasını durdurup mesaj gösterebilir.Locationile beklemeden doğrudan yönlendirme yapılabilir.
Sonuç
PHP'de kullanıcıyı belirli bir süre beklettikten sonra başka bir sayfaya yönlendirmek oldukça kolaydır. Bu yöntem; başarılı işlem mesajları, kayıt işlemleri, form sonuçları, bakım sayfaları ve bilgilendirme ekranları gibi birçok yerde kullanılabilir.
Bu örnekte yalnızca $sn değişkenindeki saniye değerini ve url= bölümündeki adresi değiştirerek farklı yönlendirme işlemleri oluşturabilirsiniz.
