File: session.xml

package info (click to toggle)
phpdoc 20020310-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 35,272 kB
  • ctags: 354
  • sloc: xml: 799,767; php: 1,395; cpp: 500; makefile: 200; sh: 140; awk: 51
file content (1068 lines) | stat: -rw-r--r-- 36,676 bytes parent folder | download
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
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
<?xml version="1.0" encoding="iso-8859-2"?>
<!-- EN-Revision: 1.70 Maintainer: leon Status: ready -->
<!-- $Revision: 1.11 $ -->
 <reference id="ref.session">
  <title>Sesje</title>
  <titleabbrev>Sesje</titleabbrev>
	
  <partintro>
   <para>
    Obsuga sesji w PHP ma na celu zapewnienie sposobu na zachowanie pewnych
    danych w trakcie nastpujcych po sobie wywoa strony. Pozwala to na
    budowanie bardziej spersonalizowanych aplikacji i zwikszenie
    atrakcyjnoci twojej strony internetowej.
   </para>
   <para>
    Jeli jeste zaznajomiony z zarzdzaniem sesj w PHPLIB, zauwaysz e
    pewnie koncepcje s podobne w obudze sesji PHP.
   </para>
   <para>
    Go wchodzcy na twoj stron WWW otrzymuje unikalny identyfikator, tzw.
    id sesji. Jest ono przechowywane albo jako ciasteczko po stronie
    uytkownika lub propagowane w URL'u.
   </para>
   <para>
    Obsuga sesji pozwala ci na rejestrowanie dowolnej iloci zmiennych, ktre
    maj by przekazywane pomidzy stronami. Kiedy go wchodzi na twoj
    strone, PHP automatycznie sprawdzi (jeli session.auto_start jest ustawione
    na 1) lub na twoje yczenie (jawnie przez wywoanie
    <function>session_start</function> lub niejawnie przez wywoanie
    <function>session_register</function>) czy specyficzne id sesji zostao
    przypisane. Jeli tak, poprzednio zachowane rodowisko jest odtwarzane.
   </para>
   <para>
    Wszystkie zarejestrowane zmienne s serializowane po wykonaniu caego kodu
    strony. Zarejestrowane zmienne, ktre s niezdefiniowane, s zaznaczane
    jako niezdefijiowane. Nie s one definiowane przez modu sesji w
    nastpujcych po sobie wywoaniach, chyba e uytkownik zdefiniuje je
    pniej.
   </para>
   <para>
    Opcje konfiguracyjne <link
    linkend="ini.track-vars"><literal>track_vars</literal></link> i
    <link
    linkend="ini.register-globals"><literal>register_globals</literal></link>
    wpywaj na to, jak zmienne sesyjne s przechowywane i odtwarzane.
   </para>

   <note>
    <para>
     Od PHP w wersji 4.0.3 opcja <link
     linkend="ini.track-vars"><literal>track_vars</literal></link> jest zawsze
     wczona.
    </para>
   </note>

   <para>
    Jeli wczona jest opcja <link
    linkend="ini.track-vars"><literal>track_vars</literal></link> a
    <link
    linkend="ini.register-globals"><literal>register_globals</literal></link>
    jest wyczona, tylko pozycje nalece do zmiennej asocjacyjnej
    $HTTP_SESSION_VARS mog by zarejestrowane jako zmienne sesyjne.
    Odtworzone zmienne sesyjne bd dostpne tylko w zmiennej
    $HTTP_SESSION_VARS.
  <example>
     <title>
      Rejestracja zmiennej z wczon opcj <link
      linkend="ini.track-vars"><literal>track_vars</literal></link>
     </title>
     <programlisting role="php">
<![CDATA[
<?php
session_register("count");
$HTTP_SESSION_VARS["count"]++;
?>
]]>
     </programlisting>
    </example>
   </para>
   <para>
    Jeli wczona jest opcja <link
    linkend="ini.register-globals"><literal>register_globals</literal></link>,
    wszystkie globalne zmienne mog by zarejestrowane jako zmienne sesyjne a
    zmienne sesyjne bd odtworzone do odpowiadajcych im zmiennych
    globalnych.
  <example>
     <title>
      Rejestracja zminnych z wczon opcj <link
      linkend="ini.register-globals"><literal>register_globals</literal></link>
     </title>
     <programlisting role="php">
