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 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php延迟静态绑定实例分析
Feb 08 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
php实现encode64编码类实例
Mar 24 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
Thinkphp微信公众号支付接口
Aug 04 PHP
PHP页面输出搜索后跳转下一页的处理方法
Sep 30 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
Laravel如何使用Redis共享Session
Feb 23 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上传图片、删除图片实现代码
2010/05/12 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
jquery高效反选具体实现
2013/05/05 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
JavaScript加入收藏夹功能(兼容IE、firefox、chrome)
2014/05/05 Javascript
jQuery对val和atrr("value")赋值的区别介绍
2014/09/26 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
JS基于正则表达式实现的密码强度验证功能示例
2017/09/21 Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
2018/01/31 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
js里面的变量范围分享
2020/07/18 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
一些常用的Python爬虫技巧汇总
2016/09/28 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Python求解正态分布置信区间教程
2019/11/20 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
python实现IOU计算案例
2020/04/12 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
css3中检验表单的required,focus,valid和invalid样式
2014/02/21 HTML / CSS
初三物理教学反思
2014/01/21 职场文书
小学英语课后反思
2014/04/26 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
寻找成龙观后感
2015/06/12 职场文书
小学体育跳绳课教学反思
2016/02/16 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang
MySql按时,天,周,月进行数据统计
2022/08/14 MySQL