【问题标题】:codeigniter unix timestamp validatecodeigniter unix时间戳验证
【发布时间】:2014-04-10 07:34:38
【问题描述】:
我有 unix 时间戳输入值。我必须验证输入是否是正确的时间戳格式。目前我正在使用这个:
$currenttime = $_POST['unixdate']; //input unix timestamp
if( $currenttime==strtotime( date('Y-m-d H:m:s',$currenttime) ) ){
echo "Correct";
} else {
echo "incorrect format";
}
我用几个测试用例检查了这个,但它失败了。这是正确的还是有任何其他方法可以检查输入是否为 unix 时间戳格式?
【问题讨论】:
标签:
php
codeigniter
validation
unix-timestamp
【解决方案1】:
时间戳只是一个整数,表示自纪元以来经过的秒数。所以你可以做的最好的验证是
$currenttime = $_POST['unixdate']; //input unix timestamp
if((int)$currenttime == $currenttime && is_numeric($currenttime)) {
如果您知道您期望的日期,您可以检查时间戳是否介于两个日期或类似日期之间
$startDate = '2014-10-04';
$endDate = '2013-10-04';
if((strtotime($currentDate) > strtotime($startDate)) && (strtotime($currentDate) < strtotime($endDate))) {
//Is valid
}
【解决方案2】:
您的验证不正确,因为您与另一个将分钟替换为月份的日期进行了比较:
'Y-m-d H:m:s'
^ ^
除此之外,这是一个毫无意义的验证。一个 Unix 时间戳只不过是一个数字(如果你想严格的话,一个整数)。这样的事情就足够了:
$currenttime = filter_input(INT_POST, 'unixdate', FILTER_VALIDATE_INT);
if($currenttime===false){
// Invalid
}
您的方法就像通过尝试计算出生日期来验证年龄;-)