codeigniter unix时间戳验证

时间:2014-04-10 07:34:38

标签: php codeigniter validation unix-timestamp

我有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时间戳格式?

2 个答案:

答案 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
}

您的方法就像通过尝试计算出生日期来验证年龄一样; - )