header() fonksiyonu [PHP]
Posted: Thu Apr 18, 2024 12:07 am
header() fonksiyonu karakter dizisi yani string girdi kabul eder. Biz genellikle şu şekliyle kullanıyoruz:
Sayfayı yönlendirmeye yarar. Başka bir deyişle bir HTTP başlığı gönderir. Sayfa yönlendirme tasarımcılar için önemlidir. Programları için farklı dosyalardaki script ve fonksiyonları açıp çalıştırmak genellikle gerekli olabilir.
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.
İkinci özel biçim "Location:" başlığıdır. Bu başlığın tarayıcıya geri gönderilmesinden başka, bir 201 veya 3xx durum kodu henüz atanmamışsa ayrıca bir REDIRECT (302) durum kodu da gönderilebilir.
İndirmeler ve PDF Okuma
header() fonksiyonu ile tarayıcının bir PDF dosyasını açmasını yada indirmesini isteyebilirsiniz.
Cache Control
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
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
?>