Code: Select all
header("Location: Yol/Adres");
header() fonksiyonu için sıkça yapılan hatalar: include, require veya başka bir dosya okuma işlevi ile okumaktır. include() fonksiyonu ile karıştırmamalısınız çünkü bu sayfaya eklemiyor tam anlamıyla sayfayı başka bir sayfaya yada scripte yönlendiriyor. Bu nedenle header() fonksiyonunun bulunduğu satırından sonra yazacağınız her satır boşuna olacaktır.
header() fonksiyonunun 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() fonksiyonunu çağırmanın iki özel biçimi vardır.
İlki, HTTP durum kodu gönderilirken kullanılır ve başlık "HTTP/" dizgesi ile başlar (harf büyüklüğüne duyarsızdır). Örneğin Apache'yi eksik dosyalarla ilgili sorunlar için (ErrorDocument yönergesi ile) bir PHP betiğini kullanacak şekilde yapılandırmışsanız betiğinizde uygun bir durum kodu üretmek için şu biçimi kullanabilirsiniz.
Code: Select all
<?php
// Bu örnekte "HTTP/" için özel bir durum gösterilmiştir.
// Her durumda geçerli olacak kullanım şöyle olurdu:
// 1. header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
// (Hala HTTP/1.0 kullanan istemci için http durum iletisinin yerini alır)
// 2. http_response_code(404); (öntanımlı iletiyi kullanmak için)
header("HTTP/1.1 404 Not Found");
?>
Code: Select all
<?php
header("Location: http://mesela.dom/"); /* Tarayıcıyı yönlendir */
/* Yönlendirme sonrası herhangi bir kodun çalıştırılmamasını sağlayalım. */
exit;
?>
header() fonksiyonu ile tarayıcının bir PDF dosyasını açmasını yada indirmesini isteyebilirsiniz.
Code: Select all
<?php
// Bir PDF çıktılayacağız
header('Content-Type: application/pdf');
// Dosya ismi indirilen.pdf olsun
header('Content-Disposition: attachment; filename="indirilen.pdf"');
// Okunacak PDF dosyası
readfile('original.pdf');
?>
PHP betikleri çoğunlukla istemcinin tarayıcısı veya sunucuya aracılık eden vekiller tarafından önbelleğe alınmaması gereken dinamik içerikler üretirler. Çoğu vekilin veya tarayıcının önbellekleme işlemini kapatmasını şöyle sağlayabilirsiniz:
Code: Select all
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Geçmişte bir tarih
?>