PHP başlık işlevi, istemciye ham bir HTTP başlığı göndermektir. Ham başlık, isteği ve diğer meta verileri içerir. İçerik türü, önbelleğe alma, konum ve benzeri verilerin ayarlanmasına yardımcı olur.
HTTP başlığı , bir HTTP isteğiyle ek ayrıntıları iletmektir. Anahtar biçiminde ayrıntıları içerir : değer çiftleri.
Bir URL ye Yönlendirmek için
header(“Location: https://www.sanlitur.com.tr”);
Code language: HTML, XML (xml)
X saniye sonra yönlendirmek için
header( “refresh:5;url=target.php” );
echo ‘Beş Saniye sonra Yönlendirme işlemi’;
Code language: HTML, XML (xml)
header(), önceki sürümlerde bile mevcut olan yerleşik bir PHP işlevidir. Ancak 5.1.2’den itibaren, başlık enjeksiyon saldırılarından kaçınmak için bir seferde birden fazla başlık göndermeyi durdurur.
Tarayıcıya herhangi bir çıktı göndermeden önce PHP başlığı çağrılmalıdır . Aksi takdirde
“Cannot modify header information ... header already sent ...”
hataya neden olacaktır.
Bunlar PHP başlıklarını çağırmadan önce izin verilmeyen öğelerdir.
- HTML etiketleri.
- Boş satırlar.
- PHP echo ve print ifadeleri .
- PHP , bu çıktıyı tarayıcıya gerektirir/içerir
İçerikler
PHP Header() Sözdizimi ve Parametreleri
PHP Header() fonksiyonunun üç parametresi vardır. Bu işlevin üç parametresini gösteren aşağıdaki sözdizimini kullanır. Bu işlev (void) değer döndürmez.
header(String $header, bool $replace=true, int $response_code=0);
Code language: PHP (php)
$header
HTTP durum kodunu tanımlayan bir dize içerir. İçerik türü , konum ve daha fazlası gibi başlık özelliklerini tanımlar .
Başlık konumu , kullanıcıları hedef URI’ye yönlendirir ve 302 durum kodunu istemciye döndürür.
$replace
Önceden tanımlanmış başlık özelliğini değiştirmektir. Bu, varsayılan değer olarak boolean true olan isteğe bağlı bir parametredir . Varsayılan olarak tanımlanan başlık ayarlarını geçersiz kılar. Bu parametreye false ayarlayarak varsayılan davranışı kapatabiliriz .
header('WWW-Authenticate: Negotiate');
echo ('header WWW-Authenticate is set to Negotiate \n');
header('WWW-Authenticate: NTLM', false);
echo ('header WWW-Authenticate is changed to NTLM');
Code language: HTML, XML (xml)
$response_code
Bu aynı zamanda varsayılan 0 tamsayı değerini içeren isteğe bağlı bir parametredir. Bu, HTTP yanıt kodunu ayarlamak içindir. Yalnızca başlık boş değilse geçerlidir.
PHP Header() işlevinin kullanımları
Öğe listesi, PHP başlık işlevinin bazı kullanımlarını gösterir. Bu makale, header() işlevinin kullanımlarını açıklayan örnekler içermektedir.
- Başlık konumunu değiştirir ve sayfayı yeniden yönlendirir.
- İçerik türünü ayarlar ve içeriğin indirilmesini ister.
- Yanıt vermek için HTTP durum kodunu hazırlar.
- Önbelleğe alma özelliklerini ayarlar ve mevcut önbelleğe alma davranışını geçersiz kılar.
PHP Header() Örnekleri
Header() Location kullanarak sayfa yönlendirmesi
PHP başlık konumu ayarının kullanımı aşağıdaki gibidir. Konum anahtar sözcüğüyle başlar, ardından hedef URI gelir.
Başlık işlevi , sunucu tarafında PHP’de sayfa yönlendirmesini yürütür. Aşağıdaki kod PHP çıkış deyimini kullanır. Yönlendirmeden sonra kodu yürütmeyi durdurur.
header("Location: https://www.sanliturk.com.tr");
exit;
Code language: HTML, XML (xml)
Yönlendirme için hem göreli hem de mutlak URI’yi kabul eder.
Bazı eski istemciler mutlak URI’yi kabul eder. Aşağıdaki kod, başlık konumunu ayarlamak için dinamik olarak mutlak URI oluşturur. $_SERVER globallerini $_SERVER[‘PHP_SELF’], $_SERVER[‘HTTP_HOST’] ve dirname()’yi kullanır.
$subDirectory = rtrim(dirname($_SERVER['PHP_SELF']), "/\\");
$fileName = "example.php";
header("Location: http://" . $_SERVER['HTTP_HOST'] . "/" . $subDirectory . "/" . $fileName);
Code language: HTML, XML (xml)
Yukarıdaki kod, dosyanın alt dizin adını bulur. Ardından, dizenin sonundaki gereksiz eğik çizgileri keser.
Header() içerik türünü ve içerik düzenini kullanarak PDF dosyası çıktısı alın
Bu PHP betiği, indirmeye zorlamak için içerik türünü ve içerik düzenini ayarlar. Belirtilen içerik türünde bir belge çıktısı verir.
Uygulamayı/pdf’yi tarayıcıya bir PDF dosyası verecek şekilde ayarlar . Çıktı belgesini okumak ve hazırlamak için kaynak ve hedefi ayarlar.
Bu kod, oluşturulan PDF belgesini kaydetmek için bir iletişim kutusu görüntüler. İndirilen PDF’yi tarayıcıda göstermek için jsPDF save() yöntemini kullandık .
//Başlık içerik türünü PDF olarak ayarla
header("Content-type:application/pdf");
// Download.pdf olarak adlandırılacaktır.header(“Content-Disposition:attachment;filename=output.pdf”);
// İçeriği okumak için kaynak dosya
readfile(“source.pdf”);
Code language: HTML, XML (xml)
Yanıtı JSON olarak göndermek istiyorsanız , yukarıdaki “Content-type” öğesini application/json olarak değiştirin.
Sayfa önbelleğe almayı engelle
Aşağıdaki kod, tarayıcının sayfa içeriğini önbelleğe almasını önlemek için PHP başlığını () ayarlar. Bu başlık ayarlarını tanımlayarak, varsayılan önbelleğe alma mekanizmasını geçersiz kılar.
Önbellek Denetimini ayarlamak için HTTP 1.1 önbelleğe alma seçeneklerini kullanır . Bu başlık için no-cache , must-revalidate tp değerlerini koyar .
Expires başlığını geçmiş bir tarihle ayarlar ve istemcinin önbelleğe alınmış içerik olmadığını bilmesini sağlar. Böylece, içeriği okumak için sunucuya bir HTTP isteği gönderir.
// HTTP/1.1 önbelleğe alma seçenekleri
header("Cache-Control: no-cache, must-revalidate");
// Son kullanma tarihi olarak geçmiş tarih
header("Expires: Mon, 2 Jul 1963 03:00:00 GMT");
<!– Sayfa şablonu HTML’si başlar –>
Code language: HTML, XML (xml)
İlgili PHP işlevleri ve örnekleri
Aşağıdaki işlevler PHP başlık işleviyle ilgilidir. Basit bir örnekle bu fonksiyonların amaçlarını görelim.
header_sent()
Bu işlev, başlığın zaten istemciye gönderilmesini sağlar. Boolean true veya false döndürür .
Referansla geçirilen isteğe bağlı $filename ve $linenumber parametrelerini kabul eder. Daha sonra kullanılacaktır ve bunları header_sent() çağırmadan önce atamaya gerek yoktur.
PHP, kaynak dosya adını $filename parametresine ayarlar. Ayrıca çıktının başladığı satır numarası ile ikinci parametreyi ayarlar.
Bu işlev, başlıkla ilgili önemli hataların oluşmasını önler. Aşağıdaki örnek, $filename ve $linenum değişkenlerini enterpolasyon yaparak açık hata mesajlarını yazdırır.
// Başlığın zaten gönderilip gönderilmediğini kontrol edin
if (!headers_sent()) {
header('Location: http://yourdomain.com/');
exit;
}
// PHP kaynağının isteğe bağlı $filename değerini ayarlayın// $linenum çıktının başladığı yer
if (!headers_sent($filename, $linenum)) {
header(‘Location: http://yourdomain.com/’);
exit;
} else {
// önemli hataları önlemek için hata mesajı yazdırır
echo “Headers already sent in $filename on line $linenum”;
exit;
}
Code language: HTML, XML (xml)
header_remove()
Bu işlevin amacı adından anlaşılabilir. Zaten ayarlanmış olan başlığı kaldırmak içindir.
Parametresi olarak başlığın adını kabul eder. Değeri büyük/küçük harfe duyarsızdır.
//Başlık içerik türünü JSON olarak ayarla
header("Content-type:application/json");
header_remove(“content-type”);
Code language: HTML, XML (xml)
header_list()
Bu PHP işlevi, önceden gönderilen başlıkların veya gönderilmek üzere ayarlanmış başlıkların listesini döndürür. Çıktıyı PHP dizisi biçiminde döndürür .
Bu kod, çerezleri ve PHP başlıklarını ayarlar. Üyelerin rastgele kimliğini PHP tanımlama bilgisi dizinine ayarlar ve içerik türünü düz metin olarak ayarlar.
//çerezi rasgele sayıyı üye_id olarak depolamak için ayarla
setcookie('member_id', rand(10000, 99999));
// özel headerheader(“X-Sample: Example”);
// içerik türünü düz metin olarak ayarla
header(‘Content-type: text/plain’);
/* Ayarlanan başlıkları yazdırır*/
var_dump(headers_list());
Code language: HTML, XML (xml)
Bu program başlık listesini aşağıdaki gibi yazdırır.
array(4) {
[0]=>
string(24) "X-Powered-By: PHP/7.4.21"
[1]=>
string(27) "Set-Cookie: member_id=87530"
[2]=>
string(17) "X-Sample: Example"
[3]=>
string(38) "Content-type: text/plain;charset=UTF-8"
}
Code language: PHP (php)
header_register_callback()
header_register_callback() işlevi, argümansız bir geri çağırma işlevini kaydetmek içindir. PHP, tüm başlıkları göndermeye hazır olduktan sonra geri arama işlevini çağırır.
header_register_callback(callable $callbackFunction);
Code language: PHP (php)
Çözüm
Evet, PHP başlıkları hakkında ayrıntılı bir makale gördük. Umarım bu işlevle ilgili tüm doğrudan ve ilgili noktaları kapsar.
İçerik türünü, önbelleğe almayı ve daha fazlasını ayarlamak için PHP başlıklarında çeşitli örnekler sunar. Ayrıca, header_list(), header_remove(), vb. gibi ilgili işlevleri de kapsar.