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 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
swfupload 多文件上传实现代码
Aug 27 PHP
PHP性能优化 产生高度优化代码
Jul 22 PHP
typecho插件编写教程(六):调用接口
May 28 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
PHP实现全角字符转为半角方法汇总
Jul 09 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
Dec 25 PHP
PHP消息队列用法实例分析
Feb 12 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
Mar 28 PHP
PHP实现对图片的反色处理功能【测试可用】
Feb 01 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
PHP7 错误处理机制修改
Mar 09 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中的(伪)多线程与多进程
2013/07/01 PHP
CodeIgniter错误mysql_connect(): No such file or directory解决方法
2014/09/06 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
window.showModalDialog参数传递中含有特殊字符的处理方法
2013/06/06 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
jquery实现网页定位导航
2016/08/23 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
Vue + element 实现多选框组并保存已选id集合的示例代码
2020/06/03 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
paramiko模块安装和使用(远程登录服务器)
2014/01/27 Python
Python简单调用MySQL存储过程并获得返回值的方法
2015/07/20 Python
Django自定义分页与bootstrap分页结合
2021/02/22 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
python 调用有道api接口的方法
2019/01/03 Python
Python实现的对一个数进行因式分解操作示例
2019/06/27 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
Python3 assert断言实现原理解析
2020/03/02 Python
解决Python 异常TypeError: cannot concatenate 'str' and 'int' objects
2020/04/08 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
HTML5新增元素如何兼容旧浏览器有哪些方法
2014/05/09 HTML / CSS
财务经理岗位职责
2013/11/09 职场文书
党员公开承诺书范文
2014/03/25 职场文书
共产党员公开承诺书
2014/03/25 职场文书
中韩经贸翻译专业大学生职业生涯规划范文
2014/09/18 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle