Spec-Zone.ru › Yii 1.1
CHttpSession CHttpSession предоставляет управление данными на уровне сессии и соответствующие настройки.
Для запуска сессии вызовите
open() ; для завершения и отправки данных сессии вызовите
close() ; для уничтожения сессии вызовите
destroy() .
Если
autoStart установлен в true, сессия будет запущена автоматически при инициализации компонента приложения.
CHttpSession может использоваться как массив для установки и получения данных сессии. Например,
$session=new CHttpSession;
$session->open();
$value1=$session['name1']; // get session variable 'name1'
$value2=$session['name2']; // get session variable 'name2'
foreach($session as $name=>$value) // traverse all session variables
$session['name3']=$value3; // set session variable 'name3'
Доступны следующие настройки для сессии:
Дополнительную информацию см. в документации по соответствующим методам установки и получения. Обратите внимание, что эти свойства должны быть установлены до запуска сессии.
CHttpSession можно расширить для поддержки настраиваемого хранения сессии. Переопределите
openSession ,
closeSession ,
readSession ,
writeSession ,
destroySession и
gcSession и установите
useCustomStorage в true. Затем данные сессии будут храниться и извлекаться с помощью этих методов.
CHttpSession — это компонент веб-приложения, к которому можно получить доступ через
CWebApplication::getSession() .
Общедоступные свойства Свойство
Тип
Описание
Определено autoStart boolean указывает, должна ли сессия запускаться автоматически при инициализации компонента сессии, по умолчанию true. CHttpSession behaviors array поведения, которые должны быть присоединены к этому компоненту. CApplicationComponent cookieMode string способ использования cookie для хранения идентификатора сессии. CHttpSession cookieParams array параметры cookie сессии. CHttpSession count integer Возвращает количество элементов в сессии. CHttpSession gCProbability float вероятность (процент), что процесс gc (сбор мусора) запускается при каждой инициализации сессии, по умолчанию 1, что означает 1% вероятность. CHttpSession isInitialized boolean Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent isStarted boolean указывает, началась ли сессия CHttpSession iterator CHttpSessionIterator Возвращает итератор для обхода переменных сессии. CHttpSession keys array список имен переменных сессии CHttpSession savePath string текущий путь сохранения сессии, по умолчанию {@link http://php. CHttpSession sessionID string текущий идентификатор сессии CHttpSession sessionName string текущее имя сессии CHttpSession timeout integer количество секунд, после которого данные будут считаться "мусором" и удалены, по умолчанию 1440 секунд. CHttpSession useCustomStorage boolean Возвращает значение, указывающее, использовать ли пользовательское хранилище сессии. CHttpSession useTransparentSessionID boolean указывает, включена ли поддержка прозрачного sid, по умолчанию false. CHttpSession
Публичные методы Метод Описание Определено в __call() Вызывает метод с заданным именем, который не является методом класса. CComponent __get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent __isset() Проверяет, является ли значение свойства null. CComponent __set() Устанавливает значение свойства компонента. CComponent __unset() Устанавливает свойство компонента в null. CComponent add() Добавляет переменную сеанса. CHttpSession asa() Возвращает объект поведения с указанным именем. CComponent attachBehavior() Прикрепляет поведение к этому компоненту. CComponent attachBehaviors() Прикрепляет список поведений к компоненту. CComponent attachEventHandler() Прикрепляет обработчик событий к событию. CComponent canGetProperty() Определяет, может ли свойство быть прочитано. CComponent canSetProperty() Определяет, может ли свойство быть установлено. CComponent clear() Удаляет все переменные сеанса. CHttpSession close() Завершает текущий сеанс и сохраняет данные сеанса. CHttpSession closeSession() Обработчик закрытия сеанса. CHttpSession contains() CHttpSession count() Возвращает количество элементов в сеансе. CHttpSession destroy() Освобождает все переменные сеанса и уничтожает все данные, зарегистрированные в сеансе. CHttpSession destroySession() Обработчик уничтожения сеанса. CHttpSession detachBehavior() Отсоединяет поведение от компонента. CComponent detachBehaviors() Отсоединяет все поведения от компонента. CComponent detachEventHandler() Отсоединяет существующий обработчик событий. CComponent disableBehavior() Отключает прикрепленное поведение. CComponent disableBehaviors() Отключает все прикрепленные к этому компоненту поведения. CComponent enableBehavior() Включает прикрепленное поведение. CComponent enableBehaviors() Включает все прикрепленные к этому компоненту поведения. CComponent evaluateExpression() Вычисляет PHP выражение или обратный вызов в контексте этого компонента. CComponent gcSession() Обработчик GC (уборки мусора) сеанса. CHttpSession get() Возвращает значение переменной сеанса по имени переменной сеанса. CHttpSession getCookieMode() Возвращает способ использования cookie для хранения идентификатора сеанса. По умолчанию 'Allow'. CHttpSession getCookieParams() Возвращает параметры cookie сеанса. CHttpSession getCount() Возвращает количество элементов в сеансе. CHttpSession getEventHandlers() Возвращает список прикрепленных обработчиков событий для события. CComponent getGCProbability() Возвращает вероятность (процент) запуска процесса gc (уборки мусора) при каждом инициализации сеанса, по умолчанию 1, что означает 1% вероятность. CHttpSession getIsInitialized() Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent getIsStarted() Проверяет, был ли начат сеанс. CHttpSession getIterator() Возвращает итератор для перебора переменных сеанса. CHttpSession getKeys() Возвращает список имён переменных сеанса. CHttpSession getSavePath() Возвращает текущий путь сохранения сеанса, по умолчанию http://php.net/session.save_path . CHttpSession getSessionID() Возвращает текущий идентификатор сеанса. CHttpSession getSessionName() Возвращает текущее имя сеанса. CHttpSession getTimeout() Возвращает количество секунд, по истечении которых данные будут считаться 'мусором' и удалены, по умолчанию 1440 секунд. CHttpSession getUseCustomStorage() Возвращает значение, указывающее, использовать ли пользовательское хранилище сеанса. CHttpSession getUseTransparentSessionID() Возвращает, включена ли поддержка прозрачного идентификатора SID или нет, по умолчанию false. CHttpSession hasEvent() Определяет, определено ли событие. CComponent hasEventHandler() Проверяет, есть ли прикреплённые обработчики к событию с указанным именем. CComponent hasProperty() Определяет, определено ли свойство. CComponent init() Инициализирует компонент приложения. CHttpSession itemAt() Возвращает значение переменной сеанса по имени переменной сеанса. CHttpSession offsetExists() Этот метод необходим для интерфейса ArrayAccess. CHttpSession offsetGet() Этот метод необходим для интерфейса ArrayAccess. CHttpSession offsetSet() Этот метод необходим для интерфейса ArrayAccess. CHttpSession offsetUnset() Этот метод необходим для интерфейса ArrayAccess. CHttpSession open() Запускает сеанс, если он ещё не запущен. CHttpSession openSession() Обработчик открытия сеанса. CHttpSession raiseEvent() Вызывает событие. CComponent readSession() Обработчик чтения сеанса. CHttpSession regenerateID() Обновляет текущий идентификатор сеанса новым сгенерированным. CHttpSession remove() Удаляет переменную сеанса. CHttpSession setCookieMode() Устанавливает способ использования cookie для хранения идентификатора сеанса. Допустимые значения: 'none', 'allow' и 'only'. CHttpSession
setCookieParams() Устанавливает параметры cookie сессии. CHttpSession setGCProbability() Устанавливает вероятность (в процентах) запуска процесса gc (уборки мусора) при каждом инициализации сессии. CHttpSession setSavePath() Устанавливает текущий путь сохранения сессии. CHttpSession setSessionID() Устанавливает идентификатор сессии для текущей сессии. CHttpSession setSessionName() Устанавливает имя сессии для текущей сессии. Должно быть строкой из алфавитно-цифровых символов. По умолчанию PHPSESSID. CHttpSession setTimeout() Устанавливает количество секунд, по истечении которых данные будут считаться «мусором» и удалены. CHttpSession setUseTransparentSessionID() Устанавливает, включена ли поддержка прозрачного sid или нет. CHttpSession toArray() CHttpSession writeSession() Обработчик записи сессии. CHttpSession
Подробное описание свойств public boolean $autoStart ; Указывает, должна ли сессия автоматически запускаться при инициализации компонента приложения сессии. По умолчанию true.
public string getCookieMode () public void setCookieMode (string $value) Способ использования cookie для хранения ID сессии. По умолчанию «Allow».
public array getCookieParams () public void setCookieParams (array $value) Параметры cookie сессии.
public integer getCount () Возвращает количество элементов в сессии.
public float getGCProbability () public void setGCProbability (float $value) Вероятность (в процентах) запуска процесса gc (уборки мусора) при каждой инициализации сессии. По умолчанию 1 (1% вероятность).
public boolean getIsStarted () Указывает, была ли начата сессия.
public CHttpSessionIterator getIterator () Возвращает итератор для перебора переменных сессии. Этот метод требуется интерфейсом IteratorAggregate.
public array getKeys () Список имён переменных сессии.
public string getSavePath () public void setSavePath (string $value) Текущий путь сохранения сессии. По умолчанию http://php.net/session.save_path .
public string getSessionID () public void setSessionID (string $value) Текущий идентификатор сессии.
public string getSessionName () public void setSessionName (string $value) Текущее имя сессии.
public integer getTimeout () public void setTimeout (integer $value) Количество секунд, по истечении которых данные будут считаться «мусором» и удалены. По умолчанию 1440 секунд.
public boolean getUseCustomStorage () Возвращает значение, указывающее, использовать ли пользовательское хранилище сессий. Этот метод следует переопределить, чтобы вернуть true, если необходимо использовать пользовательский обработчик хранения сессий. Если возвращается true, убедитесь, что методы openSession , closeSession , readSession , writeSession , destroySession и gcSession переопределены в дочернем классе, так как они будут использоваться в качестве обработчиков обратного вызова. По умолчанию возвращает false.
public boolean getUseTransparentSessionID () public void setUseTransparentSessionID (boolean $value) Указывает, включена ли поддержка прозрачного sid. По умолчанию false.
Подробное описание методов public void add (mixed $key, mixed $value) $key mixed Имя переменной сессии $value mixed Значение переменной сессии
Добавляет переменную сессии. Если имя уже существует, старое значение будет удалено.
Удаляет все переменные сессии.
Завершает текущую сессию и сохраняет данные сессии.
public boolean closeSession () {return} boolean Успешно ли закрыта сессия
Обработчик закрытия сессии. Этот метод следует переопределить, если useCustomStorage установлен в true. Не вызывать этот метод напрямую.
public boolean contains (mixed $key) $key mixed Имя переменной сессии {return} boolean Существует ли переменная сессии с указанным именем
public integer count () {return} integer Количество элементов в сессии.
Возвращает количество элементов в сессии. Этот метод необходим для интерфейса Countable.
Освобождает все переменные сессии и уничтожает все данные, зарегистрированные в сессии.
public boolean destroySession (string $id) $id string Идентификатор сессии {return} boolean Успешно ли уничтожена сессия
Обработчик уничтожения сессии. Этот метод следует переопределить, если useCustomStorage установлен в true. Не вызывать этот метод напрямую.
public boolean gcSession (integer $maxLifetime) $maxLifetime integer количество секунд, после которого данные будут считаться «мусором» и удалены. {return} boolean успешно ли выполнена операция GC сессии
Обработчик GC (garbage collection) сессии. Этот метод должен быть переопределён, если useCustomStorage установлен в true. Не вызывать этот метод напрямую.
public mixed get (mixed $key, mixed $defaultValue=NULL) $key mixed имя переменной сессии $defaultValue mixed значение по умолчанию, возвращаемое, если переменная сессии не существует. {return} mixed значение переменной сессии или $defaultValue, если переменная сессии не существует.
Возвращает значение переменной сессии по имени переменной сессии. Этот метод очень похож на itemAt и offsetGet , за исключением того, что он вернёт $defaultValue, если переменная сессии не существует.
public string getCookieMode () {return} string способ использования куки для хранения ID сессии. По умолчанию «Allow».
Исходный код: framework/web/CHttpSession.php#255 (
показать )
public function getCookieMode () { if( ini_get ( 'session.use_cookies' )=== '0' ) return 'none' ; elseif( ini_get ( 'session.use_only_cookies' )=== '0' ) return 'allow' ; else return 'only' ; } public array getCookieParams () {return} array параметры cookie сессии.
public integer getCount () {return} integer количество переменных сессии
Возвращает количество элементов в сессии.
public float getGCProbability () {return} float вероятность (в процентах), что процесс gc (garbage collection) запущен при каждом инициализации сессии, по умолчанию 1 (1% шанс).
public boolean getIsStarted () {return} boolean запущена ли сессия
Возвращает итератор для обхода переменных сессии. Этот метод необходим для интерфейса IteratorAggregate.
public array getKeys () {return} array список имён переменных сессии
public string getSessionID () {return} string текущий ID сессии
public string getSessionName () {return} string текущее имя сессии
public integer getTimeout () {return} integer количество секунд, после которого данные будут считаться «мусором» и удалены, по умолчанию 1440 секунд.
public boolean getUseCustomStorage () {return} boolean использовать ли пользовательское хранилище.
Возвращает значение, указывающее, следует ли использовать пользовательское хранилище сессий. Этот метод должен быть переопределён, чтобы вернуть true, если необходимо использовать пользовательский обработчик хранилища сессий. Если возвращено true, убедитесь, что методы openSession , closeSession , readSession , writeSession , destroySession и gcSession переопределены в дочернем классе, так как они будут использоваться как обработчики обратного вызова. По умолчанию всегда возвращает false.
public boolean getUseTransparentSessionID () {return} boolean включена ли поддержка прозрачных sid, по умолчанию false.
Инициализирует компонент приложения. Этот метод необходим для IApplicationComponent и вызывается приложением.
public mixed itemAt (mixed $key) $key смешанный тип имя переменной сессии {возвращает} смешанный тип значение переменной сессии, null, если такой переменной не существует
Возвращает значение переменной сессии по имени переменной сессии. Этот метод идентичен методу offsetGet .
public boolean offsetExists (mixed $offset) $offset смешанный тип смещение для проверки {возвращает} булево
Этот метод необходим для интерфейса ArrayAccess.
public mixed offsetGet (integer $offset) $offset целое число смещение для получения элемента. {возвращает} смешанный тип элемент по смещению, null, если элемент по смещению не найден
Этот метод необходим для интерфейса ArrayAccess.
public void offsetSet (integer $offset, mixed $item) $offset целое число смещение для установки элемента $item смешанный тип значение элемента
Этот метод необходим для интерфейса ArrayAccess.
public void offsetUnset (mixed $offset) $offset смешанный тип смещение для удаления элемента
Этот метод необходим для интерфейса ArrayAccess.
Исходный код: framework/web/CHttpSession.php#109 (
показать )
public function open () { if( $this -> getUseCustomStorage ()) @ session_set_save_handler (array( $this , 'openSession' ),array( $this , 'closeSession' ),array( $this , 'readSession' ),array( $this , 'writeSession' ),array( $this , 'destroySession' ),array( $this , 'gcSession' )); @ session_start (); if( YII_DEBUG && session_id ()== '' ) { $message = Yii :: t ( 'yii' , 'Failed to start session.' ); if( function_exists ( 'error_get_last' )) { $error = error_get_last (); if(isset( $error [ 'message' ])) $message = $error [ 'message' ]; } Yii :: log ( $message , CLogger :: LEVEL_WARNING , 'system.web.CHttpSession' ); } } Начинает сеанс, если он еще не начат.
public boolean openSession (string $savePath, string $sessionName) $savePath строка путь сохранения сессии $sessionName строка имя сессии {возвращает} булево успешно ли открыта сессия
Обработчик открытия сессии. Этот метод следует переопределять, если useCustomStorage установлен в true. Не вызывайте этот метод напрямую.
public string readSession (string $id) $id строка Идентификатор сессии {возвращает} строка данные сессии
Обработчик чтения сессии. Этот метод следует переопределять, если useCustomStorage установлен в true. Не вызывайте этот метод напрямую.
public void regenerateID (boolean $deleteOldSession=false) $deleteOldSession булево Удалять ли старый файл сессии.
Обновляет текущий идентификатор сессии на новый сгенерированный. Подробнее см. http://php.net/session_regenerate_id .
public mixed remove (mixed $key) $key смешанный тип имя переменной сессии для удаления {возвращает} смешанный тип удаленное значение, null, если такой переменной сессии не существует.
Удаляет переменную сессии.
public void setCookieMode (string $value) $value строка способ использования cookie для хранения идентификатора сессии. Допустимые значения: 'none', 'allow' и 'only'.
Исходный код: framework/web/CHttpSession.php#269 (
показать )
public function setCookieMode ( $value ) { if( $value === 'none' ) { ini_set ( 'session.use_cookies' , '0' ); ini_set ( 'session.use_only_cookies' , '0' ); } elseif( $value === 'allow' ) { ini_set ( 'session.use_cookies' , '1' ); ini_set ( 'session.use_only_cookies' , '0' ); } elseif( $value === 'only' ) { ini_set ( 'session.use_cookies' , '1' ); ini_set ( 'session.use_only_cookies' , '1' ); } else throw new CException ( Yii :: t ( 'yii' , 'CHttpSession.cookieMode can only be "none", "allow" or "only".' )); } public void setCookieParams (array $value) $value массив параметры cookie, допустимые ключи: lifetime, path, domain, secure, httponly. Обратите внимание, что httponly — в нижнем регистре.
Исходный код: framework/web/CHttpSession.php#241 (
показать )
public function setCookieParams ( $value ) { $data = session_get_cookie_params (); extract ( $data ); extract ( $value ); if(isset( $httponly )) session_set_cookie_params ( $lifetime , $path , $domain , $secure , $httponly ); else session_set_cookie_params ( $lifetime , $path , $domain , $secure ); } Устанавливает параметры cookie сессии. Действие этого метода действует только в течение выполнения скрипта. Вызовите этот метод до начала сессии.
public void setGCProbability (float $value) $value вещественное число вероятность (в процентах), что процесс gc (уборка мусора) будет запущен при каждом инициализации сессии.
Исходный код: framework/web/CHttpSession.php#302 (
показать )
public function setGCProbability ( $value ) { if( $value >= 0 && $value <= 100 ) { // percent * 21474837 / 2147483647 ≈ percent * 0.01 ini_set ( 'session.gc_probability' , floor ( $value * 21474836.47 )); ini_set ( 'session.gc_divisor' , 2147483647 ); } else throw new CException ( Yii :: t ( 'yii' , 'CHttpSession.gcProbability "{value}" is invalid. It must be a float between 0 and 100.' , array( '{value}' => $value ))); } public void setSavePath (string $value) $value строка текущий путь сохранения сессии
Исходный код: framework/web/CHttpSession.php#215 (
показать )
public function setSavePath ( $value ) { if( is_dir ( $value )) session_save_path ( $value ); else throw new CException ( Yii :: t ( 'yii' , 'CHttpSession.savePath "{path}" is not a valid directory.' , array( '{path}' => $value ))); } public void setSessionID (string $value) $value string идентификатор сессии для текущей сессии
public void setSessionName (string $value) $value string имя сессии для текущей сессии, должно быть строкой из букв и цифр, по умолчанию PHPSESSID
public void setTimeout (integer $value) $value integer количество секунд, после которых данные будут считаться 'мусором' и очищены
public void setUseTransparentSessionID (boolean $value) $value boolean включена или нет поддержка прозрачного sid.
public array toArray () {return} array список всех переменных сессии в массиве
public boolean writeSession (string $id, string $data) $id string идентификатор сессии $data string данные сессии {return} boolean успешно ли записана сессия
Обработчик записи сессии. Этот метод необходимо переопределить, если useCustomStorage установлен в значение true. Не вызывать этот метод напрямую.