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(header, değiştirgeç, http_yanıt_kodu)

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
Tıklayın.');

>

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!

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlacaktır.

8111

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML DİV ve SPAN NEDİR?
  • HTML FORM OLUŞTURMA
  • HTML KAYAN RESİM VE Marguee KULLANIMI
  • HTML ARKAPLANA MÜZİK EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML RESİM EKLEME
  • PHP ceil()-floor()-round() YUVARLAMA FONKSİYONU
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.