mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 15:22:23 +01:00
441 lines
16 KiB
XML
441 lines
16 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 1ad4e2d550953000e2441b663226300596962ef2 Maintainer: nilgun Status: ready -->
|
||
<refentry xml:id="function.setcookie" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
<refnamediv>
|
||
<refname>setcookie</refname>
|
||
<refpurpose>Bir çerez gönderir</refpurpose>
|
||
</refnamediv>
|
||
|
||
<refsect1 role="description">
|
||
&reftitle.description;
|
||
<methodsynopsis>
|
||
<type>bool</type><methodname>setcookie</methodname>
|
||
<methodparam><type>string</type><parameter>isim</parameter></methodparam>
|
||
<methodparam choice="opt"><type>string</type><parameter>değer</parameter><initializer>""</initializer></methodparam>
|
||
<methodparam choice="opt"><type>int</type><parameter>süreler_veya_seçenekler</parameter><initializer>0</initializer></methodparam>
|
||
<methodparam choice="opt"><type>string</type><parameter>yol</parameter><initializer>""</initializer></methodparam>
|
||
<methodparam choice="opt"><type>string</type><parameter>alan</parameter><initializer>""</initializer></methodparam>
|
||
<methodparam choice="opt"><type>bool</type><parameter>güvenli</parameter><initializer>&false;</initializer></methodparam>
|
||
<methodparam choice="opt"><type>bool</type><parameter>sadece_http</parameter><initializer>&false;</initializer></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
PHP 7.3.0 ve sonrasında böyle de kullanılabilir
|
||
(isimli bağımsız değişkenler desteklenmiyor):
|
||
</para>
|
||
<methodsynopsis>
|
||
<type>bool</type><methodname>setcookie</methodname>
|
||
<methodparam><type>string</type><parameter>isim</parameter></methodparam>
|
||
<methodparam choice="opt"><type>string</type><parameter>değer</parameter><initializer>""</initializer></methodparam>
|
||
<methodparam choice="opt"><type>array</type><parameter>seçenekler</parameter><initializer>[]</initializer></methodparam>
|
||
</methodsynopsis>
|
||
<para>
|
||
<function>setcookie</function> işlevi, HTTP başlıklarının kalanıyla
|
||
gönderilmek üzere bir çerez tanımlar. Diğer başlıklar gibi, çerezlerde
|
||
betiğinizin herhangi bir çıktısından <emphasis>önce</emphasis>
|
||
gönderilmelidir (bu bir protokol kısıtlamasıdır). Bu kısıtlama, bu işleve
|
||
yapılacak çağrıların, <literal><html></literal> ve
|
||
<literal><head></literal> etiketleri ve hatta her türlü boşluk
|
||
karakteri çıktısından bile önce yer almasını gerektirir.
|
||
</para>
|
||
<para>
|
||
Çerezler bir kere atandı mı, artık <varname>$_COOKIE</varname> dizisi ile
|
||
sonraki sayfa yüklemesinde erişilebilir olacaktır. Çerez
|
||
değerleri ayrıca, <varname>$_REQUEST</varname> içinde de mevcut olabilir.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="parameters">
|
||
&reftitle.parameters;
|
||
<para>
|
||
<function>setcookie</function> bağımsız değişkenlerinin her birinin nasıl
|
||
çalıştığını hakkında bilgi edinmek için bkz:
|
||
<link xlink:href="&url.rfc;6265">RFC 6265</link>
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><parameter>isim</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Çerezin ismi.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>değer</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Çerezin değeri. Bu değer istemcinin bilgisayarında saklanır. Bu
|
||
bakımdan çerezlerde güvenlik ihlaline konu bilgiler saklanmamalıdır.
|
||
<parameter>isim</parameter> bağımsız değişkeninde
|
||
<literal>'çerezim'</literal> isminin kullanıldığı varsayımıyla, bu
|
||
çerezin değeri <varname>$_COOKIE['çerezim']</varname> değişkeni ile
|
||
alınabilir.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>süreler_veya_seçenekler</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Çerezin zaman aşımına uğrama süresi. Değer bir Unix zaman damgasıdır.
|
||
Bu değeri elde etmenin tek yolu, <function>time</function> işlevinden
|
||
dönen değere çerezin zaman aşımına uğrayacağı süreyi saniye cinsinden
|
||
eklemektir. Örneğin, <literal>time()+60*60*24*30</literal>
|
||
ile çerez 30 gün sonra zaman aşımına uğrar. Ayrıca,
|
||
<function>mktime</function> işlevi de kullanılabilir. Burada 0
|
||
atanır veya birşey belirtilmezse, çerez oturumun sonunda (tarayıcı
|
||
kapandığında) zaman aşımına uğrar.
|
||
</para>
|
||
<para>
|
||
<note>
|
||
<para>
|
||
<parameter>süreler_veya_seçenekler</parameter> bağımsız değişkeni
|
||
değer olarak bir Unix zaman damgası alır. Bu,
|
||
başlıkta belirtilen <literal>Wdy, DD-Mon-YYYY HH:MM:SS GMT</literal>
|
||
tarih biçeminin zıddı olup bu dönüşümü PHP dahili olarak yapar.
|
||
</para>
|
||
</note>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>yol</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Çerezin üzerinde etkin olacağı sunucudaki yol. <literal>'/'</literal>
|
||
belirtilirse çerez <parameter>alan</parameter>'ın tamamında
|
||
kullanılabilir olacaktır. Eğer <literal>'/foo/'</literal>
|
||
belirtilirse, çerez sadece <literal>/foo/</literal> dizininde ve
|
||
<literal>/foo/bar/</literal> gibi alt dizinlerde kullanılabilir
|
||
olacaktır. Öntanımlı değer çerezin atandığı içinde bulunulan dizindir.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>alan</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Çerezin kullanılabileceği (alt)alan. Çerezi
|
||
(<literal>'www.example.com'</literal> gibi) bir alt alan adında
|
||
kullanılabilir yapmak onu tüm diğer alt alan adlarında da
|
||
(w2.www.example.com gibi) kullanılabilir kılacaktır. Çerezi tüm alt alan
|
||
adlarında kullanılabilir yapmak için buraya alan adı (örneğimiz için
|
||
(<literal>'example.com'</literal>) yazılmalıdır.
|
||
</para>
|
||
<para>
|
||
Eski tarayıcılar hala kullanımdan kalkmış olan ve alt alan adıyla
|
||
eşleşme sağlamak için . ile başlatmayı gerektiren <link
|
||
xlink:href="&url.rfc;2109">RFC 2109</link>'u gerçeklemektedir.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>güvenli</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
Çerezin istemciye güvenli bir HTTPS bağlantısı üzerinden mi
|
||
aktarılması gerektiğini belirtmek için kullanılır. &true; belirtildiği
|
||
takdirde, çerez sadece güvenli bağlantı mevcutsa gönderilecektir.
|
||
Sunucu tarafında, bu çeşit çerezin sadece
|
||
(<varname>$_SERVER["HTTPS"]</varname> ile ilgili) güvenli bağlantı
|
||
üzerinden gönderilmesi kararı yazılımcıya aittir.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>sadece_http</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
&true; olduğu takdirde çerez sadece HTTP protokolü üzerinden
|
||
erişilebilir olacaktır. Yani çerez, JavaScript gibi betik dilleri
|
||
tarafından erişilebilir olmayacaktır. Bu ayarlama, XSS saldırılarıyla
|
||
kimlik hırsızlığı riskini etkin şekilde azaltmaya (tüm tarayıcılar
|
||
tarafından desteklenmese de) yardımcı olabilir, fakat bu sava çoğunlukla
|
||
itiraz edilir. Değer olarak &true; veya &false; belirtilebilir.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
<varlistentry>
|
||
<term><parameter>seçenekler</parameter></term>
|
||
<listitem>
|
||
<para>
|
||
<literal>zaman_aşımı</literal>, <literal>yol</literal>,
|
||
<literal>alan</literal>, <literal>güvenli</literal>,
|
||
<literal>sadece_http</literal> ve <literal>samesite</literal>
|
||
bağımsız değişkenlerinden herhangi birine sahip olabilen ilişkisel bir
|
||
dizi. Bunlar dışında bir anahtar varsa, <constant>E_WARNING</constant>
|
||
seviyesinde bir hata üretilir. Değerler, aynı ada sahip bağımsız
|
||
değişkenler için açıklananla aynı anlama sahiptir.
|
||
<literal>samesite</literal> öğesinin değeri <literal>None</literal>,
|
||
<literal>Lax</literal> veya <literal>Strict</literal> olmalıdır. İzin
|
||
verilen seçeneklerden herhangi biri belirtilmezse, bunların öntanımlı
|
||
değerleri, açık bağımsız değişkenlerin öntanımlı değerleri ile aynıdır.
|
||
<literal>samesite</literal> öğesi atlanırsa, SameSite çerez özelliği
|
||
ayarlanmaz.
|
||
</para>
|
||
<para>
|
||
<note>
|
||
<para>
|
||
Listelenen anahtarlar arasında olmayan öznitelikleri içeren bir çerez
|
||
belirtmek için <function>header</function> işlevi kullanılır.
|
||
</para>
|
||
</note>
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="returnvalues">
|
||
&reftitle.returnvalues;
|
||
<para>
|
||
Bu işlev çağrılmadan önce yapılmış çıktı varsa
|
||
<function>setcookie</function> başarısız olup &false; döndürür.
|
||
<function>setcookie</function> başarılı olduğu takdirde &true; döndürür.
|
||
Dönüş değeri, kullanıcının çerezi kabul ettiği ya da etmediği anlamına
|
||
gelmez.
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="changelog">
|
||
&reftitle.changelog;
|
||
<para>
|
||
<informaltable>
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>&Version;</entry>
|
||
<entry>&Description;</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>8.2.0</entry>
|
||
<entry>
|
||
Çerezin tarih biçemi <literal>'D, d M Y H:i:s \G\M\T'</literal> oldu;
|
||
evvelce <literal>'D, d-M-Y H:i:s T'</literal> idi.
|
||
</entry>
|
||
</row>
|
||
<row>
|
||
<entry>7.3.0</entry>
|
||
<entry>
|
||
<parameter>seçenekler</parameter> dizisini destekleyen ek bir yöntem
|
||
tanımı eklendi. Dizi içinde SameSite çerezinin değerleri de
|
||
destekleniyor.
|
||
</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="examples">
|
||
&reftitle.examples;
|
||
<para>
|
||
Çerez gönderimi ile ilgili bazı örnekler:
|
||
<example>
|
||
<title>- <function>setcookie</function> gönderim örneği</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
$value = 'bir şeyler bir yerlere';
|
||
|
||
setcookie("TestCookie", $value);
|
||
setcookie("TestCookie", $value, time()+3600); /* 1 saatliğine geçerli */
|
||
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", true);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
Çerez gönderilirken çerez değerinin otomatik olarak URL kodlamasından
|
||
geçirileceğine, alınırken ise bu kodlamanın yine otomatik olarak
|
||
çözüleceğine ve yine aynı çerez ismine atanacağına dikkat ediimalidir. Bu
|
||
istenmiyorsa, Bu işlevin yerine
|
||
<function>setrawcookie</function> işlevi kullanılabilir. Deneme
|
||
çerezimizin bir betik içindeki değerini görmek için aşağıdaki örneklerden
|
||
biri kullanılabilir:
|
||
</para>
|
||
<para>
|
||
<informalexample>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// Bağımsız bir çerez bas
|
||
echo $_COOKIE["TestCookie"];
|
||
|
||
// Tüm çerezleri görmek için başka bir yol
|
||
print_r($_COOKIE);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</informalexample>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>- <function>setcookie</function> silme örneği</title>
|
||
<para>
|
||
Bir çerezi silerken, tarayıcının yürürlükten kaldırma mekanizmasını
|
||
tetikleyebilmek için, süre bitiminin geçmişte kalmasını sağlamanız
|
||
gerekir. Önceki örnekte gönderilen çerezin silinmesi:
|
||
</para>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// süre bitimini 1 saat önceye ayarla
|
||
setcookie ("TestCookie", "", time() - 3600);
|
||
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<example>
|
||
<title>- <function>setcookie</function> ve diziler</title>
|
||
<para>
|
||
Çerez ismini belirtirken dizi gösterimini kullanmak suretiyle çerez
|
||
dizileri tanımlanabilir. Bu sayede dizi elemanı sayısı kadar çerez
|
||
tanımlanabilir, fakat çerezler betikle alındığında değerlerin
|
||
hepsi çerez isminde bir diziye yerleştirilir:
|
||
</para>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
// çerezleri tanımla
|
||
setcookie("cookie[three]", "cookiethree");
|
||
setcookie("cookie[two]", "cookietwo");
|
||
setcookie("cookie[one]", "cookieone");
|
||
|
||
// sayfayı yeniden yükledikten sonra çerezler bas
|
||
if (isset($_COOKIE['cookie'])) {
|
||
foreach ($_COOKIE['cookie'] as $name => $value) {
|
||
$name = htmlspecialchars($name);
|
||
$value = htmlspecialchars($value);
|
||
echo "$name : $value <br />\n";
|
||
}
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
&example.outputs;
|
||
<screen>
|
||
<![CDATA[
|
||
three : cookiethree
|
||
two : cookietwo
|
||
one : cookieone
|
||
]]>
|
||
</screen>
|
||
</example>
|
||
<note>
|
||
<simpara>
|
||
Çerez isminin paraçası olarak <literal>[</literal> ve <literal>]</literal>
|
||
gibi ayırıcı karakterlerin kullanımı RFC 6265, bölüm 4 ile uyumlu değildir,
|
||
fakat RFC 6265, bölüm 5'e göre kullanıcı istemcileri tarafından
|
||
desteklendikleri varsayılmıştır.
|
||
</simpara>
|
||
</note>
|
||
</para>
|
||
</refsect1>
|
||
|
||
<refsect1 role="notes">
|
||
&reftitle.notes;
|
||
<note>
|
||
<para>
|
||
Bu işlevi çağırmadan önce, tarayıcıya gönderilene
|
||
kadar sunucuda bekletilmek üzere çıktı bir tampona yazılabilir. Bu
|
||
işlem, betikten <function>ob_start</function> ve
|
||
<function>ob_end_flush</function> işlevlerini çağırarak veya
|
||
<literal>output_buffering</literal> yapılandırma
|
||
yönergesi &php.ini; veya sunucu yapılandırma dosyalarında belirtilerek
|
||
yapılabilir.
|
||
</para>
|
||
</note>
|
||
<para>
|
||
Bilinen Güçlükler:
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
Çerezler sonraki sayfada görünür olmak üzere atanırlar, dolayısıyla
|
||
sonraki sayfa yüklenene kadar görünür olmazlar. Bir çerezin başarıyla
|
||
tanımlanıp tanımlanmadığını anlayabilmek için çerez zaman aşımına
|
||
uğramadan sonraki sayfa üzerinde çerez denenmelidir. Zaman aşımı
|
||
süresi <parameter>zaman_aşımı</parameter> bağımsız değişkeni ile
|
||
belirtilebilir. Bir çerezin varlığını sınamanın en kolay yolu
|
||
<literal>print_r($_COOKIE);</literal> çağrısı yapmaktır.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Çerezler atandıkları sırada kullanılan bağımsız değişkenler kullanılarak
|
||
silinmelidir. <parameter>değer</parameter> bağımsız değişkeninde bir boş
|
||
dizge belirtilir ve tüm diğer bağımsız değişkenlerin çerezi atarken
|
||
kullanılan bağımsız değişkenlerle aynı olması sağlanırsa, ismi
|
||
belirtilen çerez uzak istemciden silinir. Bu işlem dahili olarak
|
||
çereze <literal>'deleted'</literal> değeri atanarak ve zaman aşımı
|
||
tarihi bir yıl önceye çekilerek gerçekleştirilir.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Bir çereze silmek amacıyla &false; değeri atanırken mantıksal değerler
|
||
kullanılmamalıdır. &false; için <emphasis>0</emphasis>, &true; için
|
||
<emphasis>1</emphasis> kullanılmalıdır.
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
Çerez isimleri dizi isimleri olabilir. Böylece PHP betiğinde bu
|
||
çerezler için dizi kullanılırken, kullanıcının sisteminde bunlar ayrı
|
||
ayrı çerezler olarak saklanırlar. Tek bir çereze çok sayıda isim ve
|
||
değer atamak için <function>explode</function> işlevi
|
||
kullanılabilir. Güvenlik zafiyeti oluşturması nedeniyle bu işlem
|
||
için <function>serialize</function> işlevinin kullanılması
|
||
önerilmemektedir.
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
<simpara>
|
||
Peşpeşe pek çok <function>setcookie</function> çağrısı yapılabilir.
|
||
</simpara>
|
||
</refsect1>
|
||
|
||
<refsect1 role="seealso">
|
||
&reftitle.seealso;
|
||
<para>
|
||
<simplelist>
|
||
<member><function>header</function></member>
|
||
<member><function>setrawcookie</function></member>
|
||
<member><link linkend="features.cookies">Çerezler bölümü</link></member>
|
||
<member><link xlink:href="&url.rfc;6265">RFC 6265</link></member>
|
||
<member><link xlink:href="&url.rfc;2109">RFC 2109</link></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
|
||
-->
|