<![CDATA[
<?php
session_register("count");
$count++;
?>
]]>
     </programlisting>
    </example>
   </para>
   <para>
    Jeli wczone s obie opcje, <link
    linkend="ini.track-vars"><literal>track_vars</literal></link> i
    <link
    linkend="ini.register-globals"><literal>register_globals</literal></link>,
    globalne zmienne i wpisy w $HTTP_SESSION_VARS bd referencjami do tej
    samej wartoci.
   </para>
   <para>
    Istniej dwie metody propagacji identyfikatora sesji:
    <itemizedlist>
     <listitem>
      <simpara>
       Ciasteczka
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       Parametry URL'a
      </simpara>
     </listitem>
    </itemizedlist>
   </para>
   <para>
    Modu sesji obsuguje obie metody. Ciasteczka s metod optymaln, ale
    poniewa nie s one pewne (klienci nie musz ich akceptowa), nie moemy
    na nich polega. Druga metora wstawia identyfikatory sesji bezporednio do
    URL'i.
   </para>
   <para>
    PHP moe to robi 'przezroczycie' jeli zosta skompilowany z opcj
    <link linkend="install.configure.enable-trans-sid">
    <literal>--enable-trans-sid</literal></link>. Jeli wczysz t opcj,
    wzgldne URI zostan automatycznie podmienione tak, aby zawieray
    identyfikator sesji. Moesz take uy staej <literal>SID</literal> ktra
    jest definiowana jeli klient nie wysa odpowiedniego ciastka. <literal>
    SID</literal> jest albo w postaci <literal>nazwa_sesji=id_sesji</literal>
    lub pustym stringiem.
   </para>
   <para>
    Poniszy przykad demonstruje jak zarejestrowa zmienn i jak prawidowo
    wstawi link do kolejnej strony korzystajc ze staej SID.
    <example>
     <title>Zliczanie iloci odwiedzin pojedyczego uytkownika</title>
     <programlisting role="php">
