|
|
PHP (angielski akronim rekurencyjny, którego rozwinięcie to PHP Hypertext Preprocessor), pierwotnie nazwany Personal
Home Page - skryptowy język programowania, służący przede wszystkim do tworzenia dynamicznych stron WWW i wykonywany w
tym przypadku po stronie serwera, z możliwością zagnieżdżania w HTML (bądź XHTML). PHP jest podobny w założeniach do
dużo starszego mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej rozbudowany.
Udostępniany jest na zasadach licencji open-source. Jego składnia bazuje na językach C, Java i Perl.
SQL (ang. Structured Query Language) to strukturalny język zapytań używany do tworzenia, modyfikowania baz danych oraz
do umieszczania i pobierania danych z baz danych.
Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi
zarządzania bazą danych DBMS.
Jest to język programowania opracowany w latach siedemdziesiątych w firmie IBM. Stał się on standardem w komunikacji z
serwerami relacyjnych baz danych. Wiele współczesnych systemów relacyjnych baz danych używa do komunikacji z
użytkownikiem SQL, dlatego mówi się, że korzystanie z relacyjnych baz danych, to korzystanie z SQL-a.
Apache jest otwartym serwerem HTTP dostępnym dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD,
Microsoft Windows). Po angielsku słowo Apache wymawia się epaczi, co brzmi tak samo jak a patchy (server), co było
określeniem tego serwera we wczesnym stadium jego rozwoju w 1995 roku, kiedy był on głównie zbiorem poprawek (patch)
nałożonych na serwer HTTP o nazwie NCSA.
Apache jest najszerzej stosowanym serwerem HTTP w Internecie. W maju 2003 jego udział wśród serwerów wynosił 62%. W
połączeniu z interpreterem języka skryptowego PHP i bazą danych MySQL, Apache stanowi jedno z najczęściej spotykanych
środowisk w firmach oferujących miejsce na serwerach sieciowych.
|
session_set_save_handler
(PHP 4, PHP 5) session_set_save_handler -- Ustawia
funkcje użytkownika do przechowywania sesji
Opisbool session_set_save_handler ( callback otwórz,
callback zamknij, callback czytaj, callback zapisz, callback
niszcz, callback gc )
session_set_save_handler() ustawia
funkcje użytkownika do obsługi przechowywania sesji, które
używane sa do zapisywania i odtwarzania danych skojarzonych z
sesją. Jest to bardzo przydatne jeśli preferowany jest sposób
przechowywania sesji inny niż ten, który jest dostarczany z
PHP, np. przechowywanie danych sesji w lokalnej bazie danych.
Zwraca TRUE w przypadku
sukcesu, FALSE w przypadku
porażki.
Notatka: Procedura obsługi "zapisz" nie będzie
wywołana dopóki strumień wyjściowy jest otwarty. W związku
z tym, wyjście instrukcji debugowania zawartych w
procedurze "zapisz" nigdy nie będzie widoczne w oknie
przeglądarki. Jeśli konieczne jest wyjście debugowania,
sugerowane jest zapisanie tego wyjścia do pliku.
Poniższy przykład opisuje metodę przechowywania danych
sesyjnych w plikach, podobną do tej obsługiwanej wewnętrznie
przez PHP. Przykład ten może być łatwo rozszerzony aby móc użyć
go z twoją ulubioną bazą danych obsługiwaną przez PHP.
Funkcja czytająca zawsze musi zwracać ciąg aby procedura
obsługi działała zgodnie z przewidywaniami. Zwróć pusty ciąg
jeśli nie ma żadnych danych do odczytania. Wartości zwracane
przez inne procedury obsługi są konwertowane na wyrażenia
logiczne. TRUE dla sukcesu,
FALSE dla niepowodzenia.
| Ostrzeżenie |
|
Od wersji PHP 5.0.5, funkcje obsługi zapisu i
zamykania wywoływane są po zniszczeniu obiektów. W
związku z tym, destruktory mogą używać sesji, ale nie
mogą używać obiektów. W wersjach wcześniejszych,
wywoływane były w odwrotnej koljeności. Możliwe jest
wywołanie session_write_close() z destruktora
aby rozwiązać ten problem kury i jajka.
|
Przykład 1. Przykład
session_set_save_handler()
<?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(""); // Zawsze musi zwracać ""
}
}
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ć obsługę *
* zbierania śmieci (gc) *
*********************************************/
function gc ($maxlifetime)
{
return true;
}
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// dalej normalnie używaj sesji
?> |
|
Zobacz także opis dyrektywy konfiguracji session.save_handler.
|