session_set_save_handler —  Ustawia funkcje użytkownika do przechowywania sesji 
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 powodzenia, FALSE w przypadku błędu.     
Informacja: 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.     
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.      
Listing
//Example #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
?>
Ranga: Administrator serwisu Punktów: 0



 
  
				

 
                             
 


 
                        
 
		 
	