session_set_save_handler

session_set_save_handler -- Setzt benutzerdefinierte Session-Speicherfunktionen

Beschreibung

bool session_set_save_handler ( string öffnen, string schließen, string lesen, string schreiben, string löschen, string gc)

session_set_save_handler( ) setzt die benutzerdefinierten Session-Speicherfunktionen , die zur Speicherung und Wiederherstellung von zur Session gehörigen Daten verwendet werden . Dies ist äußerst nützlich , wenn eine andere als die mit PHP-Sessions zur Verfügung stehende Art der Speicherung , z.B . die Speicherung der Session-Daten in einer lokalen Datenbank , bevorzugt wird . Gibt bei Erfolg TRUE zurück , im Fehlerfall FALSE .

Anmerkung : Die " schreiben "-Routine wird nicht ausgeführt , bevor die Ausgabe abgeschlossen ist . Deshalb werden auch niemals Fehlermeldungen der " schreiben "-Routine im Browser erscheinen . Wenn die Ausgabe von Fehlermeldungen nötig ist , sollte diese stattdessen in eine Datei geschrieben werden .

Anmerkung : Wenn die Session keine Daten enthält , wird die " schreiben"-Routine nicht ausgeführt ; das trifft auch dann zu , wenn leere Session-Variablen registriert sind . Im Unterschied dazu erzeugt die standardmäßige dateibasierte Session-Speicherfunktion auch leere Session-Dateien .

Das folgende Beispiel liefert eine dateibasierte Session-Speicherung , die der Standard-Speicherroutine files der PHP-Sessions ähnlich ist . Dieses Beispiel kann problemlos erweitert werden , dass es Datenbank-Speicherung mittels ihrer bevorzugten PHP-gestützten Datenbank beinhaltet .

Damit die Speicherroutine funktioniert wie erwartet , muss die read-Function immer einen String-Wert zurückgeben . Wenn es keine Daten zu lesen gibt , geben Sie eine leere Zeichenkette zurück . Rückgabewerte anderer Routinen werden in boolesche Ausdrücke umgewandelt . TRUE für einen Erfolg , FALSE für einen Fehler .

Beispiel 1 . session_set_save_handler( ) Beispiel

 
?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("")

 
;

 
/

 
/

 
Must

 
return

 
"

 
"

 
here

 
.

 
  }

 

}

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

 
;

 
}

 
/

 

************************************************

 
*

 
WARNUNG

 
-

 
Sie

 
müssen

 
hier

 
irgendeine

 
Art

 
von

 
*

 
*

 
Speicherbereinigungsroutine

 
realisieren

 
.

 
*

 

************************************************

 
/

 
function

 
gc

 
($maxlifetime

 
)

 
{

 
return

 
true

 
;

 
}

 
session_set_save_handler

 
("open"

 
,

 
"close"

 
,

 
"read"

 
,

 
"write"

 
,

 
"destroy"

 
,

 
"gc")

 
;

 
session_start()

 
;

 
/

 
/

 
verfahren

 
Sie

 
mit

 
Sessions

 
wie

 
gewohnt

 
?





Siehe auch die session.save_handler Konfigurationsanweisung .