1
0
mirror of https://github.com/php/doc-tr.git synced 2026-03-24 15:22:23 +01:00
Files
2024-09-05 17:21:38 +03:00

339 lines
11 KiB
XML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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;
&note.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
-->