php实现cookie加密的方法


Posted in PHP onMarch 10, 2015

本文实例讲述了php实现cookie加密的方法。分享给大家供大家参考。具体实现方法如下:

<?php

class Cookie

{

    /**

     * 解密已经加密了的cookie

     * 

     * @param string $encryptedText

     * @return string

     */

    private static function _decrypt($encryptedText)

    {

        $key = Config::get('secret_key');

        $cryptText = base64_decode($encryptedText);

        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

        $decryptText = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $cryptText, MCRYPT_MODE_ECB, $iv);

        return trim($decryptText);

    }

    /**

     * 加密cookie

     *

     * @param string $plainText

     * @return string

     */

    private static function _encrypt($plainText)

    {

        $key = Config::get('secret_key');

        $ivSize = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);

        $iv = mcrypt_create_iv($ivSize, MCRYPT_RAND);

        $encryptText = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $plainText, MCRYPT_MODE_ECB, $iv);

        return trim(base64_encode($encryptText));

    }

    /**

     * 删除cookie

     * 

     * @param array $args

     * @return boolean

     */

    public static function del($args)

    {

        $name = $args['name'];

        $domain = isset($args['domain']) ? $args['domain'] : null;

        return isset($_COOKIE[$name]) ? setcookie($name, '', time() - 86400, '/', $domain) : true;

    }

    /**

     * 得到指定cookie的值

     * 

     * @param string $name

     */

    public static function get($name)

    {

        return isset($_COOKIE[$name]) ? self::_decrypt($_COOKIE[$name]) : null;

    }

    /**

     * 设置cookie

     *

     * @param array $args

     * @return boolean

     */

    public static function set($args)

    {

        $name = $args['name'];

        $value= self::_encrypt($args['value']);

        $expire = isset($args['expire']) ? $args['expire'] : null;

        $path = isset($args['path']) ? $args['path'] : '/';

        $domain = isset($args['domain']) ? $args['domain'] : null;

        $secure = isset($args['secure']) ? $args['secure'] : 0;

        return setcookie($name, $value, $expire, $path, $domain, $secure);

    }

}

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
缓存技术详谈―php
Dec 14 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
如何让thinkphp在模型中自动完成session赋值小教程
Sep 05 PHP
phpmyadmin中禁止外网使用的方法
Nov 04 PHP
跨浏览器PHP下载文件名中的中文乱码问题解决方法
Mar 05 PHP
WordPress用户登录框密码的隐藏与部分显示技巧
Dec 31 PHP
Joomla开启SEF的方法
May 04 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
PHP 接入微信扫码支付总结(总结篇)
Nov 03 PHP
php文件上传 你真的掌握了吗
Nov 28 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 PHP
php定期拉取数据对比方法实例
Sep 22 PHP
php遍历目录方法小结
Mar 10 #PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 #PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 #PHP
php获取本周开始日期和结束日期的方法
Mar 09 #PHP
php数组转成json格式的方法
Mar 09 #PHP
php实现将数组转换为XML的方法
Mar 09 #PHP
php返回字符串中所有单词的方法
Mar 09 #PHP
You might like
PHP中for循环语句的几种变型
2006/11/26 PHP
dedecms采集中可以过滤多行代码的正则表达式
2007/03/17 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
php编程每天必学之表单验证
2016/03/01 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
PHP实现的XXTEA加密解密算法示例
2018/08/28 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
jQuery对Select的操作大集合(收藏)
2013/12/28 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
2015/10/04 Javascript
JavaScript创建对象的方式小结(4种方式)
2015/12/17 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
浅谈jquery中的each方法$.each、this.each、$.fn.each
2016/06/23 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
详解vue-router 初始化时做了什么
2018/06/11 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
web.py获取上传文件名的正确方法
2014/08/26 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Python Flask-web表单使用详解
2017/11/18 Python
Python设计模式之模板方法模式实例详解
2019/01/17 Python
python安装requests库的实例代码
2019/06/25 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python实现查找数据库最接近的数据
2020/06/08 Python
python导入库的具体方法
2020/06/18 Python
python怎么删除缓存文件
2020/07/19 Python
python编写扎金花小程序的实例代码
2021/02/23 Python
大学生志愿者感言
2014/01/15 职场文书
遗失说明具结保证书
2015/02/26 职场文书
暑期社会实践个人总结
2015/03/06 职场文书
金砖之国观后感
2015/06/11 职场文书
Oracle 数据仓库ETL技术之多表插入语句的示例详解
2021/04/12 Oracle
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python