Opis
bool
session_set_save_handler
( string otwórz, string zamknij, string czytaj, string zapisz,
string niszcz, string gc)
session_set_save_handler(
)
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
:
W
swoim
pliku
php.ini
musisz
ustawić
opcję
konfiguracji
session.save_handler
na
user
aby
session_set_save_handler(
)
zadziałało
.
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
.
Notatka
:
Procedura
obsługi
zapisywania
nei
jest
wywoływana
jeśli
sesja
nie
zawiera
danych
.
Dotyczty
to
także
sytuacji
,
kiedy
zarejestrowane
zmienne
są
puste
.
Różni
się
to
od
domyślnej
obsługi
sesji
opartej
na
plikach
,
która
tworzy
także
puste
pliki
sesji
.
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
.
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
?
|
|