2017-04-06 116 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"; 
}