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 相关文章推荐
PHP4之真OO
Oct 09 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
Aug 05 PHP
php 文件上传系统手记
Oct 26 PHP
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
PHP删除非空目录的函数代码小结
Feb 28 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
Feb 12 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
php使用parse_str实现查询字符串解析到变量中的方法
Feb 17 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 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
漫威DC即将合作联动,而双方早已经秘密开始
2020/04/09 欧美动漫
使用php4加速网络传输
2006/10/09 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
js实现全屏漂浮广告移入光标停止移动
2013/12/02 Javascript
JS 使用for循环遍历子节点查找元素
2014/09/06 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
ES6中参数的默认值语法介绍
2017/05/03 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
vue-cli 自定义指令directive 添加验证滑块示例
2017/10/19 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
详解Immutable及 React 中实践
2018/03/01 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Python解析json时提示“string indices must be integers”问题解决方法
2019/07/31 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
浅谈keras 模型用于预测时的注意事项
2020/06/27 Python
python中如何设置代码自动提示
2020/07/15 Python
CSS3打造磨砂玻璃背景效果
2016/09/28 HTML / CSS
html5 div布局与table布局详解
2016/11/16 HTML / CSS
小学教师的个人自我鉴定
2013/10/24 职场文书
暑期社会实践方案
2014/02/05 职场文书
学校督导评估方案
2014/06/10 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang
python unittest单元测试的步骤分析
2021/08/02 Python
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL