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 相关文章推荐
How do I change MySQL timezone?
Mar 26 PHP
php 魔术函数使用说明
Feb 21 PHP
基于php缓存的详解
May 15 PHP
php实现指定字符串中查找子字符串的方法
Mar 17 PHP
PHP 实现的将图片转换为TXT
Oct 21 PHP
php+ajax无刷新分页实例详解
Dec 07 PHP
编写PHP脚本使WordPress的主题支持Widget侧边栏
Dec 14 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
php5与php7的区别点总结
Oct 11 PHP
在Laravel 中实现是否关注的示例
Oct 22 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
Apr 06 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
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
php中文字符串截取多种方法汇总
2016/10/06 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
基于laravel缓冲cache的用法详解
2019/10/23 PHP
一些常用的JS功能函数(2009-06-04更新)
2009/06/04 Javascript
jQuery异步验证用户名是否存在示例代码
2014/05/21 Javascript
node.js中的fs.utimesSync方法使用说明
2014/12/15 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
Angular7.2.7路由使用初体验
2019/03/01 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
微信小程序实现定位及到指定位置导航的示例代码
2019/08/20 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
python使用mysql的两种使用方式
2018/03/07 Python
python实现AES加密解密
2019/03/28 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
学python安装的软件总结
2019/10/12 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
html5 拖拽及用 js 实现拖拽功能的示例代码
2020/10/23 HTML / CSS
凯特方迪化妆品官网:Kat Von D Beauty
2016/11/15 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
支部书记四风对照材料
2014/08/28 职场文书
教师业务学习材料
2014/12/16 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
无工作证明怎么写
2015/06/15 职场文书
Python字符串对齐方法使用(ljust()、rjust()和center())
2021/04/26 Python