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 相关文章推荐
风格模板初级不完全修改教程
Oct 09 PHP
文章推荐系统(三)
Oct 09 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
Sep 19 PHP
限制ckeditor上传图片文件大小的方法
Nov 15 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
ThinkPHP令牌验证实例
Jun 18 PHP
用PHP代码给图片加水印
Jul 01 PHP
使用PHP编写发红包程序
Jul 22 PHP
ThinkPHP中使用Ueditor富文本编辑器
Sep 02 PHP
PHP中的函数声明与使用详解
May 27 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 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项目的方法
2006/10/09 PHP
php xfocus防注入资料
2008/04/27 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
Apply an AutoFormat to an Excel Spreadsheet
2007/06/12 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
2016/06/12 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
windows下安装python paramiko模块的代码
2013/02/10 Python
python 上下文管理器使用方法小结
2017/10/10 Python
Python实现自动发送邮件功能
2021/03/02 Python
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
django项目搭建与Session使用详解
2018/10/10 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
python实现二维插值的三维显示
2018/12/17 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
幼师自我鉴定范文
2013/10/01 职场文书
经济管理毕业生求职信
2014/03/15 职场文书
团队队名口号大全
2014/06/06 职场文书
关键在于落实心得体会
2014/09/03 职场文书
大型主题婚礼活动策划方案
2014/09/15 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
干货:我将这样书写我的演讲稿!
2019/05/09 职场文书
高端收音机+蓝牙音箱,JBL TUNER FM带收音蓝牙音箱评测
2021/04/24 无线电
学会Python数据可视化必须尝试这7个库
2021/06/16 Python
使用Ajax实现无刷新上传文件
2022/04/12 Javascript