php - string & int 在 strtotime 中无法正常工作
问题描述
在这种情况下$interval
,我作为整数给出意味着它工作正常返回 true,假设$interval
我作为字符串给出意味着不能正常工作返回 false。
情景 1
<?php
$restDate = "2018-11-21 11:58:55";
$difference = strtotime(date('Y-m-d H:i:s')) - strtotime($restDate);
$interval = 60 * 60 * 24 * 7;
if($difference <= $interval){
$data['passwordResetStatus'] = true;
}else{
$data['passwordResetStatus'] = false;
}
var_dump($data);
?>
输出
array(1) { ["passwordResetStatus"]=> bool(true) }
情景 2
<?php
$restDate = "2018-11-21 11:58:55";
$difference = strtotime(date('Y-m-d H:i:s')) - strtotime($restDate);
$interval = "60 * 60 * 24 * 7"; // changes from here
if($difference <= $interval){
$data['passwordResetStatus'] = true;
}else{
$data['passwordResetStatus'] = false;
}
var_dump($data);
?>
输出
array(1) { ["passwordResetStatus"]=> bool(false) }
我的预期
场景2也应该返回array(1) { ["passwordResetStatus"]=> bool(true) }
解决方案
不是让用户输入“60*60*24*7”,用户就不能输入“1周”吗?
如果是,比 eval 更安全的方法是使用 strtotime 来计算时间。
echo strtotime("1 week")-time();
// Same as 60*60*24*7
推荐阅读
- javascript - 渲染中的条件语句
- c# - 如何将多个曲线数组组合成一个曲线数组
- html - 即使在滚动时,使用导航栏固定顶部并将其下方的容器固定在其底部?
- python - 如何在 python 中加入字符串以获得多行文本,以便 \n 表示新行而不是字符?
- powershell - 查找超过 SharePoint 400 个字符限制的路径
- hadoop - 大容量倾斜数据集上的 Hive 排序操作
- java - 通过 abs 方法返回负数
- java - 配置 bean 未初始化
- python - 如何在 VSCode 上安装新的 python 模块?
- openlayers - OpenLayers - 总览图上的不同风格