mirror of
https://github.com/php/doc-tr.git
synced 2026-03-24 07:12:18 +01:00
280 lines
10 KiB
XML
280 lines
10 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- EN-Revision: 184f3f7bd45643cb80f828d0bb001991ec3a5fad Maintainer: nilgun Status: ready -->
|
||
<appendix xml:id="session.examples" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||
&reftitle.examples;
|
||
<section xml:id="session.examples.basic">
|
||
<title>Temel Kullanım</title>
|
||
<para>
|
||
Oturumlar, bireysel kullanıcılar için verileri benzersiz bir oturum
|
||
kimliğine göre depolamanın basit bir yoludur. Bu, sayfa istekleri arasında
|
||
durum bilgisini sürdürmek için kullanılabilir. Oturum kimlikleri normalde
|
||
tarayıcıya oturum çerezleri aracılığıyla gönderilir ve kimlik, mevcut
|
||
oturum verilerini almak için kullanılır. Oturum kimliği veya çerezlerinin
|
||
olmaması, PHP'nin yeni bir oturum oluşturmasını ve yeni bir oturum kimliği
|
||
üretmesini sağlar.
|
||
</para>
|
||
<para>
|
||
Oturumlar basit bir iş akışını takip eder. Bir oturum başlatıldığında,
|
||
PHP ya aktarılan kimliği (genellikle bir oturum çerezinden) kullanarak
|
||
var olan bir oturumu geri alır ya da hiçbir oturum aktarılmamışsa yeni
|
||
bir oturum oluşturur. PHP, <varname>$_SESSION</varname> süper küreselini,
|
||
oturum başladıktan sonra oturum verileriyle doldurur. PHP kapandığında,
|
||
<varname>$_SESSION</varname> süperküresel içeriğini otomatik olarak alacak,
|
||
dizileştirecek ve oturum kaydetme işleyicisini kullanarak depolanmaya
|
||
gönderecektir.
|
||
</para>
|
||
<para>
|
||
Öntanımlı olarak PHP, <link
|
||
linkend="ini.session.save-handler">session.save_handler</link> tarafından
|
||
atanan dahili dosya kaydetme işleyicisini kullanır. Bu, oturum verilerini
|
||
<link linkend="ini.session.save-path">session.save_path</link> yapılandırma
|
||
yönergesi tarafından belirtilen konumda sunucuya kaydeder.
|
||
</para>
|
||
<para>
|
||
Oturumlar, <function>session_start</function> işlevi kullanılarak
|
||
elle başlatılabilir. <link
|
||
linkend="ini.session.auto-start">session.auto_start</link> yönergesine
|
||
<parameter>1</parameter> atanmışsa, istek başlatıldığında oturum
|
||
otomatik olarak başlayacaktır.
|
||
</para>
|
||
<para>
|
||
Oturumlar normalde PHP bir komut dosyasını yürütmeyi bitirdiğinde otomatik
|
||
olarak kapanır, ancak <function>session_write_close</function> işlevi
|
||
kullanılarak elle de kapatılabilir.
|
||
<example>
|
||
<title>-
|
||
Bir değişkeni <varname>$_SESSION</varname> ile kayıt altına almak
|
||
</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
session_start();
|
||
if (!isset($_SESSION['count'])) {
|
||
$_SESSION['count'] = 0;
|
||
} else {
|
||
$_SESSION['count']++;
|
||
}
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
<example>
|
||
<title>- <varname>$_SESSION</varname> ile bir değişkeni tanımsız yapmak
|
||
</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
session_start();
|
||
unset($_SESSION['count']);
|
||
?>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
<caution>
|
||
<para>
|
||
<varname>$_SESSION</varname> dizisinin tamamını
|
||
<literal>unset($_SESSION)</literal> ile tanımsız YAPMAYIN. Bu işlem,
|
||
oturum değişkenlerinin <varname>$_SESSION</varname> süper küreseli
|
||
üzerinden kayıt altına alınmamasına sebep olacaktır.
|
||
</para>
|
||
</caution>
|
||
</para>
|
||
<warning>
|
||
<para>
|
||
Başka bir değişkene gönderimi tekrar tanımlı kılmanın bir yolu
|
||
olmadığından oturum değişkenlerinde gönderimleri kullanamazsınız.
|
||
</para>
|
||
</warning>
|
||
<note>
|
||
<para>
|
||
Dosya tabanlı oturumlar (PHP'de öntanımlı) bir oturum bir kez
|
||
<function>session_start</function> veya dolaylı olarak <link
|
||
linkend="ini.session.auto-start">session.auto_start</link> aracılığıyla
|
||
açıldığında oturum dosyasını kilitler. Bir kez kilitlendiğinde, başka
|
||
hiçbir betik, <function>session_write_close</function> çağrılana kadar
|
||
veya ilk betik sonlanana kadar aynı oturum dosyasına erişemez.
|
||
</para>
|
||
<para>
|
||
Bu, AJAX'ı yoğun şekilde kullanan ve aynı anda birden çok istek alan http
|
||
sitelerinde büyük olasılıkla bir sorundur. Bununla başa çıkmanın en kolay
|
||
yolu, oturumda gerekli herhangi bir değişiklik yapılır yapılmaz, tercihen
|
||
betiğin başlarında, <function>session_write_close</function> işlevini
|
||
çağırmaktır. Bunun yerine, eşzamanlılığı destekleyen farklı bir oturum
|
||
artucu da kullanılabilir.
|
||
</para>
|
||
</note>
|
||
</section>
|
||
|
||
<section xml:id="session.idpassing">
|
||
<title>Oturum Kimliğinin Aktarımı</title>
|
||
<para>
|
||
Bir oturum kimliğini yaymanın iki yolu vardır:
|
||
<itemizedlist>
|
||
<listitem>
|
||
<simpara>
|
||
Çerezler
|
||
</simpara>
|
||
</listitem>
|
||
<listitem>
|
||
<simpara>
|
||
URL bağımsız değişkeni
|
||
</simpara>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
<para>
|
||
Oturum modülü her ikisini de destekler. Çerezler en uygunudur, fakat her
|
||
zaman kullanmak mümkün olmadığından ikinci bir yöntem sağlıyoruz. İkinci
|
||
yöntem, oturum kimliğini doğrudan URL'nin içine gömer.
|
||
</para>
|
||
<para>
|
||
PHP bağlantıları şeffaf olarak dönüştürme yeteneğine sahiptir. Çalışma
|
||
anında <literal>session.use_trans_sid</literal> yönergesi etkin kılınmışsa,
|
||
göreli URI'ler otomatik olarak oturum kimliğini içerecek şekilde
|
||
değiştirilir.
|
||
<note>
|
||
<para>
|
||
<link linkend="ini.arg-separator.output">arg_separator.output</link>
|
||
&php.ini; yönergesi bağımsız değişken ayracının değiştirilebilmesini sağlar. Tam
|
||
XHTML uyumluluğu için yönergeye değer olarak &amp; belirtin.
|
||
</para>
|
||
</note>
|
||
</para>
|
||
<para>
|
||
Ayrıca, oturum başlatıldığında tanımlanan <constant>SID</constant> sabitini
|
||
de kullanabilirsiniz. Eğer istemci uygun bir oturum çerezi göndermezse,
|
||
<constant>SID</constant> sabiti
|
||
<replaceable>oturum_ismi=oturum_kimliği</replaceable> değerini içerecektir.
|
||
Aksi takdirde sabitin değeri bir boş dizge olur. Bu durumda, oturum
|
||
kimliğini koşulsuz olarak URL'lerin içine gömebilirsiniz.
|
||
</para>
|
||
<para>
|
||
Aşağıdaki örnekte bir değişkenin nasıl oturum değişkeni haline getirildiği
|
||
ve <constant>SID</constant> sabitiyle başka bir sayfaya nasıl bağlantı
|
||
kurulduğu gösterilmiştir.
|
||
<example>
|
||
<title>- Tek bir kullanıcının sayfa erişimlerinin sayılması</title>
|
||
<programlisting role="php">
|
||
<![CDATA[
|
||
<?php
|
||
|
||
session_start();
|
||
|
||
if (empty($_SESSION['count'])) {
|
||
$_SESSION['count'] = 1;
|
||
} else {
|
||
$_SESSION['count']++;
|
||
}
|
||
?>
|
||
|
||
<p>
|
||
Merhaba sayın ziyaretçi, bu sayfayı <?php echo $_SESSION['count']; ?>
|
||
kere ziyaret ettiniz.
|
||
</p>
|
||
|
||
<p>
|
||
Devam etmek için, <a href="nextpage.php?<?php echo htmlspecialchars(SID);
|
||
?>">buraya tıklayınız</a>.
|
||
</p>
|
||
]]>
|
||
</programlisting>
|
||
</example>
|
||
</para>
|
||
<para>
|
||
XSS saldırılarından kaçınmak için URL'ye <constant>SID</constant>
|
||
yerleştirilirken <function>htmlspecialchars</function> kullanılabilir.
|
||
</para>
|
||
<para>
|
||
<constant>SID</constant> sabitini URL'ye yukarıdaki gibi
|
||
yerleştirecekseniz, PHP'yi <link linkend="ini.session.use-trans-sid">
|
||
--enable-trans-sid</link> seçeneğiyle derlemeniz gerekmez.
|
||
</para>
|
||
<note>
|
||
<para>
|
||
Göreli olmayan URL'lerin harici siteleri işaret ettikleri varsayılır ve
|
||
oturum kimliğinin başka bir sunucuya ifşa edilme riskine karşı
|
||
<constant>SID</constant> bunlara yerleştirilmez.
|
||
</para>
|
||
</note>
|
||
</section>
|
||
|
||
<section xml:id="session.customhandler">
|
||
<title>Özel Oturum Eylemcisi</title>
|
||
<para>
|
||
Veritabanlarını saklama alanı olarak kullanmak için veya başka bir saklama
|
||
yöntemi kullanmak için <function>session_set_save_handler</function>
|
||
işleviyle kullanıcı seviyesinde bir saklama işlevleri kümesi tanımlamak
|
||
gerekir.
|
||
<classname>SessionHandlerInterface</classname> arayüzü kullanılarak oturum
|
||
işleyicileri oluşturabilir veya <classname>SessionHandler</classname>
|
||
sınıfı miras alınarak PHP'nin dahili işleyicileri genişletetilebilir.
|
||
</para>
|
||
<para>
|
||
<function>session_set_save_handler</function> içinde belirtilen geri
|
||
çağırımlar, bir oturumun yaşam döngüsü boyunca PHP tarafından çağrılan
|
||
yöntemlerdir: <parameter>open</parameter>, <parameter>read</parameter>,
|
||
<parameter>write</parameter> ve <parameter>close</parameter>. Temizlik
|
||
görevlerinde, bir oturumu silmek için <parameter>destroy</parameter>
|
||
ve düzenli olarak çöpleri toplamak için <parameter>gc</parameter>.
|
||
</para>
|
||
<para>
|
||
Bu nedenle, PHP'ye oturum kaydetme işleyicileri daima gereklidir.
|
||
Öntanımlı işleyici, genellikle dahili dosyaları kaydetme işleyicisidir.
|
||
Özel bir kaydetme işleyicisi, <function>session_set_save_handler</function>
|
||
kullanılarak atanabilir. Bunun yanında, dahili kaydetme işleyicileri
|
||
<parameter>sqlite</parameter>, <parameter>memcache</parameter> ve
|
||
<parameter>memcached</parameter> gibi PHP eklentileri tarafından da sağlanır
|
||
ve <link linkend="ini.session.save-handler">session.save_handler</link> ile
|
||
atanabilir.
|
||
</para>
|
||
<para>
|
||
Oturum başladığında, PHP dahili olarak oturum açma işleyicisini, ardından da
|
||
depolamaya olduğu gibi aktarılmak üzere kodlanmış bir dizge döndüren okuma
|
||
geriçağrım işlevini çağırır. Okuma geriçağırım işlevi kodlanmış dizgeyi
|
||
döndürdüğünde, PHP dizgeyi çözer ve ortaya çıkan diziyi
|
||
<varname>$_SESSION</varname> süper küreseline aktarır.
|
||
</para>
|
||
<para>
|
||
PHP kapandığında (veya <function>session_write_close</function>
|
||
çağrıldığında), PHP dahili olarak <varname>$_SESSION</varname> süper
|
||
küreselini kodlayacak ve bunu oturum kimliği ile birlikte yazma
|
||
geriçağrımına iletecektir. Yazma geriçağırımı bittikten sonra, PHP dahili
|
||
olarak kapatma geriçağırım işleyicisini çağırır.
|
||
</para>
|
||
<para>
|
||
Bir oturum özellikle yok edildiğinde, PHP oturum kimliğini aktararak
|
||
yoketme işleyicisini çağırır.
|
||
</para>
|
||
<para>
|
||
PHP, bir oturumun belirlenen azami yaşam süresine göre herhangi bir oturum
|
||
kaydını sona erdirmek için zaman zaman çöp toplama geriçağrımı yapar. Bu
|
||
işlev, kalıcı depolamada, belirlenen yaşam süresinden daha uzun süre
|
||
erişilen tüm kayıtları siler.
|
||
</para>
|
||
</section>
|
||
</appendix>
|
||
|
||
<!-- 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
|
||
-->
|
||
|