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自动适应范围的分页代码
Aug 05 PHP
PHP UTF8编码内的繁简转换类
Jul 20 PHP
PHP高级对象构建 工厂模式的使用
Feb 05 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
PHP对表单提交特殊字符的过滤和处理方法汇总
Feb 18 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
Smarty中调用FCKeditor的方法
Oct 27 PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
PHP的文件操作与算法实现的面试题示例
Aug 10 PHP
php 多文件上传的实现实例
Oct 23 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
Jan 07 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
基于initPHP的框架介绍
2013/04/18 PHP
基于PHP静态类的原罪详解
2013/05/06 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
详解PHP中的PDO类
2015/07/06 PHP
PHP使用fopen与file_get_contents读取文件实例分享
2016/03/04 PHP
PHP PDOStatement::fetchColumn讲解
2019/01/31 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
javascript基础知识
2016/06/07 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
详解微信小程序支付流程与梳理
2019/07/16 Javascript
JS实现滚动条触底加载更多
2019/09/19 Javascript
Windows下安装 node 的版本控制工具 nvm
2020/02/06 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Django2.1.3 中间件使用详解
2018/11/26 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
使用 Python 写一个简易的抽奖程序
2019/12/08 Python
OpenCV python sklearn随机超参数搜索的实现
2020/01/17 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
英国最大的化装舞会服装网站:Fancydress.com
2017/08/15 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
大学三年计划书范文
2014/04/30 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
社区公民道德宣传日活动总结
2015/03/23 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