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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
php面向对象全攻略 (七) 继承性
Sep 30 PHP
php allow_url_include的应用和解释
Apr 22 PHP
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
Nov 02 PHP
PHP spl_autoload_register实现自动加载研究
Dec 06 PHP
解析PHP高效率写法(详解原因)
Jun 20 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
对PHP语言认识上需要避免的10大误区
Jun 12 PHP
php cookie工作原理与实例详解
Jul 18 PHP
php实现登陆模块功能示例
Oct 20 PHP
PHP第三方登录―QQ登录实现方法
Feb 06 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 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
桌面中心(一)创建数据库
2006/10/09 PHP
php连接mssql数据库的几种方法
2013/02/21 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
js弹出模式对话框,并接收回传值的方法
2013/03/12 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
JavaScript下的时间格式处理函数Date.prototype.format
2016/01/27 Javascript
在页面中输出当前客户端时间javascript实例代码
2016/03/02 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
js querySelector() 使用方法
2016/12/21 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
2017/04/24 Javascript
input type=file 选择图片并且实现预览效果的实例
2017/10/26 Javascript
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
JavaScript实现表单验证功能
2020/12/09 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
介绍Python中几个常用的类方法
2015/04/08 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
python 美化输出信息的实例
2018/10/15 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
python爬取代理ip的示例
2020/12/18 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
物理教学随笔感言
2014/02/22 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
人事任命通知
2015/04/20 职场文书
全国助残日活动总结
2015/05/11 职场文书
天气温馨提示语
2015/07/14 职场文书
大学生十八大感想
2015/08/11 职场文书
感恩父母主题班会
2015/08/12 职场文书
2016七夕情人节感言
2015/12/09 职场文书
CSS3点击按钮圆形进度打钩效果的实现代码
2021/03/30 HTML / CSS
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle