zoukankan      html  css  js  c++  java
  • pahlcon:cookies设置

    非加密方式(简单,但不推荐)

    步骤 1

    在全局容器中加入Cookie:

     $di->set('cookies', function () {
            $cookies = new PhalconHttpResponseCookies();
            $cookies->useEncryption(false); //默认使用加密方式,但这里我们刚开始使用非加密方式
            return $cookies;
        });
    

      

    步骤 2

    首先,需要在用户登陆时根据用户的输入信息生成cookies,然后存储在cookies中,并设置好失效的时间。 
    如下所示:

    //设备变量name=xxx,有效时间为未来一周
    $this->cookies->set('name', 'xxx', time() + 7 * 86400);
    $this->cookies->set('passwd', 'xxx', time() + 7 * 86400);
    

      

    步骤 3

    通常Phalcon的项目中会使用ACL进行用户的访问控制,而要实现用户在任何时间打开浏览器直接访问,就需要在ACL控制逻辑中获取Cookie中的值进行判断。

    //获得name
    $this->cookies->get('name')->getValue();
    $this->cookies->get('passwd')->getValue();
    

      



    加密方式(推荐)

    加密方式是默认的Cookie方式,但在使用前必须满足以下条件:

    1. 在全局容器中加入crypt并定义key,即:

      $di->set('cookies', function () {
            $cookies = new PhalconHttpResponseCookies();
    //        $cookies->useEncryption(false);
            return $cookies;
        });
    
        $di->set('crypt', function (){
            $crypt = new PhalconCrypt();
            $crypt->setKey('xxxxxx'); //salt
            return $crypt;
        });
    

      

    2. 由于crypt依赖于php中的mcrypt扩展,所以必须安装

    3. 使用加密方式后,Phalcon中有一个bug存在,即在以下代码中获取数据时会有空白字符:

    //获得name
    $this->cookies->get('name')->getValue();
    $this->cookies->get('passwd')->getValue();
    

      

    必须改成:

    trim($this->cookies->get('name')->getValue());
    trim($this->cookies->get('passwd')->getValue());
    

      

  • 相关阅读:
    大数据时代-散记
    MongoDB命令行操作
    easyui获取日期datebox中的值
    linux文件系统学习
    Linux中部署JAVA程序
    百度Clouda的初步探索
    global.asax?app.config?webconfig??
    Android adb install INSTALL_FAILED_DEXOPT
    Android SharedPreferences 权限设置
    vim 支持 markdown 语法
  • 原文地址:https://www.cnblogs.com/achengmu/p/6285398.html
Copyright © 2011-2022 走看看