Loading:

Książka Zend Framework 3. Poradnik Programisty.

session_set_save_handler
bool session_set_save_handler ( $otwórz , $zamknij $czytaj $zapisz $niszcz $gc )



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.

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.



Napisz Artykuł

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

?>
 


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=1251

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors