PHP Header() Fonksiyonu - Sayfa Yönlendirme
PHP ile http başlıklarına ait bazı yetenekleri kullanılabilir. Bu bölümde http başlığı ile karekterseti tanımlama, yönlendirme, önbelleğe temizleme gibi konuları ele alınarak, bu işlemlerin nasıl gerçekleştirildiği öğrenilecektir. Başlık protokolünü kullanarak ihtiyaçlarınıza göre bu fonksiyonu kullanacaksınız.
Header()
fonksiyonu bir istemciye ham bir HTTP başlığı gönderir.
Sözdizimi:
header:Gereklidir. Gönderilecek başlık dizesini belirtir.
değiştirgeç:İsteğe bağlı. Başlığın önceki benzer bir başlığın yerini alması mı yoksa aynı türden yeni bir başlık mı eklemesi gerektiğini belirtir. Varsayılan, TRUE (değişecektir). FALSE aynı türden birden çok başlığa izin verir.
http_yanıt_kodu : İsteğe bağlı. HTTP yanıt kodunu belirtilen değere zorlar.
header()
fonksiyonun normal HTML etiketleri ve dosya veya PHP'deki boş satırlar dahil herhangi bir çıktıdan önce çağrılması gerektiğini unutmayınız. header()
çağrısından önce sıkça yapılan hatalar: kodu include
, require
veya başka bir dosya okuma fonksiyonu ile okumak; betik HTML'ye gömülüyse betiğin veya dosyanın başındaki boşluklar veya boş satırlar php versiyonuna göre bir hata verebilir.
<html>
<?php
/* Bu bir hata verecektir. header() çağrısından
* önce hiçbir Boş satırlar olmamalıydı. */
header('Location: http://localhost/');
?>
HTTP Yanıt Kodları
Üçüncü parametre olan http_yanıt_kodu , HTTP yanıt başlıklarını (200, 404 vb.) Göndermek için kullanılabilir. Başlık statü kodlarını kullanarak kullanıcılara belli seviyede uyarı mesajları verebilirsiniz. Bu uyarı mesajlarını aynı zamanda Google, Yahoo, bing, duckduckgo vb... arama motorlarına ait örümcekleride algılayabilmektedir.
Örneğin, yetkisi olmayanların erişmesini istemediğiniz bir sayfaya başlık bilgisi ekleyerek, bu sayfaya erişim izninin olmadığını bildirebilirsiniz. HTTP statü kod grupları ve açıklamalarını aşağıda tabloda gösterilmiştir.
Grup | Açıklama |
---|---|
1xx | Bilgi |
2xx | Başarı (200:OK 201:Created, 204: No-content) |
3xx | Yönlendirme(301:moved Permanently, 302: Moved Temporarily) |
4xx | Tarayıcı Hataları (400: Bad Reguest, 401:Unauthorized, 403:Forbidden 404: Not found) |
5xx | Sunucu hataları(500: internal Server Error, 502:Bad Gateway) |
// 301 kalıcı olarak taşındı
header("Location: /ayar.php",TRUE,301);
// 302 Kurmak
header("Location: /ayar.php",TRUE,302); //Bu varsayılan değer.
header("Location: /ayar.php");//Aynı
// 303 Farklı kaynağı görmek
header("Location: /ayar.php",TRUE,303);
// 307 Geçici Yönlendirme
header("Location: /ayar.php",TRUE,307);
Örnek verirsek.
<?php
if(isset($_SESSION['yetki']))
header("HTTP/1.0 403 Forbidden");
// 403 Forbidden: Adres erişimi yasaklanmıştır.
?>
Yukardaki örnekte, eğer kullnanıcı için yetki
isimli bir oturum değişkeni(session) oluşturulmamış ise, sayfaya erişimi http yanıt kodu ile kısıtlanmaktadır; Bu durumda kullanıcı sayfa içeriğini asla görüntüleyemez.
Yönlendirme
Bir sayfadan diğer bir sayfaya yönlendirme yapmak için kullanılır. Yönlendirme işlemi için header()
fonksiyonun çeşitli kullanımı aşağıda ki şekildedir.
<?php
// ayar php sayfasına yönlendirilir.
header("Location: ayar.php");
exit; //Yönlendirme sonrası herhangi bir kod çalıştırılmasın.
?>
Şimdi google web sayfasına yönlendirme yapalım
header("Location: http://www.google.com");
301 yönlendirme yapalım. 301 yönlendirmesi nedir ; 301 yönlendirmesi eski siteden yeni siteye yapılan yönlendirmedir.
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.yeniadresiniz.com" );
?>
Frameworklerde olan redirect fonksiyonunu yazalım.
<?php
function redirect($url = '/')
{
header('Location: ' . $url);
die();
}
redirect("http://www.google.com");
?>
Sürekli Yönlendirme
Birçok websayfasında "birkaç saniye içinde yönlendirileceksiniz" gibi uyarılar görürsünüz. Belirtilen süre içinde yeni sayfaya yönlendirilirsiniz. örneğin 5 saniye sonra ayar.php
dosyasına yönlendirilen bir örnek görelim.
<?php
header("Refresh: 5; url=ayar.php");
die('5 saniye sonra yönlendirileceksiniz. Beklemek için
<a href="ayar.php">Tıklayın.</a>');
>
3 saniye sonra google yönlendirme
<?php
header("Refresh: 3; url=http://www.google.com");
?>
Php’de kodlama yaparken header kısmında yaptığınız bir hata sonucu karakter sorunu yaşıyorsanız yapmanız gereken çok basit olacaktır. Header kısmında karakter seti tanımlaması yapmadıysanız veya yanlış bir karakter seti belirlediyseniz sayfanızda Türkçe karakterlerde anlamsız ifadeler gün yüzüne çıkacaktır. Header fonksiyonu bize karekter setini belirtmemizede yarar.
header("Content-Type: text/html; charset=utf-8");
Önbellek
Anlık güncellemelerin önemli olduğu bazı sayfaların tarayıcının önbelleğine alınmasına istenmez. Önbelleğe alınmasını istemediğiniz sayfaların başına aşağıdaki kodları ekleyerek, o sayfa ile ilgili bilgilerin kullanıcının bilgisayarına kaydedilmesini önleyebilirsiniz.
<?php
// Geçmişten bir tarih
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
Not: Kullanıcıların, tarayıcının varsayılan önbelleğe alma ayarlarını değiştirmek için ayarlayabilecekleri seçenekler vardır. Yukarıdaki başlıkları göndererek, bu ayarlardan herhangi birini geçersiz kılacak ve tarayıcıyı önbelleğe almaya zorlayacaksınız!
ismail kodaman 13/12/2020
yönetici 14/12/2020
- HTML
- CSS
- PHP
- JQUERY
- PHOTOSHOP
- JavaScript
- Web Dünyası
- Linux
- MİTHRİL FRAMEWORK
- Laravel
- Git
- React
- HTML LİNK(Bağlantı)EKLEME - LİNK VERME
- HTML YAZI VE RESİM ORTALAMA
- HTML RESME LİNK VERME
- HTML FORM OLUŞTURMA
- CSS YATAY MENÜ YAPIMI
- HTML RESİM EKLEME
- CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
- HTML DİV ve SPAN NEDİR?
- HTML ARKAPLANA MÜZİK EKLEME
- KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME