2017-04-06 1 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 :: __ construct() : 위치 1에서 시간 문자열 (Ymd)을 파싱하지 못했습니다. 예기치 않은 문자 파일 이름 : User_model.php 줄 번호 : 58 – David

답변

1

요입니다 u는 또한 strtotime()

은 가정 사용할 수 있습니다

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

토큰 48 시간 후에 만료됩니다 있기 때문에, 우리는 당신이 날짜 만합니다 $created

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

변수 일 48 시간을 추가 할 필요가 시간이 아니며 시간을 생략 할 수 있습니다. H:i:s
이제 $expireDate과 오늘의 타임 스탬프를 비교할 수 있습니다.

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