Phalcon Cookies不加密和加密使用方式及注意事项

本文介绍了如何在Phalcon框架中使用非加密和加密的方式管理Cookie。包括非加密方式的快速入门,以及加密方式的详细配置步骤,特别是针对加密方式下获取数据时遇到的空白字符问题给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

步骤 1

在全局容器中加入Cookie:

    $di->set('cookies', function () {
        $cookies = new \Phalcon\Http\Response\Cookies();
        $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 \Phalcon\Http\Response\Cookies();
//        $cookies->useEncryption(false);
        return $cookies;
    });

    $di->set('crypt', function (){
        $crypt = new Phalcon\Crypt();
        $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());

结果

Cookie加密结果示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值