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 08 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
PHP反向代理类代码
Aug 15 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
Aug 19 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
php跨服务器访问方法小结
May 12 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
实例化php类时传参的方法分析
Jun 05 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
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
多重?l件?合查?(一)
2006/10/09 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
phpStudy vscode 搭建debug调试的教程详解
2020/07/28 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
2014/06/23 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
jQuery仿天猫实现超炫的加入购物车
2015/05/04 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
详解如何用typescript开发koa2的二三事
2018/11/13 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
[38:23]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第一场
2014/05/24 DOTA
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
Python 处理数据的实例详解
2017/08/10 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
python实现简单神经网络算法
2018/03/10 Python
对python周期性定时器的示例详解
2019/02/19 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
python批量修改交换机密码的示例
2020/09/22 Python
Django实现随机图形验证码的示例
2020/10/15 Python
一款基于css3的动画按钮代码教程
2014/11/23 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
社区学雷锋活动策划方案
2014/01/30 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
水浒传读书笔记
2015/06/25 职场文书
草房子读书笔记
2015/06/29 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers