Source for file Session.php
Documentation is available at Session.php
// vim: foldmethod=marker
* @author Masaki Fujimoto <fujimoto@php.net>
* @license http://www.opensource.org/licenses/bsd-license.php The BSD License
* @version $Id: 8848afe7c9ad34755d9310889de6dd982fc2c59c $
* @author Masaki Fujimoto <fujimoto@php.net>
/** @protected object Ethna_Logger loggerオブジェクト */
/** @protected string セッション名 */
/** @protected string セッションデータ保存ディレクトリ */
/** @protected bool セッション開始フラグ */
/** @protected bool 匿名セッションフラグ */
/** @protected array Configuration for session */
'check_remote_addr' =>
true,
'cache_limiter' =>
'nocache',
* Ethna_Sessionクラスのコンストラクタ
* @param string $appid アプリケーションID(セッション名として使用)
* @param string $save_dir セッションデータを保存するディレクトリ
$this->logger =
$this->ctl->getLogger();
$config =
$this->ctl->getConfig()->get('session');
if (($dir =
$this->ctl->getDirectory($this->config['path'])) !==
null) {
if (isset
($_SERVER['REQUEST_METHOD']) ==
false) {
if (strcasecmp($_SERVER['REQUEST_METHOD'], 'post') ==
0) {
||
(ini_get("session.use_trans_sid") ==
1
// check remote address changed
if ($this->config['check_remote_addr']) {
if ($this->get('__anonymous__')) {
* @return string session id
* @return bool true:正当なセッション false:不当なセッション
if (!isset
($_SESSION['REMOTE_ADDR'])
||
$this->_validateRemoteAddr($_SESSION['REMOTE_ADDR'],
$_SERVER['REMOTE_ADDR']) ==
false) {
* @param int $lifetime セッション有効期間(秒単位, 0ならセッションクッキー)
* @return bool true:正常終了 false:エラー
public function start($lifetime =
0, $anonymous =
false)
$_SESSION['REMOTE_ADDR'] =
$_SERVER['REMOTE_ADDR'];
$_SESSION['__anonymous__'] =
$anonymous;
$_SESSION['REMOTE_ADDR'] = isset
($_SERVER['REMOTE_ADDR']) ?
$_SERVER['REMOTE_ADDR']:
false;
$_SESSION['__anonymous__'] =
$anonymous;
$this->logger->log(LOG_INFO, 'Session started.');
* @return bool true:正常終了 false:エラー
* @return bool true:正常終了 false:エラー
public function regenerateId($lifetime =
0, $anonymous =
false)
$this->start($lifetime, $anonymous);
unset
($tmp['REMOTE_ADDR']);
unset
($tmp['__anonymous__']);
foreach ($tmp as $key =>
$value) {
$_SESSION[$key] =
$value;
* @return mixed 取得した値(null:セッションが開始されていない)
public function get($name)
if (!isset
($_SESSION[$name])) {
* @return bool true:正常終了 false:エラー(セッションが開始されていない)
public function set($name, $value)
$_SESSION[$name] =
$value;
* @return bool true:正常終了 false:エラー(セッションが開始されていない)
* @param string $anonymous 匿名セッションを「開始」とみなすかどうか(default: false)
* @return bool true:開始済み false:開始されていない
public function isStart($anonymous =
false)
* @return bool true:匿名セッション false:非匿名セッション/セッション開始されていない
* セッションに保存されたIPアドレスとアクセス元のIPアドレスが
* 同一ネットワーク範囲かどうかを判別する(16bit mask)
* @param string $src_ip セッション開始時のアクセス元IPアドレス
* @param string $dst_ip 現在のアクセス元IPアドレス
* @return bool true:正常終了 false:不正なIPアドレス
private function _validateRemoteAddr($src_ip, $dst_ip)
if (($src & 0xffff0000) ==
($dst & 0xffff0000)) {
$this->logger->log(LOG_NOTICE, "session IP validation failed [%s] - [%s]",
Documentation generated on Fri, 11 Nov 2011 03:59:03 +0900 by phpDocumentor 1.4.3