嚴格控制session過時方法

嚴格控制session過時方法

Session控制類

<?php
/**
 * Session控制類
 */
class Session{

    /**
     * 設置session
     * @param String $name   session name
     * @param Mixed  $data   session data
     * @param Int    $expire 超時時間(秒)
     */
    public static function set($name, $data, $expire=600){
        $session_data = array();
        $session_data['data'] = $data;
        $session_data['expire'] = time()+$expire;
        $_SESSION[$name] = $session_data;
    }

    /**
     * 讀取session
     * @param  String $name  session name
     * @return Mixed
     */
    public static function get($name){
        if(isset($_SESSION[$name])){
            if($_SESSION[$name]['expire']>time()){
                return $_SESSION[$name]['data'];
            }else{
                self::clear($name);
            }
        }
        return false;
    }

    /**
     * 清除session
     * @param  String  $name  session name
     */
    private static function clear($name){
        unset($_SESSION[$name]);
    }

}
?>

使用方法

<?php
session_start();

$data = '123456';
session::set('test', $data, 10);
echo session::get('test'); // 未過時,輸出
sleep(10);
echo session::get('test'); // 已過時
?>
相關文章
相關標籤/搜索