mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 15:22:23 +01:00
339 lines
11 KiB
XML
339 lines
11 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 5c1ccc6e24e5d470e75ef0a5887c2ff583266375 Maintainer: nilgun Status: ready -->
|
||
<refentry xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://docbook.org/ns/docbook" xml:id="function.header">
|
||
<refnamediv>
|
||
<refname>header</refname>
|
||
<refpurpose>Ham bir HTTP başlığı gönderir</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type>void</type><methodname>header</methodname>
|
||
<methodparam><type>string</type><parameter>başlık</parameter></methodparam>
|
||
<methodparam choice="opt"><type>bool</type><parameter>değiştir</parameter><initializer>&true;</initializer></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>http_yanıt_kodu</parameter><initializer>0</initializer></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
<function>header</function> işlevi ham bir <acronym>HTTP</acronym>
|
||
başlığı göndermek için kulanılır. <acronym>HTTP</acronym> başlıkları
|
||
hakkında ayrıntılı bilgi edinmek için
|
||
<link xlink:href="&url.rfc;2616">HTTP/1.1 Belirtimi</link>'ne bakınız.
|
||
</para>
|
||
<para>
|
||
<function>header</function> işlevinin normal HTML etiketleri ve dosya veya
|
||
PHP'deki boş satırlar dahil herhangi bir çıktıdan önce çağrılması
|
||
gerektiği unutulmamalıdır. <function>header</function> çağrısından
|
||
önce sıkça yapılan hatalar: kodu <function>include</function>,
|
||
<function>require</function> veya başka bir dosya okuma işlevi ile okumak;
|
||
betik HTML'ye gömülüyse betiğin veya dosyanın başında boşluklar veya boş
|
||
satırlar bulunması.
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<html>
|
||
<?php
|
||
/* Bu bir hata verecektir. header() çağrısından
|
||
* önce hiçbir satırlar olmamalıydı. */
|
||
header('Location: http://localhost/');
|
||
exit;
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>başlık</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Başlık dizgesi.
|
||
</para>
|
||
<para>
|
||
İki özel çağrı biçimi vardır. İlki, HTTP durum kodu gönderilirken
|
||
kullanılır ve başlık "<literal>HTTP/</literal>" dizgesi ile başlar
|
||
(harf büyüklüğüne duyarsız). Örneğin Apache, eksik dosyalarla ilgili
|
||
sorunlar için (<literal>ErrorDocument</literal> yönergesi ile) bir PHP
|
||
betiğini kullanacak şekilde yapılandırılmışsa betikte uygun bir
|
||
durum kodu üretmek için bu biçim kullanılabilir.
|
||
</para>
|
||
<para>
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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");
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
<para>
|
||
İkinci özel biçim "Location:" başlığıdır. Bu başlığın tarayıcıya geri
|
||
gönderilmesinden başka, bir <literal>201</literal> veya
|
||
<literal>3xx</literal> durum kodu henüz atanmamışsa ayrıca bir
|
||
<literal>REDIRECT</literal> (302) durum kodu da gönderilir.
|
||
</para>
|
||
<para>
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
header("Location: http://mesela.dom/"); /* Tarayıcıyı yönlendir */
|
||
|
||
/* Yönlendirme sonrası herhangi bir kod çalıştırılmamalıdır. */
|
||
exit;
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>değiştir</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
<parameter>değiştir</parameter> bağımsız değişkeni isteğe bağlı olup,
|
||
önceki başlığın mı değiştireceğini yoksa aynı türde ikinci bir başlık
|
||
daha mı ekleneceğini belirtilir. Öntanımlı davranış mevcudu
|
||
değiştirmektir. İşleve ikinci bağımsız değişken olarak &false;
|
||
aktarılırsa aynı türde çok sayıda başlık bulunması için işlevin
|
||
zorlanması sağlanabilir.
|
||
Örnek:
|
||
</para>
|
||
<para>
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
header('WWW-Authenticate: Negotiate');
|
||
header('WWW-Authenticate: NTLM', false);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>http_yanıt_kodu</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
HTTP yanıt kodunu belirtilen değere zorlar. Bu bağımsız değişken sadece
|
||
<parameter>başlık</parameter> bağımsız değişkeni boş değilse etkilidir.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
&return.void;
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="errors">
|
||
&reftitle.errors;
|
||
<para>
|
||
Gönderilecek başlığın zamanlamasındaki bir başarısızlık,
|
||
<function>header</function> işlevinin <constant>E_WARNING</constant>
|
||
seviyesinde bir hata çıktılamasına sebep olur.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
<example>
|
||
<title>- İndirme söyleşisi</title>
|
||
<para>
|
||
Kulanıcının, gönderilen veriyi (örneğin, bir PDF dosyası) kaydetmesi
|
||
için uyarılması istenirse, bir dosya ismi belirtmek ve tarayıcının bir
|
||
dosya kayıt söyleşisini göstermesini sağlamak için
|
||
<link xlink:href="&url.rfc;2183">Content-Disposition</link> başlığı
|
||
kullanılabilir.
|
||
</para>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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');
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>- Yönergelerin önbelleklenmesi</title>
|
||
<para>
|
||
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ı şöyle sağlanabilir:
|
||
</para>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?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
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
<para>
|
||
<note>
|
||
<para>
|
||
Yukarıdaki başlıkların hiçbiri çıktılanmadığı halde sayfalar
|
||
önbelleğe alınmıyor olabilir. Kullanıcının kendi tarayıcısının
|
||
önbellekleme ile ilgili öntanımlı davranışını değiştirebileceği çok
|
||
çeşitli seçenekleri olabilir. Yukarıdaki başlıkları göndererek bu tür
|
||
olası ayarları geçersiz kılınabilir.
|
||
</para>
|
||
<para>
|
||
Ayrıca, oturumları kullanırken önbellekleme ile ilgili doğru
|
||
başlıkların otomatik olarak üretilmesi için
|
||
<function>session_cache_limiter</function> işlevi ve
|
||
<literal>session.cache_limiter</literal>
|
||
yapılandırma yönergesi kullanılabilir.
|
||
</para>
|
||
</note>
|
||
</para>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>- Çerez atamak</title>
|
||
<para>
|
||
<function>setcookie</function> çerezleri ayarlamanın kolay bir yolunu
|
||
sağlar. <function>setcookie</function> işlevinin desteklemediği
|
||
öznitelikleri içeren bir çerezi ayarlamak için <function>header</function>
|
||
işlevi kullanılabilir.
|
||
</para>
|
||
<para>
|
||
Bu örnekte <literal>Partitioned</literal> özniteliğini içeren bir çerez
|
||
atanmaktadır.
|
||
</para>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
header('Set-Cookie: name=value; Secure; Path=/; SameSite=None; Partitioned;');
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
¬e.network.header.sapi;
|
||
<note>
|
||
<para>
|
||
Bu işlevi çağırmadan önce, tarayıcıya gönderilene
|
||
kadar sunucuda bekletilmek üzere çıktı bir tampona yazılabilir. Bu
|
||
işlemi betik içinde <function>ob_start</function> ve
|
||
<function>ob_end_flush</function> işlevleri çağrılarak veya
|
||
<literal>output_buffering</literal> yapılandırma yönergesi &php.ini;
|
||
veya sunucu yapılandırma dosyalarında belirtilerek yapılabilir.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>
|
||
<function>header</function> çağrısının ilk çağrı olup olmamasından
|
||
bağımsız olarak istemciye ilk olarak daima HTTP durum başlığı satırı
|
||
gönderilir. <function>header</function> işlevi hiçbir HTTP başlığı
|
||
gönderilmeden önce yeni bir durum satırı ile kullanılırsa bu durum
|
||
satırı geçersiz kılınabilir.
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>Çoğu çağdaş istemci
|
||
<link xlink:href="&spec.http1.1;#section-7.1.2">Location:</link>
|
||
için bağımsız değişken olarak göreli bir <acronym>URI</acronym> kabul
|
||
etmektedir, fakat bazı eski istemciler şema, konak ismi ve mutlak dosya yolu
|
||
içeren mutlak bir URI gerektirir. Bir mutlak
|
||
<acronym>URI</acronym>'yi bir göreli <acronym>URI</acronym>'ye
|
||
dönüştürmek için örnekteki gibi <varname>$_SERVER['HTTP_HOST']</varname>,
|
||
<varname>$_SERVER['PHP_SELF']</varname> ve <function>dirname</function>
|
||
kullanılabilir:
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
/* Bulunulan dizinde başka bir sayfaya yönlendirelim */
|
||
$konak = $_SERVER['HTTP_HOST'];
|
||
$yol = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
|
||
$ek = 'sayfam.php';
|
||
header("Location: http://$konak$yol/$ek");
|
||
exit;
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
</note>
|
||
<note>
|
||
<para>Oturum kimliği,
|
||
<link linkend="ini.session.use-trans-sid">session.use_trans_sid</link>
|
||
etkin olsa bile Location başlığı ile aktarılmaz. <constant>SID</constant>
|
||
sabiti kullanılarak elle aktarılmalıdır.
|
||
</para>
|
||
</note>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>headers_sent</function></member>
|
||
<member><function>setcookie</function></member>
|
||
<member><function>http_response_code</function></member>
|
||
<member><function>header_remove</function></member>
|
||
<member><function>headers_list</function></member>
|
||
</simplelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
</refentry>
|
||
|
||
<!-- Keep this comment at the end of the file
|
||
Local variables:
|
||
mode: sgml
|
||
sgml-omittag:t
|
||
sgml-shorttag:t
|
||
sgml-minimize-attributes:nil
|
||
sgml-always-quote-attributes:t
|
||
sgml-indent-step:1
|
||
sgml-indent-data:t
|
||
indent-tabs-mode:nil
|
||
sgml-parent-document:nil
|
||
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
||
sgml-exposed-tags:nil
|
||
sgml-local-catalogs:nil
|
||
sgml-local-ecat-files:nil
|
||
End:
|
||
vim600: syn=xml fen fdm=syntax fdl=2 si
|
||
vim: et tw=78 syn=sgml
|
||
vi: ts=1 sw=1
|
||
-->
|