2017-04-06 142 views
0

我正在尝试设置一个用户注册系统,该系统创建一个在48小时(2天)后过期的令牌。我试图编程,但无济于事。当我测试的代码,我得到这个错误令牌验证和过期

一个PHP错误遇到
严重性:错误
消息:类“TIMEDATE”未找到
文件名:型号/ User_model.php
行号:58

下面是代码

public function isTokenValid($token) 
{ 
    $q = $this->db->get_where('tokens', array('token' => $token), 1);   
    if($this->db->affected_rows() > 0){ 
     $row = $q->row();    

     $created = $row->created; 
     $createdTS = strtotime($created); 
     $expiredate = new TimeDate('Y-m-d'); 
     //$todayTS = strtotime($today); 
     $expiredate->add(new DateInterval('P2D')); 
     if($createdTS != $expiredate){ 
      return false; 
     } 

     $user_info = $this->getUserInfo($row->user_id); 
     return $user_info; 

    }else{ 
     return false; 
    } 

} 
+1

'新TimeDate'你确定你不是故意的'新DateTime' http://php.net/manual/en/datetime.construct.php –

+0

我改变了这一切,并得到这个 类型:异常 消息:DateTime :: __构造():未能解析位置1( - )处的时间字符串(Ymd):意外字符 文件名:User_model.php 行号:58 – David

回答

1

哟ü也可以使用strtotime()

假设:

// the timestamp the token was created 
$created = $row->created; 

由于令牌将在48小时后失效,我们需要48小时添加到日期变量$created

$expireDate = date("Y-m-d H:i:s", strtotime($created . " + 48 hours")); 

如果你只想要日期部分而不是时间,您可以省略H:i:s
您现在可以将$expireDate与今天的时间戳进行比较。

$today = date("Y-m-d H:i:s"); 
if (strtotime($today) > strtotime($expire)) { 
    echo "expired"; 
} else { 
    echo "not yet"; 
}