2017-09-10 12 views
0

토큰 오류 : 내 UsersController.php에 다음 함수를 사용한 https://github.com/hunzinker/CakePHP-Auth-Forgot-Password정의되지 않은 인덱스 : 나는 여기에 GitHub의 저장소 코드를 사용하고

. 정의되지 않은 인덱스 : 앞에 주석이있는 행의 토큰 오류가 발생합니다. 무엇을 바꾸어야합니까?

/** 
* Allow user to reset password if $token is valid. 
* @return 
*/ 
function reset_password_token($reset_password_token = null) { 
    if (empty($this->data)) { 
     $this->data = $this->User->findByResetPasswordToken($reset_password_token); 

     if (!empty($this->data['User']['reset_password_token']) && 
      !empty($this->data['User']['token_created_at']) && 
      $this->__validToken($this->data['User']['token_created_at']) 
     ) { 
      $this->data['User']['id'] = null; 
      $_SESSION['token'] = $reset_password_token; 
     } else { 
      $this->Session->setflash(
       'The password reset request has either expired or is invalid.' 
      ); 
      $this->redirect('/users/login'); 
     } 
    } else { 
     //ERROR ON THE NEXT LINE HERE UNDEFINED INDEX: TOKEN 
     if ($this->data['User']['reset_password_token'] != $_SESSION['token']) { 
      $this->Session->setflash(
       'The password reset request has either expired or is invalid.' 
      ); 
      $this->redirect('/users/login'); 
     } 

     $user = $this->User->findByResetPasswordToken(
      $this->data['User']['reset_password_token'] 
     ); 
     $this->User->id = $user['User']['id']; 

     if ($this->User->save($this->data, array('validate' => 'only'))) { 
      $this->data['User']['reset_password_token'] = 
       $this->data['User']['token_created_at'] = null; 

      if ($this->User->save($this->data) && 
       $this->__sendPasswordChangedEmail($user['User']['id']) 
      ) { 
       unset($_SESSION['token']); 
       $this->Session->setflash(
        'Your password was changed successfully. Please login to continue.' 
       ); 
       $this->redirect('/users/login'); 
      } 
     } 
    } 
} 

답변

0

당신은 $ _SESSION이 인덱스가 포함되어 있는지 확인해야합니다, 그래서 당신은 확인이 존재하도록하기 위해 이런 식으로 업데이트해야합니다 :이으로

:

if (!isset($_SESSION['token']) || $this->data['User']['reset_password_token'] != $_SESSION['token']) { 
    $this->Session->setflash(
     'The password reset request has either expired or is invalid.' 
    ); 
    $this->redirect('/users/login'); 
} 
+0

나는 public $ actsAs = array ('Acl'=> array ('type'=> 'requester'))를 사용한다. 내 User.php 모델에서 다음 오류가 발생합니다. 경고 (512) : 콜백 parentNode()가 사용자 [CORE/Cake/Model/Behavior/AclBehavior.php, line 65]에 정의되지 않았습니다. Acl 요청자가이 작업을 수행하는 데 필요합니까? CakePHP 버전 2.2.2를 사용하고 있습니다. –

+0

$ this-> request-> data로 $ this-> User-> data를 변경하고 $ html-> $ this-> Html-> link로 변경했습니다. 버전 2로 업그레이드하려면 무엇을 변경해야합니까? –

+0

SamHecquet에게 감사드립니다. –