Session.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. $cookie = session_get_cookie_params();
  18. self::keepCookie($cookie['lifetime']);
  19. // démarre la session
  20. session_name($name);
  21. session_start();
  22. if (isset($_SESSION)) {
  23. self::$session = $_SESSION;
  24. }
  25. }
  26. /**
  27. * Permet de récupérer une variable de session
  28. * @param $p le paramètre à récupérer
  29. * @return la valeur de la variable de session, false si n'existe pas
  30. */
  31. public static function param ($p, $default = false) {
  32. return isset(self::$session[$p]) ? self::$session[$p] : $default;
  33. }
  34. /**
  35. * Permet de créer ou mettre à jour une variable de session
  36. * @param $p le paramètre à créer ou modifier
  37. * @param $v la valeur à attribuer, false pour supprimer
  38. */
  39. public static function _param ($p, $v = false) {
  40. if ($v === false) {
  41. unset ($_SESSION[$p]);
  42. unset (self::$session[$p]);
  43. } else {
  44. $_SESSION[$p] = $v;
  45. self::$session[$p] = $v;
  46. }
  47. }
  48. /**
  49. * Permet d'effacer une session
  50. * @param $force si à false, n'efface pas le paramètre de langue
  51. */
  52. public static function unset_session ($force = false) {
  53. $language = self::param ('language');
  54. session_destroy();
  55. self::$session = array ();
  56. if (!$force) {
  57. self::_param ('language', $language);
  58. Minz_Translate::reset ();
  59. }
  60. }
  61. /**
  62. * Spécifie la durée de vie des cookies
  63. * @param $l la durée de vie
  64. */
  65. public static function keepCookie($l) {
  66. $cookie_dir = dirname(
  67. empty($_SERVER['SCRIPT_NAME']) ? '' : $_SERVER['SCRIPT_NAME']
  68. ) . '/';
  69. session_set_cookie_params($l, $cookie_dir, $_SERVER['HTTP_HOST'],
  70. false, true);
  71. }
  72. /**
  73. * Régénère un id de session.
  74. * Utile pour appeler session_set_cookie_params après session_start()
  75. */
  76. public static function regenerateID() {
  77. session_regenerate_id(true);
  78. }
  79. }