<![CDATA[
<?php
session_register ("count");
$count++;
?>

Witaj gociu. Ogldasz t stron <?php echo $count; ?> raz.<p>

<?php
# <?=SID?> jest konieczne do zachowania identyfikatora sesji jeli
# uytkownik wyczy ciastka
?>

Aby kontynuowa, <A HREF="nextpage.php?<?=SID?>">kliknij tutaj</A>
]]>
     </programlisting>
    </example>
   </para>
   <para>
    <literal>&lt;?=SID?&gt;</literal> nie jest konieczne jeli przy kompilacji
    PHP uyta zostaa opcja
    <link linkend="install.configure.enable-trans-sid">
    <literal>--enable-trans-sid</literal></link>.
   </para>
   <note>
    <para>
     PHP zakada, e bezwzgldne URLe odnosz si do zewntrznych serwisw,
     wic nie trzeba przekazywa SID, poniewa istniaoby niebezpieczestwo
     podkradania SIDw przez inny serwer.
    </para>
   </note>
   <para>
    Aby zaimplementowa przechowywanie danych sesyjnych w bazie danych lub w
    dowolnej innej postaci, musisz uy
    <function>session_set_save_handler</function> do stworzenia zestawu
    funkcji przechowujcych dane.
   </para>
   <para>
    System zarzdzania sesj obsuguje wiele opcji konfiguracyjnych, ktre
    moesz wstawi do swojego pliku php.ini. Oto ich krtki przegld.
    <itemizedlist>
     <listitem>
      <simpara>
       <literal>session.save_handler</literal> definiuje nazw procedury
       obsugi, ktra jest uywana do przechowywania i odczytu danych
       skojarzonych z sesj. Domylnie <literal>files</literal>.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.save_path</literal> definiuje argument, ktry jest
       przekazywany procedurze obsugi zapisu danych. Jeli wybierzesz
       domyln procedur obsugi, jest to cieka gdzie tworzone bd pliki z
       danymi. Domylnie <literal>/tmp</literal>.
      </simpara>
      <warning>
       <para>
        Jeli w tej opcji ustawisz katalog, ktry jest oglnie dostpny, jak
        na przykad <filename>/tmp</filename> (domylna warto), inni
        uytkownicy serwera bd w stanie przechwyci sesj przez pobranie
        listy plikw z tego katalogu.
       </para>
      </warning>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.name</literal> okrela nazw sesji, ktra jest uywana
       jako nazwa ciastka. Powinna zawiera tylko znaki alfanumeryczne.
       Domylnie <literal>PHPSESSID</literal>.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.auto_start</literal> okrela, czy modu sesji
       rozpoczyna sesj na pocztku wywoania. Domylnie
       <literal>0</literal> (wyczony).
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.cookie_lifetime</literal> okrela dugo ycia w
       sekundach ciastka przesyanego do przegldarki. Warto 0 oznacza
       "dopki przegldarka nie zostaa zamknita". Domylnie
       <literal>0</literal>.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.serialize_handler</literal> okrela nazw procedury
       obsugi, ktra zostanie uyta do serializacji/odserializacji danych.
       Obecnie obsugiwany jest wewntrzny format PHP (nazwa <literal>php
       </literal> i WDDX (nazwa <literal>wddx</literal>). WDDX jest jedynym
       dostpnym formatem jeli PHP zostao skompilowane z
       <link linkend="ref.wddx">obsug WDDX</link>. Domylnie
       <literal>php</literal>.
       </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.gc_probability</literal> okrela prawdopodobiestwo w
       procentach rozpoczcia procedury gc (garbage collection - zbieranie
       mieci) przy kadym wywoaniu. Domylnie <literal>1</literal>.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.gc_maxlifetime</literal> okrela ilo sekund, po
       jakich dane bd rozpoznawane jako 'mieci' i usuwane.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.referer_check</literal> zawiera podcig, z ktrym
       HTTP_REFERER ma by sprawdzany. Jeli HTTP_REFERER zosta wysany przez
       klienta i nie zawiera podanego podcigu, identyfikator sesji podany
       przez takiego klienta zostanie uznany za niewany. Domylnie jest to
       cig pusty. 
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.entropy_file</literal> podaje ciek do zewntrznego
       zasobu (pliku), ktry bdzie uyty jako dodatkowe rdo entropii w
       procesie tworzenia identyfikatora sesji. Przykady to
       <literal>/dev/random</literal> lub
       <literal>/dev/urandom</literal>, ktre s dostpne na wielu systemach
       Unix.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.entropy_length</literal> okrela liczb bajtw, ktra
       bdzie odczytana z pliku podanego powyej. Domylnie
       <literal>0</literal> (wyczona).
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.use_cookies</literal> okrela czy modu bdzie uywa
       ciasteczek do przechowywania identyfikatora sesji po stronie klienta.
       Domylnie <literal>1</literal> (wczona).
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.cookie_path</literal> okrela ciek ktra bdzie
       podana w session_cookie. Domylnie <literal>/</literal>.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.cookie_domain</literal> okrela domen ktra ma by
       podana w session_cookie. Domylnie - pusta.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.cache_limiter</literal> okrela metod uywan do
       przechowywania stron sesyjnych w pamici podrcznej 
       (nocache/private/private_no_expire/public). Domylnie
       <literal>nocache</literal>.
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.cache_expire</literal> okrela czas ycia w minutach
        stron sesyjnych zachowanych w pamici podrcznej. Nie ma to efektu dla
        metody <literal>nocache</literal>. Domylnie <literal>180</literal>
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>session.use_trans_sid</literal> okrela czy bdzie uywana
       obsuga przezroczystego przekazywania identyfikatora sesji. Opcja brana
       pod uwag tylko jeli PHP zostao skompilowane z opcj
       <link linkend="install.configure.enable-trans-sid">
       <literal>--enable-trans-sid</literal></link>.
       Domylnie <literal>1</literal> (wczona).
      </simpara>
     </listitem>
     <listitem>
      <simpara>
       <literal>url_rewriter.tags</literal> okrela ktre tagi HTML zostaj
       przepisane w celu dopisania identyfikatora sesji jeli wczona zostaa
       opcja przezroczystego przekazywania identyfikatora sesji. Domylnie
       <literal>a=href,area=href,frame=src,input=src,form=fakeentry</literal>
      </simpara>
     </listitem>
    </itemizedlist>
    <note>
     <para>
      Obsuga sesji zostaa dodana w PHP 4.0.
     </para>
    </note>
   </para>
  </partintro>

  <refentry id="function.session-start">
   <refnamediv>
    <refname>session_start</refname>
    <refpurpose>Inicjalizuj dane sesji</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>bool</type><methodname>session_start</methodname>
      <void/>
     </methodsynopsis>
    <simpara>
     <function>session_start</function> tworzy sesj (lub odtwarza biec
      w oparciu o identyfikator sesji przekazywany przez zmienne GET lub
      ciasteczko).
    </simpara>
    <simpara>
     Jeli chcesz, aby sesja bya nazwana, przed wywoaniem
     <function>session_start</function> musisz wywoa
     <function>session_name</function>.
    </simpara>
    <simpara>
     Ta funkcja zawsze zwraca warot &true;.
    </simpara>
    <note>
     <para>
      Jeli uywasz sesji opartych o ciasteczka, to
      <function>session_start</function> musi by wywoane przed wysaniem
      jakichkolwiek danych do przegldarki.
     </para>
    </note>
   </refsect1>
  </refentry>

  <refentry id="function.session-destroy">
   <refnamediv>
    <refname>session_destroy</refname>
    <refpurpose>Niszczy wszystkie dane zarejestrowane w sesji</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>bool</type><methodname>session_destroy</methodname>
      <void/>
     </methodsynopsis>
    <simpara>
     <function>session_destroy</function> niszczy wszystkie dane skojarzone z
     biec sesj. Nie usuwa adnych globalnych zmiennych zwizanych z sesj.
     Nie usuwa te ciasteczka sesyjnego.
    </simpara>
    <simpara>
     Funkcja ta zawraca &true; w przypadku sukcesu w niszczeniu danych sesji.
     W przeciwnym przypadku zwracana jest warto &false;.
    </simpara>
    <para>
     <example>
      <title>Niszczenie sesji</title>
      <programlisting role="php">
<![CDATA[
<?php

# Inicjalizuj sesj
# Jeli uywasz sesion_name("cotam"), nie zapomnij o tym teraz!
session_start();
# Usu wszystkie zmienne sesyjne
session_unset();
# Na koniec, zniszcz sesj
session_destroy();

?>       
]]>
      </programlisting>
     </example>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-name">
   <refnamediv>
    <refname>session_name</refname>
    <refpurpose>Pobierz i/lub ustaw nazw biecej sesji</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>string</type><methodname>session_name</methodname>
      <methodparam choice="opt"><type>string</type><parameter>nazwa</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_name</function> zwraca nazw biecej sesji. Jeli
     podano parametr <parameter>name</parameter>, nazwa biecej sesji
     zostanie zmieniona na t warto.
    </para>
    <para>
     Nazwa sesji jest uywana w identyfikatorze sesji w ciasteczkach i URLach.
     Powinna zawiera tylko znaki alfanumeryczne; powinna by krtka i
     treciwa (np. dla uytkownikw z wczonymi ostrzeeniami o
     ciasteczkach). Nazwa sesji jest przywracana do domylnej wartoci
     okrelonej w <literal>session.name</literal> na pocztku wywoania
     strony, a wic musisz wywoa <function>session_name</function> dla
     kadej strony (przed wywoaniem w niej <function>session_start</function>
     i <function>session_register</function>).
    </para>
    <example>
     <title>Przykady <function>session_name</function></title>
     <programlisting role="php">
<![CDATA[
<?php

# ustaw nazw sesji na WebsiteID

$poprzednia_nazwa = session_name ("WebsiteID");

echo "Poprzedni nazw sesji byo $poprzednia_nazwa<p>";
?>
]]>
     </programlisting>
    </example>
   </refsect1>
  </refentry>

  <refentry id="function.session-module-name">
   <refnamediv>
    <refname>session_module_name</refname>
    <refpurpose>Pobierz i/lub ustaw modu biecej sesji</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>string</type><methodname>session_module_name</methodname>
      <methodparam choice="opt"><type>string</type><parameter>modu</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_module_name</function> zwraca nazw biecego moduu
     sesji. Jeli podany zosta parametr <parameter>modu</parameter>, uyty
     zostanie nowo podany modu.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-save-path">
   <refnamediv>
    <refname>session_save_path</refname>
    <refpurpose>Pobierz i/lub ustaw ciek zapisu biecej sesji</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>string</type><methodname>session_save_path</methodname>
      <methodparam choice="opt"><type>string</type><parameter>cieka</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_save_path</function> zwraca ciek do katalogu, ktry
     aktualnie jest uywany do zapisu danych sesji. Jeli podany zosta
     parametr <parameter>cieka</parameter>, zmieniona zostanie cieka
     zapisu danych.
     <note>
      <para>
       Na niektrych systemach operacyjnych moesz chcia poda ciek do
       systemu plikw, ktry lepiej obsuguje due iloci maych plikw. Na
       przykad na Linuksie reiserfs w takich warunkach ma lepsz wydajno
       ni ext2fs.
      </para>
     </note>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-id">
   <refnamediv>
    <refname>session_id</refname>
    <refpurpose>Pobierz i/lub ustaw identyfikator biecej sesji</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>string</type><methodname>session_id</methodname>
      <methodparam choice="opt"><type>string</type><parameter>id</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_id</function> zwraca identyfikator sesji dla biecej
     sesji. Jeli podany zosta parametr <parameter>id</parameter>, zostanie
     on uyty do zmiany identyfikatora biecej sesji.
    </para>
    <para>
     Do pobrania nazwy i identyfikatora biecej sesji moa by uyta take
     staa <systemitem>SID</systemitem>, ktra zawiera string odpowiedni do
     dodawania go do URLi.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-register">
   <refnamediv>
    <refname>session_register</refname>
    <refpurpose>
     Zarejestruj jedn lub wicej zmiennych w biecej sesji
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>bool</type><methodname>session_register</methodname>
      <methodparam><type>mixed</type><parameter>nazwa</parameter></methodparam>
      <methodparam choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_register</function> jest funkcj o zmiennej liczbie
     argumentw, z ktrych kady moe by albo stringiem zawierajcym nazw
     zmiennej lub tablic zawierajc nazwy zmiennych lub inne tablice. Dla
     kadej napotkanej nazwy zmiennej, <function>session_register</function>
     rejestruje w biecej sesji globaln zmienn o danej nazwie.
    </para>
    <caution>
     <para>
      Funkcja ta rejestruje <emphasis>globaln</emphasis> zmienn. Jeli
      chcesz zarejestrowa zmienn w sesji z wntrza funkcji, musisz si
      upewni e jest ona globalna prez uycie <function>global</function> lub
      uywajc tablic sesyjnych, tak jak to opisano poniej.
     </para>
    </caution>
    <para>
     Funkcja ta zwraca warto &true; jeli wszystkie zmienne zostay
     pomylnie zarejestrowane w sesji.
    </para>
    <para>
     Jeli przed wywoaniem tej funkcji nie wywoano
     <function>session_start</function>, dokonane zostanie niejawne wywoanie
     <function>session_start</function> bez adnych parametrw.
    </para>
    <para>
     Moesz tworzy zmienne sesyjne poprostu przez dopisywanie odpowiednicz
     wpisw do tablic $HTTP_SESSION_VARS lub $_SESSION (PHP >= 4.1.0).
     <informalexample>
      <programlisting role="php">
<![CDATA[
$barney = "Duy fioletowy dinozaur.";
session_register("barney");

$HTTP_SESSION_VARS["zim"] = "Najedca z innej planety.";

# tablica $_SESSION typu auto-global zostaa wprowadzona w PHP 4.1.0
#_SESSION["spongebob"] = "Ma kwadratowe spodnie.";
]]>       
      </programlisting>
     </informalexample>
    </para>
    <note>
     <para>
      W chwili obecnej niemoliwe jest zarejestrowanie w sesji zmiennych
      zawierajcych zasoby. Na przykad, nie moesz stworzy poczenia do
      bazy danych i zachowa identyfikator poczenia jako zmienn sesyjn i
      oczekowa, e poczenie cigle bdzie aktywne po odtworzeniu danych
      sesji. Funkcj PHP, ktra zwraca zasoby, identyfikuje si przez
      zwracanie typu <literal>resource</literal> w definicji funkcji. List
      funkcji, ktre zwracaj zasoby, mona znale w zaczniku
      <link linkend="resource">typy zasobw</link>.
     </para>
    </note>
    <para>
     Patrz take <function>session_is_registered</function> i
     <function>session_unregister</function>.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-unregister">
   <refnamediv>
    <refname>session_unregister</refname>
    <refpurpose>
     Wyrejestruj zmienn z biecej sesji
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>bool</type><methodname>session_unregister</methodname>
      <methodparam><type>string</type><parameter>nazwa</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_unregister</function> wyrejestrowuje (zapomina)
     globaln zmienn o nazwie <parameter>nazwa</parameter> z biecej sesji.
    </para>
    <para>
     Funkcja ta zwraca warto &true; jeli zmienna zostaa pomylnie
     wyrejestrowana z sesji.
    </para>
    <caution>
     <para>
      Ta funkcja nie usuwa zmiennej globalnej o nazwie
      <parameter>nazwa</parameter>, a jedynie zapobiega zapisaniu tej zmiennej
      jako czci sesji. Jeli chcesz usun odpowiedni zmienn globaln,
      musisz uy funkcji <function>unset</function>.
     </para>
    </caution>
   </refsect1>
  </refentry>
  
  <refentry id="function.session-unset">
   <refnamediv>
    <refname>session_unset</refname>
    <refpurpose>
     Zwolnij wszystkie zmienne sesyjne
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>void</type><methodname>session_unset</methodname>
      <void/>
     </methodsynopsis>
    <para>
     Funkcja <function>session_unset</function> zwalnia wszystkie zmienne
     sesyjne, ktre s aktualnie zarejestrowane.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-is-registered">
   <refnamediv>
    <refname>session_is_registered</refname>
    <refpurpose>
     Sprawd, czy zmienna jest zarejestrowana w sesji
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>bool</type><methodname>session_is_registered</methodname>
      <methodparam><type>string</type><parameter>nazwa</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_is_registered</function> zwraca warto &true; jeli w
     biecej sesji zarejestrowana jest zmienna o nazwie
     <parameter>nazwa</parameter>.
    </para>
   </refsect1>
  </refentry>
  
  <refentry id="function.session-get-cookie-params">
   <refnamediv>
    <refname>session_get_cookie_params</refname>
    <refpurpose>
     Pobierz parametry ciasteczka sesyjnego
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>array</type><methodname>session_get_cookie_params</methodname>
      <void/>
     </methodsynopsis>
    <para>
     Funkcja <function>session_get_cookie_params</function> zwraca tablic
     zawierajc informacje o biecym ciasteczku sesyjnym. Tablica zawiera
     ponisze informacje:
     <itemizedlist>
      <listitem>
       <simpara>
        "lifetime" -  Czas ycia ciasteczka.
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        "path" -  cieka na ktrej przechowywane s informacje.
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        "domain" -  Domena ciasteczka.
       </simpara>
      </listitem>
      <listitem>
       <simpara>
        "secure" - Ciasteczko powinno by przesane tylko przez bezpieczne
        poczenie. (Ten element zosta dodany w PHP 4.0.4.)
       </simpara>
      </listitem>
     </itemizedlist>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-set-cookie-params">
   <refnamediv>
    <refname>session_set_cookie_params</refname>
    <refpurpose>
     Ustaw parametry ciasteczka sesyjnego
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>void</type><methodname>session_set_cookie_params</methodname>
      <methodparam><type>int</type><parameter>czas_ycia</parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>cieka</parameter></methodparam>
      <methodparam choice="opt"><type>string</type><parameter>domena</parameter></methodparam>
     </methodsynopsis>
    <para>
     Ustaw parametry ciasteczka pierwotnie zdefiniowane w pliku php.ini. Efekt
     dziaania tej funkcji widoczny jest tylko do koca dziaania skryptu.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-decode">
   <refnamediv>
    <refname>session_decode</refname>
    <refpurpose>Dekoduje dane sesji ze stringu</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>bool</type><methodname>session_decode</methodname>
      <methodparam><type>string</type><parameter>dane</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_decode</function> dekofuje dane sesji zawarte w
     parametrze <parameter>dane</parameter>, ustawiajc zmienne zachowane w
     sesji.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-encode">
   <refnamediv>
    <refname>session_encode</refname>
    <refpurpose>
     Koduje dane biecej sesji do postaci stringu
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>string</type><methodname>session_encode</methodname>
      <void/>
     </methodsynopsis>
    <para>
     <function>session_encode</function> zwraca string zawierajcy zakodowane
     dane biecej sesji.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-set-save-handler">
   <refnamediv>
    <refname>session_set_save_handler</refname>
    <refpurpose>
     Ustawia funkcje uytkownika do przechowywania sesji
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>void</type><methodname>session_set_save_handler</methodname>
      <methodparam><type>string</type><parameter>otwrz</parameter></methodparam><methodparam><type>string</type><parameter>zamknij</parameter></methodparam><methodparam><type>string</type><parameter>czytaj</parameter></methodparam><methodparam><type>string</type><parameter>zapisz</parameter></methodparam><methodparam><type>string</type><parameter>niszcz</parameter></methodparam><methodparam><type>string</type><parameter>gc</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_set_save_handler</function> ustawia funkcje uytkownika
     do obsugi przechowywania sesji, ktre uywane sa do zapisywania i
     odtwarzania danych skojarzonych z sesj. Jest to bardzo przydatne jeli
     preferowany jest sposb przechowywania sesji inny ni ten, ktry jest
     dostarczany z PHP, np. przechowywanie danych sesji w lokalnej bazie
     danych.
    </para>
    <note>
     <para>
      W swoim pliku php.ini musisz ustawi opcj konfiguracji
      <parameter>session.save_handler</parameter> na
      <parameter>user</parameter> aby
      <function>session_set_save_handler</function> zadziaao.
     </para>
    </note>
    <note>
     <para>
      Procedura obsugi "zapisz" nie bdzie wywoana dopki strumie wyjciowy
      jest otwarty. W zwizku z tym, wyjcie instrukcji debugowania zawartych
      w procedurze "zapisz" nigdy nie bdzie widoczne w oknie przegldarki.
      Jeli konieczne jest wyjcie debugowania, sugerowane jest zapisanie tego
      wyjcia do pliku.
     </para>
    </note>
    <para>
     Poniszy przykad opisuje metod przechowywania danych sesyjnych w
     plikach, podobn do tej obsugiwanej wewntrznie przez PHP. Przykad ten
     moe by atwo rozszerzony aby mc uy go z twoj ulubion baz danych
     obsugiwan przez PHP.
    </para>
    <para>
     <example>
      <title>
       Przykad <function>session_set_save_handler</function>
      </title>
      <programlisting role="php">
<![CDATA[
<?php

function open ($save_path, $session_name) {
  global $sess_save_path, $sess_session_name;
       
  $sess_save_path = $save_path;
  $sess_session_name = $session_name;
  return(true);
}

function close() {
  return(true);
}

function read ($id) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "r")) {
    $sess_data = fread($fp, filesize($sess_file));
    return($sess_data);
  } else {
    return("");
  }

}

