www.gusucode.com > CPF开源的PHP SNS问答社区 v0.7源码程序 > code/src/framework/src/Auth/SessionAuth.php

    <?php
/**
 * Cross - a micro PHP 5 framework
 *
 * @link        http://www.crossphp.com
 * @license     MIT License
 */
namespace Cross\Auth;

use Cross\I\HttpAuthInterface;

/**
 * @author wonli <wonli@live.com>
 * Class SessionAuth
 * @package Cross\Auth
 */
class SessionAuth implements HttpAuthInterface
{
    /**
     * 加解密默认key
     *
     * @var string
     */
    protected $key;

    function __construct($key = '')
    {
        if ($key) {
            $this->key = $key;
        }

        if (!isset($_SESSION)) {
            session_start();
        }
    }

    /**
     * 设置session的值
     *
     * @param string $key
     * @param string|array $value
     * @param int $expire
     * @return bool|mixed
     */
    function set($key, $value, $expire = 0)
    {
        if (is_array($value)) {
            $value = json_encode($value);
        }

        $_SESSION[$key] = $value;
        return true;
    }

    /**
     * 获取session的值
     *
     * @param string $key
     * @param bool $deCode
     * @return bool|mixed
     */
    function get($key, $deCode = false)
    {
        if (false !== strpos($key, ':') && $deCode) {
            list($key, $arrKey) = explode(':', $key);
        }

        if (!isset($_SESSION[$key])) {
            return false;
        }

        $result = $_SESSION[$key];
        if ($deCode) {
            $result = json_decode($result, true);
            if (isset($arrKey) && isset($result[$arrKey])) {
                return $result[$arrKey];
            }
        }

        return $result;
    }
}