Пример #1
0
 /**
  * Start new or resume existing session
  *
  * @link http://www.php.net/manual/en/function.session-start.php
  */
 public static final function session_start()
 {
     if (self::$started) {
         trigger_error('Session already started', E_USER_WARNING);
     }
     self::$started = true;
     if (isset($_COOKIE[session_name()])) {
         self::$id = $_COOKIE[session_name()];
     } else {
         self::$id = uniqid();
         $config = self::session_get_cookie_params();
         Cookie::setcookie(session_name(), self::$id, $config['lifetime'], $config['path'], $config['domain'], $config['secure'], $config['httponly']);
     }
     if (!($savePath = session_save_path())) {
         $savePath = sys_get_temp_dir();
     }
     if (!is_dir($savePath)) {
         mkdir($savePath, 0777);
     }
     self::$file = sprintf('%s/sess_%s', $savePath, self::$id);
     if (self::$handler) {
         self::$handler->open($savePath, session_name());
         self::$handler->read(self::$id);
     }
     if (file_exists(self::$file)) {
         $data = file_get_contents(self::$file);
         session_decode($data);
     }
     return true;
 }