function write ($id, $sess_data) {
  global $sess_save_path, $sess_session_name;

  $sess_file = "$sess_save_path/sess_$id";
  if ($fp = @fopen($sess_file, "w")) {
    return(fwrite($fp, $sess_data));
  } else {
    return(false);
  }

}

function destroy ($id) {
  global $sess_save_path, $sess_session_name;
       
  $sess_file = "$sess_save_path/sess_$id";
  return(@unlink($sess_file));
}

/*********************************************
 * UWAGA: Musisz sam zaimplementowa obsug *
 * zbierania mieci (gb)                     *
 *********************************************/
function gc ($maxlifetime) {
  return true;
}

session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");

session_start();

// dalej normalnie uywaj sesji

?>
]]>
      </programlisting>
     </example>
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-cache-limiter">
   <refnamediv>
    <refname>session_cache_limiter</refname>
    <refpurpose>
     Pobierz i/lub ustaw biecy ogranicznik pamici podrcznej
    </refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>string</type><methodname>session_cache_limiter</methodname>
      <methodparam choice="opt"><type>string</type><parameter>ogranicznik</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_cache_limiter</function> zwraca nazw biecego
     ogranicznika pamici podrcznej. Jeli podany zosta parametr
     <parameter>ogranicznik</parameter>, nazwa biecego ogranicznego zostanie
     zmieniona na now warto.
    </para>
    <para>
     Ogranicznik pamici podrcznej kontroluje nagwki HTTP wysyane do
     klienta. Nagwki te ustalaj zasady, wedug ktrych zawarto strony
     moe by przechowywana w pamici podrcznej przegldarki. Ustawiajc
     ogranicznik pamici podrcznej na przykad na<literal>nocache</literal>,
     zabronimy jakiekolwiek zachowywanie strony po stronie klienta. Warto
     <literal>public</literal> pozwoli na takie przechywanie. Ogranicznikiem
     moe by te <literal>private</literal>, ktry jest troszk bardziej
     restrykcyjny ni <literal>public</literal>.
    </para>
    <para>
     W trybie <literal>private</literal>, nagwek <literal>Expire</literal>,
     ktry jest wysyany do klienta, moe spowodowa nieoczekiwane dziaanie
     niektrych przegldarem, midzy innymi Mozilli. Moesz unikn tego
     problemu uywajc trybu <literal>private_no_expire</literal>. Nagwek
     <literal>Expire</literal> nie jest w tym wypadku wysyany do klienta.
    </para>
    <note>
     <para>
      <literal>private_no_expire</literal> zostao dodane w PHP 4.2.0dev.
     </para>
    </note>
    <para>
     Ogranicznik pamici podrcznej w momencie wywoania skryptu jest zerowany
     do wartoci domylnej przechowywanej w 
     <literal>session.cache_limiter</literal>. W zwizku z tym niezbdne jest
     wywoanie <function>session_cache_limiter</function> dla kadego
     wywoania skryptu (i przed wywoaniem <function>session_start</function>).
    </para>
    <example>
     <title>Przykady <function>session_cache_limiter</function></title>
     <programlisting role="php">
