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 Class 文章
Apr 04 PHP
利用php+mysql来做一个功能强大的在线计算器
Oct 12 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
Jul 01 PHP
php实现可用于mysql,mssql,pg数据库操作类
Dec 13 PHP
php使用gettimeofday函数返回当前时间并存放在关联数组里
Mar 19 PHP
再谈PHP中单双引号的区别详解
Jun 12 PHP
PHP实现的方程求解示例分析
Nov 11 PHP
PHP实现的简单在线计算器功能示例
Aug 02 PHP
PHP实现的各类hash算法长度及性能测试实例
Aug 27 PHP
详解php命令注入攻击
Apr 06 PHP
php数值计算num类简单操作示例
May 15 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
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
PHP如何抛出异常处理错误
2011/03/02 PHP
PHPMailer的主要功能特点和简单使用说明
2014/02/17 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
2014/08/25 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
帝国cms目录结构分享
2015/07/06 PHP
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
javascript原型链继承用法实例分析
2015/01/28 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
AngularJS过滤器filter用法实例分析
2016/11/04 Javascript
详解Vue2 无限级分类(添加,删除,修改)
2017/03/07 Javascript
vue.js 实现点击展开收起动画效果
2018/07/07 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
微信小程序如何连接Java后台
2019/08/08 Javascript
Python编程django实现同一个ip十分钟内只能注册一次
2017/11/03 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python实现连连看辅助(图像识别)
2020/03/25 Python
Kears+Opencv实现简单人脸识别
2019/08/28 Python
django框架中ajax的使用及避开CSRF 验证的方式详解
2019/12/11 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
Python reduce函数作用及实例解析
2020/05/08 Python
Python实现壁纸下载与轮换
2020/10/19 Python
澳大利亚最受欢迎的美发用品目的地:AMR
2019/08/28 全球购物
大学生毕业自我鉴定
2013/11/06 职场文书
优秀实习自我鉴定
2013/12/04 职场文书
护理专业自荐信范文
2014/02/26 职场文书
人力资源部岗位职责
2015/02/11 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
军训阅兵新闻稿
2015/07/17 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js