Session.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * La classe Session gère la session utilisateur
  4. * C'est un singleton
  5. */
  6. class Minz_Session {
  7. /**
  8. * $session stocke les variables de session
  9. */
  10. private static $session = array (); //TODO: Try to avoid having another local copy
  11. /**
  12. * Initialise la session, avec un nom
  13. * Le nom de session est utilisé comme nom pour les cookies et les URLs (i.e. PHPSESSID).
  14. * Il ne doit contenir que des caractères alphanumériques ; il doit être court et descriptif
  15. */
  16. public static function init ($name) {
  17. // démarre la session
  18. session_name ($name);
  19. session_set_cookie_params (0, './', null, false, true);
  20. session_start ();
  21. if (isset ($_SESSION)) {
  22. self::$session = $_SESSION;
  23. }
  24. }
  25. /**
  26. * Permet de récupérer une variable de session
  27. * @param $p le paramètre à récupérer
  28. * @return la valeur de la variable de session, false si n'existe pas
  29. */
  30. public static function param ($p, $default = false) {
  31. return isset(self::$session[$p]) ? self::$session[$p] : $default;
  32. }
  33. /**
  34. * Permet de créer ou mettre à jour une variable de session
  35. * @param $p le paramètre à créer ou modifier
  36. * @param $v la valeur à attribuer, false pour supprimer
  37. */
  38. public static function _param ($p, $v = false) {
  39. if ($v === false) {
  40. unset ($_SESSION[$p]);
  41. unset (self::$session[$p]);
  42. } else {
  43. $_SESSION[$p] = $v;
  44. self::$session[$p] = $v;
  45. }
  46. }
  47. /**
  48. * Permet d'effacer une session
  49. * @param $force si à false, n'efface pas le paramètre de langue
  50. */
  51. public static function unset_session ($force = false) {
  52. $language = self::param ('language');
  53. session_unset ();
  54. self::$session = array ();
  55. if (!$force) {
  56. self::_param ('language', $language);
  57. Minz_Translate::reset ();
  58. }
  59. }
  60. }