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生成带有雪花背景的验证码
Oct 09 PHP
BBS(php & mysql)完整版(五)
Oct 09 PHP
PHP文件注释标记及规范小结
Apr 01 PHP
分享一下贝贝成长进度的php代码
Sep 14 PHP
php解析html类库simple_html_dom(详细介绍)
Jul 05 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
Oct 16 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
php session 写入数据库
Feb 13 PHP
PHP单例模式实例分析【防继承,防克隆操作】
May 22 PHP
Laravel+Intervention实现上传图片功能示例
Jul 09 PHP
使用laravel指定日志文件记录任意日志
Oct 17 PHP
PHP网页缓存技术优点及代码实例
Jul 29 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 日期时间函数的高级应用技巧
2009/10/10 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
PHP中使用数组实现堆栈数据结构的代码
2012/02/05 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
isArray()函数(JavaScript中对象类型判断的几种方法)
2009/11/26 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
node.js中的require使用详解
2014/12/15 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
javascript 中Cookie读、写与删除操作
2017/03/29 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
Vue动态面包屑功能的实现方法
2019/07/01 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
python实现下载指定网址所有图片的方法
2015/08/08 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
servlet面试题
2012/08/20 面试题
优秀士兵先进事迹
2014/02/06 职场文书
硕士学位申请报告
2015/05/15 职场文书
律政俏佳人观后感
2015/06/09 职场文书
小学校长开学致辞
2015/07/29 职场文书
全国劳模先进事迹材料(2016精选版)
2016/02/25 职场文书
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
使用CSS连接数据库的方式
2022/02/28 HTML / CSS
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js
Spring Boot 实现 WebSocket
2022/04/30 Java/Android
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android