thinkphp实现ecshopsession初始化

2012-10-29 23:49 来源:www.chinab4c.com 作者:ecshop专家

    thinkphp实现ecshopsession初始化,我们一直在研究这个问题。如果你想实现ecshop的init.php里面的session初始化,我们就必须考虑到,每个页面可以方便的包含这个代码。但是在thinkphp中,包含公共的配置文件是在声明session之前。所以我们在config.php里面初始化,是的不到我们要的效果的。

    如果想在thinkphp加载的时候,就初始化类似ecshop的session要怎么做。

      if (empty($_SESSION['user_id']))
    {
        if ($user->get_cookie())
        {
            /* 如果会员已经登录并且还没有获得会员的帐户余额、积分以及优惠券 */
            if ($_SESSION['user_id'] > 0)
            {
                update_user_info();
            }
        }
        else
        {
            $_SESSION['user_id']     = 0;
            $_SESSION['user_name']   = '';
            $_SESSION['email']       = '';
            $_SESSION['user_rank']   = 0;
            $_SESSION['discount']    = 1.00;
            if (!isset($_SESSION['login_fail']))
            {
                $_SESSION['login_fail'] = 0;
            }
        }
    }
    如果认真研究thinkphp我们可以不难发现。在Action.class.php里面。

     public function __construct() {
        tag('action_begin');
        $uid = session('user_id');
        if (!$uid)
        {
           
             session('user_id',  '');
             session('user_name','');
             session('email',    '');
             session('user_rank',0);
             session('discount',1.00);
             session('login_fail',0);
        }
        //实例化视图类
        $this->view       = Think::instance('View');
        //控制器初始化
        if(method_exists($this,'_initialize'))
            $this->_initialize();
    }

    我们可以考虑加入类似的代码。就能在thinkphp框架的原形上面,增加实现对session的初始化。当然了,ecshop的session是写在数据库的,而thinkphp的session他也自己可以实现数据库的保存。有关ecshop session原理参考本文http://www.chinab4c.com/html/shangchengchengxu/ecshopchangjianwenti/2011/1021/902.html

    来源:http://www.chinab4c.com