-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathsession-set-save-handler.xml
399 lines (389 loc) · 15.8 KB
/
session-set-save-handler.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 184f3f7bd45643cb80f828d0bb001991ec3a5fad Maintainer: nilgun Status: ready -->
<refentry xml:id="function.session-set-save-handler" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>session_set_save_handler</refname>
<refpurpose>Kullanıcı seviyesi oturum saklama işlevlerini bildirir
</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>session_set_save_handler</methodname>
<methodparam><type>callable</type><parameter>open</parameter></methodparam>
<methodparam><type>callable</type><parameter>close</parameter></methodparam>
<methodparam><type>callable</type><parameter>read</parameter></methodparam>
<methodparam><type>callable</type><parameter>write</parameter></methodparam>
<methodparam><type>callable</type><parameter>destroy</parameter></methodparam>
<methodparam><type>callable</type><parameter>gc</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>create_sid</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>validate_sid</parameter></methodparam>
<methodparam choice="opt"><type>callable</type><parameter>update_timestamp</parameter></methodparam>
</methodsynopsis>
<para>
Aşağıdaki sözdizimi kullanılabilir:
</para>
<methodsynopsis>
<type>bool</type><methodname>session_set_save_handler</methodname>
<methodparam><type>object</type><parameter>oturum_işleyici</parameter></methodparam>
<methodparam choice="opt"><type>bool</type><parameter>kapanışı_kaydet</parameter><initializer>&true;</initializer></methodparam>
</methodsynopsis>
<para>
<function>session_set_save_handler</function> işlevi, bir oturumla ilişkili
verileri almak ve saklamak için kullanılan kullanıcı seviyesi oturum
saklama işlevlerini bildirir. PHP oturumlarında başka kaynaklardan
sağlanmış bir saklama yöntemi (oturum verilerini bir yerel veritabanıda
saklamak gibi) kullanılacaksa bu işlev çok işe yarar.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
Bu işlevin iki sözdizimi vardır. İkincisinin bağımsız değişkenleri:
<variablelist>
<varlistentry>
<term><parameter>oturum_işleyici</parameter></term>
<listitem>
<para>
Oturum işleyici olarak kaydedilmek üzere,
<interfacename>SessionHandlerInterface</interfacename> ve seçimlik
olarak <interfacename>SessionIdInterface</interfacename> ve/veya
<interfacename>SessionUpdateTimestampHandlerInterface</interfacename>
gerçekleyen <classname>SessionHandler</classname> gibi bir sınıfın
örneği.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>kapanışı_kaydet</parameter></term>
<listitem>
<para>
<function>session_write_close</function> işlevi
<function>register_shutdown_function</function> işlevi
olarak kaydedilir.
</para>
</listitem>
</varlistentry>
</variablelist>
Birincisinin bağımsız değişkenleri:
<variablelist>
<varlistentry>
<term><parameter>open</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>open</replaceable></methodname>
<methodparam><type>string</type><parameter>kayıtYolu</parameter></methodparam>
<methodparam><type>string</type><parameter>oturumAdı</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bu işlev, sınıflardaki kurucular gibi çalışır ve oturum açıldığında
çalıştırılır. Açma işlevinin iki bağımsız değişken kabul edeceği varsayılır.
İlkinde dosyaların kaydedileceği yerin yolu, ikincisinde oturum ismi
verilir. Oturum başlatıldığında otomatik olarak veya elle
<function>session_start</function> çağırarak çalıştırılan ilk
geriçağırım işlevidir. Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>close</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>close</replaceable></methodname>
<void/>
</methodsynopsis>
</para>
<para>
Bu işlev, sınıflardaki yıkıcılar gibidir ve write geriçağırım işlevinden
sonra çalıştırılır. Ayrıca, <function>session_write_close</function>
çağrıldığında da çalıştırılır.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>read</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>string</type><methodname><replaceable>read</replaceable></methodname>
<methodparam><type>string</type><parameter>oturum_kimliği</parameter></methodparam>
</methodsynopsis>
</para>
<para>
<parameter>read</parameter> geriçağırımı daima dizgeleştirilmiş bir
oturum dizgesi veya hiç veri okunmamışsa boş dizge döndürmelidir.
</para>
<para>
Bu geriçağırım, PHP tarafından dahili olarak oturum başlarken veya
<function>session_start</function> çağrısıyla çalıştırılır. Bu
geriçağırımı çağırmadan önce PHP <parameter>open</parameter>
geriçağırımını çalıştırır.
</para>
<para>
Bu geriçağırımdam dönen dizgeleştirilmiş biçim, değiştirilmeden
<parameter>write</parameter> geriçağırımına aktarılabilecek biçimde
olmalıdır. Dönen değer PHP tarafından otomatik olarak nesneleştirilerek
<varname>$_SESSION</varname> dizisini doldurmakta kullanılır. Veri,
<function>serialize</function> işlevindekine benzese de <link
linkend="ini.session.serialize-handler">session.serialize_handler</link>
ini değişkeninde belirtilen biçimde olacağı unutulmamalıdır.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>write</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>write</replaceable></methodname>
<methodparam><type>string</type><parameter>oturum_kimliği</parameter></methodparam>
<methodparam><type>string</type><parameter>veri</parameter></methodparam>
</methodsynopsis>
</para>
<para>
<parameter>write</parameter> geriçağırımı oturumun kaydedilip
kapatılması gerekince çağrılır. Geriçağırım geçerli oturum kimliğini
ve <varname>$_SESSION</varname> dizisinin dizgeleştirilmiş sürümünü
bağımsız değişken olarak alır. PHP tarafından dahili olarak kullanılan
dizgeleştirme yöntemi, <link
linkend="ini.session.serialize-handler">session.serialize_handler</link>
ini değişkeninde belirtilmiştir.
</para>
<para>
Bu geriçağırıma aktarılan dizgeleştirilmiş oturum saklama verisi,
kimliği aktarılan oturumla ilgili olmalıdır. Bu veri alındığında
<parameter>read</parameter> geriçağırımının döndürdüğü değer,
<parameter>write</parameter> geriçağırımına değiştirilmeden aktarılacak
biçimde olmalıdır.
</para>
<para>
Bu geriçağırım PHP kapanırken veya doğrudan
<function>session_write_close</function> çağrıldığında çalıştırılır.
Bu işlev çalıştırıldıktan sonra PHP dahili olarak
<parameter>close</parameter> geriçağırımını çalıştırır.
<note>
<para>
Bu işlev çıktı akımı kapanana kadar çalıştırılmaz. Bu bakımdan bu
işlevdeki hata ayıklama deyimlerinin çıktıları tarayıcıda hiçbir
zaman görünmez. Eğer hata ayıklama çıktısı gerekliyse, bu çıktının
bir dosyaya yazılması önerilir.
</para>
</note>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>destroy</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>destroy</replaceable></methodname>
<methodparam><type>string</type><parameter>oturum_kimliği</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bu işlev, oturum kimliğini tek bağımsız değişken olarak alır.
<function>session_regenerate_id</function> işlevi eski_oturumu_sil
bağımsız değişkenine &true; atanarak çağrıldığında veya
<function>session_destroy</function> ile oturum yok edildiğinde bu
geriçağırım çalıştırılır. Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>gc</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>gc</replaceable></methodname>
<methodparam><type>int</type><parameter>ömür</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Çöp toplayıcı geriçağırım işlevi olup, eski oturum verilerini
temizlemek için dahili olarak PHP tarafından düzenli aralıklarla
çağrılır. Sıklık
<link linkend="ini.session.gc-probability">session.gc_probability</link>
ve <link linkend="ini.session.gc-divisor">session.gc_divisor</link>
yönergeleri ile ayarlanır. İşleve aktarılan ömür değeri <link
linkend="ini.session.gc-maxlifetime">session.gc_maxlifetime</link>
yönergesinin çalışma zamanı değerini değiştirir.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>create_sid</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>string</type><methodname><replaceable>create_sid</replaceable></methodname>
<void/>
</methodsynopsis>
</para>
<para>
Bu geriçağırım yeni bir oturum kimliği gerektiğinde çalıştırılır.
Bağımsız değişkensizdir ve dönüş değeri dizge olarak geçerli bir oturum kimliği
olmalıdır.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>validate_sid</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>validate_sid</replaceable></methodname>
<methodparam><type>string</type><parameter>anahtar</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bir oturum başlatılıp bir oturum kimliği edinildiğinde <link
linkend="ini.session.use-strict-mode">session.use_strict_mode</link>
yönergesi de etkinse bu geriçağırım çalıştırılır.
<parameter>anahtar</parameter> doğrulanacak oturum kimliğidir. Bu
kimliğe sahip bir oturum varsa bu oturum kimliği geçerlidir.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>update_timestamp</parameter></term>
<listitem>
<para>
Bir geriçağırım işlevi olup sözdizimi şöyle olabilir:
<methodsynopsis>
<type>bool</type><methodname><replaceable>update_timestamp</replaceable></methodname>
<methodparam><type>string</type><parameter>anahtar</parameter></methodparam>
<methodparam><type>string</type><parameter>değer</parameter></methodparam>
</methodsynopsis>
</para>
<para>
Bir oturum güncellendiğinde bu geriçağırım çalıştırılır.
<parameter>anahtar</parameter> oturumun kimliği,
<parameter>değer</parameter> ise oturum verisidir.
Başarı durumunda &true; yoksa &false; döner.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>- Özel oturum işleyici</title>
<para>
<classname>SessionHandlerInterface</classname> sayfasında kodun tamamı
vardır. Burada sadece çağrılan kısım gösterilmiştir.
</para>
<para>
Burada <function>session_set_save_handler</function> işlevinin NYP
sözdizimi kullanılmakta ve kapanışı_kaydet bağımsız değişkeni ile kapanış
işlevi kayıt altına alınmaktadır. Nesneleri oturum kayıt işleyicisi
olarak kayıt altına alma işlemi genel olarak böyledir ve böyle
yapılması önerilir.
</para>
<programlisting role="php">
<![CDATA[
<?php
class MySessionHandler implements SessionHandlerInterface
{
// arayüzlerin gerçeklenimi burada
}
$handler = new MySessionHandler();
session_set_save_handler($handler, true);
session_start();
// $_SESSION dizisinden değerleri anahtarlarına göre
// elde etmek ve atamak için kodlar burada.
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<warning>
<para>
<parameter>write</parameter> ve <parameter>close</parameter> eylemcileri
nesne yokedildikten sonra çağrılmaktadır. Bu bakımdan nesneler ve istisna
yavrulama kullanılamaz. İstisnalar da yakalanamaz, ne yakalanır ne de
herhangi bir istisna izi görüntülenir ve çalışma beklenmedik bir şekilde
durur. Ancak nesne yıkıcılar oturumlarda kullanılabilir.
</para>
<para>
Bu yumurta/tavuk sorununu çözümlemek için bir yıkıcıdan
<function>session_write_close</function> çağrısı yapmak mümkündür fakat
en güvenilir yol, kapanış işlevini yukarıda açıklandığı gibi kayıt altına
almaktır.
</para>
</warning>
<warning>
<para>
Eğer oturum, betiğin sonlanmasıyla kapanmışsa bazı SAPI'lerde, geçerli
çalışma dizini değiştirilir. Böyle durumlarda oturumu önceden
<function>session_write_close</function> ile kapatmak mümkündür.
</para>
</warning>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member>
<link linkend="ini.session.save-handler">session.save_handler</link>
yapılandırma yönergesi
</member>
<member>
<link linkend="ini.session.serialize-handler">session.serialize_handler</link>
yapılandırma yönergesi.
</member>
<member>The <function>register_shutdown_function</function></member>
<member>The <function>session_register_shutdown</function></member>
<member>
Eksiksiz bir yordamsal gönderim gerçeklenimi için bkz: <link
xlink:href="&url.session-save-handler;">save_handler.inc</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
-->