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初学者们头痛的十四个问题
Jan 15 PHP
PHP mb_convert_encoding 获取字符串编码类型实现代码
Apr 26 PHP
PHP下判断网址是否有效的代码
Oct 08 PHP
php 伪造本地文件包含漏洞的代码
Nov 03 PHP
PHP判断图片格式的七种方法小结
Jun 03 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
CI(CodeIgniter)框架介绍
Jun 09 PHP
php+ajax导入大数据时产生的问题处理
Jun 11 PHP
php操作xml入门之xml基本介绍及xml标签元素
Jan 23 PHP
php中return的用法实例分析
Feb 28 PHP
使用Zttp简化Guzzle 调用
Jul 02 PHP
thinkphp3.2同时连接两个数据库的简单方法
Aug 13 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
一个程序下载的管理程序(一)
2006/10/09 PHP
杏林同学录(七)
2006/10/09 PHP
PHP读取网页文件内容的实现代码(fopen,curl等)
2011/06/23 PHP
php继承中方法重载(覆盖)的应用场合
2015/02/09 PHP
php实现的mongodb操作类实例
2015/04/03 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
这段js代码得节约你多少时间
2011/12/20 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
Node.js读写文件之批量替换图片的实现方法
2016/09/07 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
详解如何在webpack中做预渲染降低首屏空白时间
2018/08/22 Javascript
vue实现记事本功能
2019/06/26 Javascript
js实现无刷新监听URL的变化示例代码详解
2020/06/03 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
python实现的文件夹清理程序分享
2014/11/22 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python实现数据图表
2017/07/29 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
英国手机零售商:Metrofone
2019/03/18 全球购物
Java面向对象面试题
2016/12/26 面试题
高一政治教学反思
2014/01/28 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
承诺书模板
2014/08/30 职场文书
志愿者爱心公益活动策划方案
2014/09/15 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
2014年法院工作总结
2014/11/24 职场文书
关于python中模块和重载的问题
2021/11/02 Python
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
教你如何用cmd快速登录服务器
2022/06/10 Servers