session_set_save_handler

session_set_save_handler -- Ustawia funkcje użytkownika do przechowywania sesji

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 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 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

 

?