Вход Регистрация
Файл: core/session.php
Строк: 104
<?php

class PEEP_Session
{
    
/**
     * Singleton instance.
     *
     * @var PEEP_Session
     */
    
private static $classInstance;
    private static 
$protectedKeys = array('session.home_url''session.user_agent');

    private function 
__construct()
    {
        if ( 
session_id() === '' )
        {
            
//disable transparent sid support
            
ini_set('session.use_trans_sid''0');
            
ini_set('session.use_cookies''1');
            
ini_set('session.use_only_cookies''1');
        }
    }

    public function 
getName()
    {
        return 
md5(PEEP_URL_HOME);
    }

    
/**
     * Returns an instance of class (singleton pattern implementation).
     *
     * @return PEEP_Session
     */
    
public static function getInstance()
    {
        if ( 
self::$classInstance === null )
        {
            
self::$classInstance = new self();
        }

        return 
self::$classInstance;
    }

    public function 
start()
    {
        
//TODO: maybe session_destroy ?
        
session_name($this->getName());

        
$cookie session_get_cookie_params();
        
$cookie['httponly'] = true;

        
session_set_cookie_params($cookie['lifetime'], $cookie['path'], $cookie['domain'], $cookie['secure'], $cookie['httponly']);

        
session_start();

        if ( !isset(
$_SESSION['session.home_url']) )
        {
            
$_SESSION['session.home_url'] = PEEP_URL_HOME;
        }
        else if ( 
strcmp($_SESSION['session.home_url'], PEEP_URL_HOME) )
        {
            
$this->regenerate();
        }

        
$userAgent PEEP::getRequest()->getUserAgentName();

        if ( isset(
$_SESSION['session.user_agent']) )
        {
            if ( 
$_SESSION['session.user_agent'] !== $userAgent )
            {
                
$this->regenerate();
            }
        }
        else
        {
            
$_SESSION['session.user_agent'] = $userAgent;
        }
    }

    public function 
regenerate()
    {
        
session_regenerate_id();

        
$_SESSION = array();

        if ( isset(
$_COOKIE[$this->getName()]) )
        {
            
$_COOKIE[$this->getName()] = $this->getId();
        }
    }

    public function 
getId()
    {
        return 
session_id();
    }

    public function 
set$key$value )
    {
        if ( 
in_array($keyself::$protectedKeys) )
        {
            throw new 
Exception('Attempt to set protected key');
        }

        
$_SESSION[$key] = $value;
    }

    public function 
get$key )
    {
        if ( !isset(
$_SESSION[$key]) )
        {
            return 
null;
        }

        return 
$_SESSION[$key];
    }

    public function 
isKeySet$key )
    {
        return isset(
$_SESSION[$key]);
    }

    public function 
delete$key )
    {
        unset(
$_SESSION[$key]);
    }
}
Онлайн: 0
Реклама