【问题标题】: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
      }
      

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

      【讨论】:

        猜你喜欢
        • 2011-10-07
        • 1970-01-01
        • 2021-12-01
        • 2016-05-29
        • 2022-11-24
        • 2013-03-23
        • 2021-02-12
        • 1970-01-01
        • 2013-03-11
        相关资源
        最近更新 更多