我有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时间戳格式?
答案 0 :(得分: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
}
答案 1 :(得分:0)
您的验证不正确,因为您与另一个用月份替换分钟的日期进行比较:
'Y-m-d H:m:s'
^ ^
除此之外,这是一个毫无意义的验证。 Unix时间戳只是一个数字(如果你想要严格,则为整数)。这样的事情应该足够了:
$currenttime = filter_input(INT_POST, 'unixdate', FILTER_VALIDATE_INT);
if($currenttime===false){
// Invalid
}
您的方法就像通过尝试计算出生日期来验证年龄一样; - )