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+DBM的同学录程序(4)
Oct 09 PHP
php实现utf-8和GB2312编码相互转换函数代码
Feb 07 PHP
PHP实现删除非站内外部链接实例代码
Jun 17 PHP
PHP连接和操作MySQL数据库基础教程
Sep 29 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
PHP中in_array函数使用的问题与解决办法
Sep 11 PHP
PHP XML和数组互相转换详解
Oct 26 PHP
PHP常用函数总结(180多个)
Dec 25 PHP
PHP最常用的正则表达式
Feb 13 PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
PHP之多条件混合筛选功能的实现方法
Oct 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实现简单数字分页效果
2015/07/26 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
JavaScript格式化日期时间的方法和自定义格式化函数示例
2014/04/04 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
Bootstrap Table 搜索框和查询功能
2017/11/30 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
Python中的进程分支fork和exec详解
2015/04/11 Python
Python工程师面试必备25条知识点
2018/01/17 Python
Python WEB应用部署的实现方法
2019/01/02 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
Python中BeautifulSoup通过查找Id获取元素信息
2020/12/07 Python
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
网站编辑求职信
2013/10/17 职场文书
全神贯注教学反思
2014/02/03 职场文书
学习交流会主持词
2014/04/01 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
实施意见格式范本
2015/06/05 职场文书
在职证明书模板
2015/06/15 职场文书
任长霞观后感
2015/06/16 职场文书
2016年寒假家长评语
2015/10/10 职场文书
房屋转让协议书(标准范本)
2016/03/21 职场文书
七年级作文之冬景
2019/11/07 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL
Django中celery的使用项目实例
2022/07/07 Python