2011-10-27 9 views
0

誰もがこの回線に問題見ることができます:それは次のエラーを与えたよう$emailtoken = md5($user['User']['password'].CAKE_SESSION_STRING);CakePHPのMD5とケーキのセッション文字列

を:Use of undefined constant CAKE_SESSION_STRING - assumed 'CAKE_SESSION_STRING'

それはまだトークンを作成しますが、トークンを使用した場合、そのエラーを与え、それが無効であることを述べている:ここで/

がフル機能である:

 function admin_resetpassword ($token = null) 
     { 
      // User submits their email address 
      if (!empty($this->data['User']['email'])) 
      { 
       // user submitted initial form 
       $user = $this->User->findByEmail($this->data['User']['email']); 
       if (empty($user)) 
       { 
        $this->Session->setFlash('Unknown email.'); 
        return; 
       } 
       else 
       { 
        $emailtoken = md5($user['User']['password'].CAKE_SESSION_STRING); 
        // send email (temp flash to test code) 
        $this->Session->setFlash($emailtoken); 
        return; 
       } 
      } 
// If the token is not empty on the url 
     if (!empty($token)) 
     { 
      $user = $this->User->find(array("MD5(User.password + '".CAKE_SESSION_STRING."')"=>$token)); 

      if (empty($user)) 
      { 
       $this->Session->setFlash('Invalid token.'); 
       return; 
      } 

      if (!empty($this->data['User']['password'])) 
      { 
       $user['User']['password'] = $this->data['User']['password']; 
       $this->user->save($user); 
       $this->Session->setFlash('New password set.'); 
       $this->redirect('/'); 
      } 

      $this->set('token', $token); 
      $this->render('newpassword2'); 
     } 


    } 

答えて

0

問題がCAKE_SESSION_STRINGでは定義されていません(Aエラーに記載されています)。 塩または暗号シードを取得する場合は、Configure::read('Security.salt');または$this-Session->id;を使用してください。しかし、このセッションIDは特定の非アクティブ期間の後に失われることは知っていますか?後でそのセッションIDを取得することはできません(どこかに保存しない限り)。

関連する問題