2017-09-10 3 views
0

ich den Github-Repository Code verwenden hier: https://github.com/hunzinker/CakePHP-Auth-Forgot-PasswordUndefined index: token Fehler

ich die folgende Funktion in meinem UsersController.php verwendet habe. Ich bekomme den Fehler Undefined index: token in der Zeile, die einen Kommentar davor hat. Was soll ich ändern?

/** 
* 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'); 
      } 
     } 
    } 
} 

Antwort

0

Sie müssen sicher sein, dass $ _SESSION diesen Index enthält, so sollten Sie es so aktualisieren, um sicherzustellen, dass es vorhanden ist:

Durch diese:

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

Wenn Ich benutze public $ actsAs = array ('Acl' => array ('type' => 'requester')); In meinem User.php-Modell erhalte ich den folgenden Fehler: Warnung (512): Callback ParentNode() nicht in Benutzer definiert [CORE/Kuchen/Modell/Behaviour/AclBehavior.php, Zeile 65] Ist Acl Requester erforderlich, um dies zu tun? Ich benutze CakePHP Version 2.2.2. –

+0

Ich habe $ this-> User-> Daten zu $ ​​this-> request-> data geändert und ich habe $ html-> link zu $ ​​this-> Html-> link geändert. Was muss ich noch ändern, um auf Version 2 zu aktualisieren? –

+0

Danke an SamHecquet. –