php中Y2K38的漏洞解决方法实例分析


Posted in PHP onSeptember 22, 2014

本文实例分析了php中Y2K38漏洞的解决方法。分享给大家供大家参考。具体分析如下:

Y2K38,又称 Unix Millennium Bug, 此漏洞将会影响到所有 32 位系统下用 UNIX 时间戳整数来记录时间的 PHP,及其它编程语言。

一个整型的变量所能保存的最大时间为 2038 年 1 月 19 日 03:14:07。超过这个时间后,整型数值将会溢出。

从 1970 年 01 月 01 日开始,到世界标准时 2038 年 01 月 19 日星期二凌晨 03:14:07 超过 2^31 ? 1。2^31 ? 1 就是 0x7FFFFFFF,相信很多编程员都看过,在 32 位系统里,这表示最大的有符号整数。如果用它来表示秒数,大概相当于 68.1 年,从 1970 年到 2038 年刚好是这个数。

32位系统下显示2038年1月19日03:14:07以后的日期将会溢出。

<?php
$date = '2040-01-01 12:00:00';
echo strtotime($date);           // 空 溢出
echo date('Y-m-d H:i:s', strtotime($date)); // 1970-01-01 00:00:00
?>

那么64 位系统会受到影响吗?

理论上不会,强烈建议进行一下测试。64 位系统下可以保存的日期最远日期是现在宇宙年龄的 21 倍~ 292 亿年。

在32位机器上,可以使用DateTime类来解决这个问题。(PHP5.2开始引入这个类,并在5.3版本中扩展了一些方法)

代码如下:

<?php
$date = '2040-01-01 12:00:00';
$dt = new DateTime($date);
echo $dt->format('U');      // 2209032000
echo $dt->format('Y-m-d H:i:s'); // 2040-01-01 12:00:00 
?>

希望本文所述对大家PHP程序设计的学习有所帮助。

PHP 相关文章推荐
用PHP实现小型站点广告管理
Oct 09 PHP
input file获得文件根目录简单实现
Apr 26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
Jun 30 PHP
js+php实现静态页面实时调用用户登陆状态的方法
Jan 04 PHP
PHP遍历XML文档所有节点的方法
Mar 12 PHP
php实现上传图片文件代码
Jul 19 PHP
thinkPHP查询方式小结
Jan 09 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
程序员的表白神器“520”大声喊出来
May 20 PHP
php实现文件预览功能
May 23 PHP
PHP关于foreach复制知识点总结
Jan 28 PHP
php操作redis常见方法示例【key与value操作】
Apr 14 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 #PHP
PHP中常用的输出函数总结
Sep 22 #PHP
C#静态方法与非静态方法实例分析
Sep 22 #PHP
php操作csv文件代码实例汇总
Sep 22 #PHP
PHP提示Cannot modify header information - headers already sent by解决方法
Sep 22 #PHP
php过滤HTML标签、属性等正则表达式汇总
Sep 22 #PHP
PHP中exec与system用法区别分析
Sep 22 #PHP
You might like
PHP日期处理函数 整型日期格式
2011/01/12 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
ThinkPHP惯例配置文件详解
2014/07/14 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
jQuery表单获取和失去焦点输入框提示效果的实例代码
2013/08/01 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
深入理解jquery自定义动画animate()
2016/05/24 Javascript
javascript经典特效分享 手风琴、轮播图、图片滑动
2016/09/14 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
对angularJs中controller控制器scope父子集作用域的实例讲解
2018/10/08 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
python实现在windows下操作word的方法
2015/04/28 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
python使用requests.session模拟登录
2019/08/09 Python
Python项目跨域问题解决方案
2020/06/22 Python
HEMA法国:荷兰原创设计
2019/02/21 全球购物
应聘自荐信
2013/12/14 职场文书
幼儿园教师请假制度
2014/01/16 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
培训讲师岗位职责
2014/04/13 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
党支部反对四风思想汇报
2014/10/10 职场文书