<![CDATA[
<?php

# Ustaw ogranicznik pamici podrcznej na 'private'

session_cache_limiter('private');
$cache_limiter = session_cache_limiter();

echo "Ogranicznikiem pamici podrcznej jest teraz $cache_limiter<p>";
?>
]]>
     </programlisting>
    </example>
   </refsect1>
  </refentry>

  <refentry id='function.session-cache-expire'>
   <refnamediv>
    <refname>session_cache_expire</refname>
    <refpurpose>Zwr biecy czas przedawnienia pamici podrcznej</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>int</type><methodname>session_cache_expire</methodname>
      <methodparam choice="opt"><type>int</type><parameter>nowy_czas</parameter></methodparam>
     </methodsynopsis>
    <para>
     <function>session_cache_expire</function> zwraca aktualny czas
     przedawnienia pamici podrcznej. Jeli podany zostanie 
     <parameter>nowy_czas</parameter>, to biecy czas zostanie
     zastpiony przez ten podany w parametrze.
    </para>
   </refsect1>
  </refentry>

  <refentry id="function.session-write-close">
   <refnamediv>
    <refname>session_write_close</refname>
    <refpurpose>Zapisz dane i zakocz sesj</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>void</type><methodname>session_write_close</methodname>
      <void/>
     </methodsynopsis>
    <para>
     Zakocz biec sesj i zachowaj dane sesji.
    </para>
    <para>
     Dane sesji s zazwyczaj przechowywane do czasu zakoczenie dziaania
     skryptu bez koniecznoci wywoania <function>session_write_close
     </function>, ale poniewa dane sesji s blokowane w celu zapobieenia
     rwnolegym zapisom, tylko jeden skrypt moe operowa na sesji w danej
     chwili. Uywajc ramek HTMLowych razem z sesjami napotkasz problemy
     zwizane z jednoczesnym korzystaniem z jednej sesji przez kilka skryptw.
     Moesz zmniejszy czas niezbdny do wczytania wszystkich ramek przez
     koczenie sesji jak tylko wykonane s wszystkie zmiany w zmiennych
     sesyjnych.
    </para>
<!-- wykomentowane do czasu ostatecznej decyzji o implementacji
    <para>
     Zobacz take: <function>session_readonly</function>.
    </para>
-->
   </refsect1>
  </refentry>

<!-- wykomentowane do czasu ostatecznej decyzji o implementacji
  <refentry id="function.session-readonly">
   <refnamediv>
    <refname>session_readonly</refname>
    <refpurpose>Rozpocznij sesj - reinicjalizuj zamroone zmienne, ale nie
    nie zapisuj zmian po zakoczeniu wywoania</refpurpose>
   </refnamediv>
   <refsect1>
    <title>Opis</title>
     <methodsynopsis>
      <type>void</type><methodname>session_readonly</methodname>
      <void/>
     </methodsynopsis>
    <para>
     Odczytaj dane sesji bez blokowania tych danych. Nie jest moliwa zmiana
     danych sesyjnych, ale zwikszona jest wydajno ramek HTML.
    </para>
   </refsect1>
  </refentry>
-->
 </reference>

<!-- 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:"../../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
-->