PHP输出英文时间日期的安全方法(RFC 1123格式)


Posted in PHP onJune 13, 2014

最近项目中要为一个rest服务写客户端,其中的签名校验需要在HTTP Header中生成一个RFC 1123格式的Date。

这个问题比较好解决,简单翻阅了PHP文档,使用gmstrftime这个函数就能解决。

string gmstrftime ( string $format [, int $timestamp = time() ] )

调用的代码如下:
echo gmstrftime("%a, %d %b %Y %T %Z",time());
//输出:Tue, 01 Apr 2014 16:16:07 GMT

调试过程中发现,在另外一台电脑上,输出并不像预期中的结果,然后产生了中文:
二, 01  4 2014 16:20:02 GMT

继续翻阅文档,发现文档的注释中有说明,这个函数的结果受setlocale结果的影响,既收当前系统默认的语言的影响。使用下面的命令可以查看当前系统已安装的语言:
locale -a

那么根据刚刚分析的结果,将setlocale强制指定为英语就没问题了,代码如下:
setlocale(LC_TIME, 'en_US');
echo gmstrftime("%a, %d %b %Y %T %Z",time());

至此文章应该已经结束了,不过可惜的是测试用的Ubuntu机器上,因为是Live CD版,恰好没有en_US这个语言,但是有一个en_US.UTF-8。这个时候心理打鼓,这种做法似乎不太安全,我没办法确定运行代码的客户机上,到底有en_US还是有en_US.UTF-8。还好看到文档里的一段comments,可以用gmdate来代替,该函数不受setlocale结果的影响:
gmdate('D, d M Y H:i:s') . ' GMT';

Case closed~需求虽小,要写好并不容易,以后还要多加努力。
PHP 相关文章推荐
php横向重复区域显示二法
Sep 25 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
php代码收集表单内容并写入文件的代码
Jan 29 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php使用str_replace实现输入框回车替换br的方法
Nov 24 PHP
PHP合并数组+号和array_merge的区别
Jun 25 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
PHP中的数组处理函数实例总结
Jan 09 PHP
PHP入门教程之面向对象基本概念实例分析
Sep 11 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
CI框架附属类用法分析
Dec 26 PHP
PHP中多维数组的foreach遍历示例
Jun 13 #PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
Jun 13 #PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 #PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 #PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 #PHP
CodeIgniter框架过滤HTML危险代码
Jun 12 #PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 #PHP
You might like
php之Memcache学习笔记
2013/06/17 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
jquery中ajax学习笔记一
2011/10/16 Javascript
jQuery操作Select选择的Text和Value(获取/设置/添加/删除)
2013/03/06 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
JavaScript实现多球运动效果
2020/09/07 Javascript
基于python中的TCP及UDP(详解)
2017/11/06 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python之信息加密题目详解
2019/06/26 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
如何基于Python制作有道翻译小工具
2019/12/16 Python
Pytorch Tensor 输出为txt和mat格式方式
2020/01/03 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
自动化专业毕业生自荐信
2013/11/01 职场文书
军训的自我鉴定
2013/12/10 职场文书
企业宗旨标语
2014/06/10 职场文书
数学教研活动总结
2014/07/02 职场文书
KTV门卫岗位职责
2014/10/09 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android