WebDeveloper
 g│≤wna | forum manual | skrypty |  artyku│y |  projekty | porady |  zasoby |  linki 
dzia│y
  •  manual PHP
  •  skrypty PHP
  •  artyku│y
  •  projekty
  •  porady
  •  zasoby
  •  linki
  •  
    forum
  •  php
  •  apache
  •  mysql
  •  postgresql
  •  faq php
  •  pomocnik php
  •  
    news
  • Porcjowanie wynik≤w zapytania
  • Kartki Internetowe
  • PHP + MySQL + Windows 98
  • Bezpieczne uploadowanie plik≤w
  • Przegl▒danie obrazk≤w z bazy PostgreSql.
  • Co to jest WebDeveloper?
  • Instalujemy serwer baz danych !
  • Sesje w PHP4 !
  • Dodaj poradΩ !!!
  • Zastosowano... PHP !
  • redakcja

    Je╢li masz ciekawe informacje odno╢nie PHP, skrypty, porady, linki itp. lub chcia│by╢ wsp≤│tworzyµ serwis PHP.zone.pl daj nam znaµ na email !



    dodaj poradΩ !


    Powered by:
    PHP
    Apache
    MySql
    Linux

    users online: 8

    XLIX. Funkcje zarz▒dzania sesj▒

    Obs│uga sesji w jΩzyku PHP to spos≤b na przechowywanie danych definiowanych podczas odwiedzin witryny przez u┐ytkownika.

    Wsparcie dla sesji w PHP4 jest zbli┐one do zarz▒dzania sesj▒ u┐ytym w PHPLIB.

    U┐ytkownikowi odwiedzaj▒cemu witrynΩ zostaje przyznany unikalny identyfikator zwany identyfikatorem sesji (session id). Jest on zapisywany w cookie i wysy│any do u┐ytkownika lub umieszczany w URL'u.

    Obs│uga sesji umo┐liwia rejestrowanie wielu danych (zmiennych) pozyskiwanych z zapyta± HTTP . Kiedy wizytuj▒cy odwiedza witrynΩ, PHP automatycznie (je┐eli session.auto_start ma warto╢µ 1) lub gdy tego za┐▒dasz (wywo│uj▒c funkcjΩ session_start() lub session_register()) sprawdza czy w zapytaniu zosta│ umieszczony identyfikator sesji. Je╢li jest, to poprzednie zmienne zostaj▒ zast▒pione nowymi zawartymi w zapytaniu.

    Wszystkie zarejestrowane zmienne s▒ zapisywane w sesji. Zarejestrowane zmienne kt≤re nie zosta│y zdefiniowane s▒ zaznaczane jako niezdefiniowane. Przy kolejnych odwiedzinach zmienne te utrzymuj▒ swoj▒ warto╢µ, chyba ┐e u┐ytkownik zdefiniuje inn▒ warto╢µ podczas kolejnych wizyt.

    Opcje konfiguracji track_vars i gpc_globals maj▒ wp│yw na spos≤b przywracania zmiennych sesji. Je╢li w│▒czona jest opcja track_vars, zmienne sesji po przywr≤ceniu bΩd▒ dostΩpne w globalnej tablicy $HTTP_STATE_VARS. Je╢li w│▒czona jest opcja gpc_globals, zmienne po przywr≤ceniu sesji bΩd▒ dostΩpne jako zmienne globalne. Je╢li obie opcje s▒ w│▒czone, to zar≤wno zmienne globalne jak i tablica $HTTP_STATE_VARS zawieraj▒ te same warto╢ci.

    Istniej▒ dwie metody rozpowszechniania identyfikatora sesji:

    • Cookies
    • Parametr URL'a

    Modu│ sesji wspiera obydwie metody. Cookies to metoda optymalna, ale nie jest pewna (klient (przegl▒darka) mo┐e nie akceptowaµ cookie), wiΩc nie mo┐emy na niej polegaµ. Drugi spos≤b to umieszczanie identyfikator≤w bezpo╢rednio w URL'ach. MetodΩ tΩ PHP obs│uguje w spos≤b przezroczysty je┐eli zosta│o skompilowane z opcj▒ --enable-trans-sid i zmienia ka┐dy wzglΩdny URI tak aby automatycznie zawiera│ identyfikator sesji. WzglΩdnie, mo┐esz u┐yµ sta│ego, wcze╢niej okre╢lonego SID, je┐eli klient nie przys│a│ poprawnego cookie (wa┐nego SID). SID ma postaµ session_name=session_id lub jest pustym │a±cuchem znak≤w.

    Poni┐szy przyk│ad demonstruje rejestrowanie zmiennej i spos≤b stosowania SID'a w odno╢niku.

    Przyk│ad 1. Zliczanie liczby odwiedzin dla pojedy±czego u┐ytkownika

    <?php
    
    session_register("licznik");
    
    $licznik++;
    
    ?>
    
    Witaj, nasza witryne odwiedziles juz <? echo $licznik; ?> razy.<p>
    
    <?
    # <?=SID?> jest konieczny do przechowania identyfikatora sesji
    # je╢li u┐ytkownik nie u┐ywa cookies
    ?>
    
     Aby kontynuowac, <A HREF="nastepna.php?<?=SID?>">kliknij !</A>

    Aby przechowywaµ sesje w bazie danych potrzebna bΩdzie funkcja session_set_save_handler(). Aby u┐ywaµ wspomnianej funkcji do obs│ugi bazy MySql lub innej powiniene╢ rozbudowaµ nastΩpuj▒ce funkcje.

    Przyk│ad 2. U┐ycie session_set_save_handler()

    <?php
    
    function open ($save_path, $session_name) {
        echo "open ($save_path, $session_name)\n";
        return true;
    }
    
    function close () {
        echo "close\n";
        return true;
    }
    
    function read ($key) {
        echo "write ($key, $val)\n";
        return "foo|i:1;";
    }
    
    function write ($key, $val) {
        echo "write ($key, $val)\n";
        return true;
    }
    
    function destroy ($key)
        return true;
    }
    
    function gc ($maxlifetime) {
        return true;
    }
    
    session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
    
    session_start ();
    
    $foo++;
    
    ?>
         

    Powy┐szy przyk│ad wygeneruje poni┐sze:

    $ ./php save_handler.php
    Content-Type: text/html
    Set-cookie: PHPSESSID=f08b925af0ecb52bdd2de97d95cdbe6b
    
    open (/tmp, PHPSESSID)
    read (f08b925af0ecb52bdd2de97d95cdbe6b)
    write (f08b925af0ecb52bdd2de97d95cdbe6b, foo|i:2;)
    close
        

    <?=SID?> nie jest konieczny, je╢li PHP zosta│o skompliowane z opcj▒ --enable-trans-sid (w│▒czony transparent session ID).

    System zarz▒dzania sesj▒ jest konfigurowany wieloma opcjami umieszczonymi w php.ini. Oto ich kr≤tki przegl▒d:

    • session.save_handler definiuje nazwΩ uchwytu, kt≤ry bΩdzie u┐ywany do zapisu i odczytu danych skojarzonych z sesj▒. Domy╢lnie s▒ to pliki.
    • session.save_path definiuje argument, kt≤ry jest przesy│any do uchwytu aby go zapisaµ. Je╢li wybierzesz domy╢lny uchwyt plikowy, argumentem jest ╢cie┐ka katalogu gdzie bΩd▒ umieszczane pliki. Domy╢lnie /tmp.
    • session.name okre╢la nazwΩ sesji, kt≤ra jest u┐yta jako nazwa cookie. Nazwa powinna zawieraµ tylko znaki alfanumeryczne. Domy╢lnie PHPSESSID.
    • session.auto_start okre╢la czy modu│ sesji uruchamia automatycznie sesjΩ w chwili nadej╢cia zapytania. Domy╢lnie 0 (wy│▒czone).
    • session.lifetime okre╢la czas "┐ycia" cookie (w sekundach) przesy│anej do przegl▒darki. Warto╢µ 0 oznacza "do zamkniΩcia okna przegl▒darki". Domy╢lnie 0.
    • session.serialize_handler definiuje nazwΩ uchwytu, kt≤ry jest u┐ywany do szeregowania danych. Obecnie wspierany jest wewnΩtrzny format PHP (nazwa: php) i WDDX (nazwa: wddx). WDDX jest dostΩpne tylko je╢li PHP jest skompilowane ze wsparciem dla WDDX. Domy╢lnie php.
    • session.gc_probability okre╢la prawdopodobie±stwo (w %), ┐e procedury czyszczenia starych sesji (garbage collection) startuj▒ przy ka┐dym zapytaniu. Domy╢lnie 1.
    • session.gc_maxlifetime okre╢la liczbΩ sekund po kt≤rych dane bΩd▒ uznane jako "╢mieci" i zostan▒ usuniΩte.
    • session.extern_referer_check okre╢la czy identyfikatory sesji odebrane z zewnΩtrznych witryn maj▒ byµ usuniΩte. Je┐eli identyfikatory sesji s▒ umieszczane w URL, u┐ytkownicy nie znaj▒cy zasady dzia│ania tej metody, mog▒ nie╢wiadomie rozpowszechniaµ sw≤j session id, co prowadzi do problem≤w z bezpiecze±stwem. Domy╢lnie 0 (wy│▒czone).
    • session.entropy_file zawiera ╢cie┐kΩ do zewnΩtrznych zasob≤w (pliku), kt≤ry bΩdzie dodatkowo wykorzystywany w procesie tworzenia identyfikatora sesji. Przyk│ady: /dev/random lub /dev/urandom kt≤re s▒ dostΩpne w systemach Unix.
    • session.entropy_length okre╢la liczbΩ bajt≤w, kt≤re bΩd▒ odczytywane z pliku okre╢lonego wy┐ej (session.entropy_file). Domy╢lnie 0 (wy│▒czone).
    • session.use_cookies okre╢la, czy modu│ sesji bΩdzie u┐ywa│ cookie do zapisywania identyfikatora sesji po stronie klienta. Domy╢lnie 1 (w│▒czone).
    Uwaga: Obs│uga sesji zosta│a dodana w PHP 4.0.

     

    session_start

    session_start - inicjuje sesjΩ

     

    Opis

    bool session_start(void);

    session_start() tworzy sesjΩ (lub reasumuje wcze╢niejsz▒, bazuj▒c na identyfikatorze sesji przes│anym jako zmienna w zapytaniu GET lub w cookie).

    Ta funkcja zawsze zwraca true.

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_destroy

    session_destroy - niszczy wszystkie dane zarejestrowane w sesji

     

    Opis

    bool session_destroy(void);

    session_destroy() niszczy wszystkie dane nale┐▒ce do aktualnej sesji. Ta funkcja zawsze zwraca true.

     

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_name

    session_name - pobiera i/lub ustawia nazwΩ aktualnej sesji

     

    Opis

    string session_name(string [nazwa]);

    session_name() zwraca nazwΩ bie┐▒cej sesji. Je┐eli nazwa jest ju┐ okre╢lona, to nazwa bie┐▒cej sesji jest zmieniana na tΩ warto╢µ.

    Nazwa sesji odpowiada identyfikatorowi sesji zamieszczonemu w cookies czy URL'u. Nazwa powinna zawieraµ tylko znaki alfanumeryczne; powinna byµ kr≤tka i opisowa (np. dla u┐ytkownik≤w z w│▒czonym powiadamianiem o nadej╢ciu cookie). Nazwa sesji jest zmieniana na warto╢µ domy╢ln▒ zapisan▒ w session.name podczas startu zapytania. W ten spos≤b, musisz wywo│aµ funkcjΩ session_name() dla ka┐dego zapytania (przed wywo│aniem session_start() lub session_register()).

    Przyk│ad 1. Session_name()

    <?php
    
    # ustawia nazwΩ sesji na WebsiteID
    
    $previous_name = session_name("WebsiteID");
    
    echo "Poprzednia nazwa sesji to $previous_name<p>";
         
    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_module_name

    session_module_name - pobiera i/lub ustawia bie┐▒cy modu│ sesji

     

    Opis

    string session_module_name(string [modu│]);

    session_module_name() zwraca nazwΩ aktualnego modu│u sesji. Je┐eli modu│ jest ju┐ okre╢lony, w jego miejsce u┐ywany jest modu│ tu podany.

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_save_path

    session_save_path - pobiera i/lub ustawia ╢cie┐kΩ zapisu aktualnej sesji

     

    Opis

    string session_save_path(string [╢cie┐ka]);

    session_save_path() zwraca ╢cie┐kΩ do katalogu u┐ywanego do zapisu danych sesji. Je┐eli ╢cie┐ka jest ju┐ okre╢lona, zostaje zast▒piona ╢cie┐k▒ tu zdefiniowan▒.

    Uwaga: na niekt≤rych systemach mo┐esz podaµ ╢cie┐kΩ do systemu plik≤w, kt≤ry lepiej obs│uguje ma│e pliki, np. w Linuxie, system plik≤w reiserfs mo┐e byµ bardziej wydajny ni┐ zwyk│y ext2fs.
    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_id

    session_id - pobiera i/lub ustawia aktualny identyfikator sesji

     

    Opis

    string session_id(string [id]);

    session_id() zwraca identyfikator dla aktualnej sesji. Je┐eli id jest ju┐ okre╢lony, zostanie zast▒piony tu zdefiniowanym.

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_register

    session_register - rejestruje (zapisuje) jedn▒ lub wiΩcej zmiennych w bie┐▒cej sesji

     

    Opis

    bool session_register(mixed name, mixed [...]);

    session_register() rejestruje zmienn▒ liczbΩ argument≤w, z kt≤rych ka┐dy mo┐e zawieraµ nazwΩ zmiennej (nie sam▒ zmienn▒) lub tablicΩ zawieraj▒c▒ nazwy zmiennych lub inne tablice . Dla ka┐dej zmiennej, session_register() rejestruje (zapisuje) nazwΩ zmiennej w bie┐▒cej sesji.

    Funkcja zwraca true je╢li zmienna zostanie pomy╢lnie zarejestrowana w sesji (np. zapisana w pliku sesji).

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_unregister

    session_unregister - usuwa zmienn▒ z bie┐▒cej sesji

     

    Opis

    bool session_unregister(string nazwa);

    session_unregister() usuwa zmienn▒ nazwa z bie┐▒cej sesji.

    Funkcja zwraca true je╢li zmienna zostanie pomy╢lnie usuniΩta z sesji.

     

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_is_registered

    session_is_registered - sprawdza czy zmienna jest ju┐ zarejestrowana w sesji

     

    Opis

    bool session_is_registered(string nazwa);

    session_is_registered() zwraca true je╢li zmienna o nazwie nazwa jest ju┐ zarejestrowana w bie┐▒cej sesji

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_decode

    session_decode - dekoduje dane sesji z │a±cucha znak≤w (string)

     

    Opis

    bool session_decode(string dane);

    session_decode() dekoduje dane sesji zapisane w stringu dane, ustawiaj▒c zmienne w sesji.

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.

     

    session_encode

    session_encode - koduje dane bie┐▒cej sesji do postaci │a±cucha znak≤w (string)

     

    Opis

    bool session_encode(void);

    session_encode() zwraca │a±cuch znak≤w (string) z zawarto╢ci▒ (danymi) bie┐▒cej sesji

    Uwaga: Funkcja zosta│a dodana w PHP 4.0.



    hm 2000

    kontakt

    autor:

    Hubert Mierzwiak

    wsp≤│praca:

    Piotr Karolak

    Chcesz prowadziµ sw≤j dzia│ tematyczny typu XML, SQL, admin, JavaScript, itp?
    Napisz do nas !
     
    skrypty
  • designer.zip
  • vipAuth.tgz
  • phpCenzura.tgz
  • vip_php.tgz
  • pomocnik_light
  • ankieta
    Co s▒dzisz o stworzeniu FAQ PHP?
    super!
    po co?

    poprzednie

    newsletter

    wpisz sw≤j email i wci╢nij Enter

    linuxnews.pl
  • KRRiTV stra┐nikiem!?
  • Dzisiejsze zebranie...
  • Felieton w warunkach ekstremalnych
  • Nexidion Designer
  • Solaris OpenSource
  • KDE 2.0.1
  • Jest ju┐ nowy Debian...
  • Tydzie± min▒│...




  • Manual | Skrypty | Artyku│y | Projekty
    Porady | Zasoby | Linki
    G│≤wna | Forum

    Copyright 2000 Hubert Mierzwiak