2014-10-09 47 views
0

我現在已經通過該過程了系統,但出於某種原因,實際更新數據庫中密碼的代碼沒有更新任何內容?插入新密碼和重新密碼後,系統立即重定向到登錄頁面,即使沒有顯示錯誤?有什麼想法嗎?謝謝。重置密碼不會保存新密碼CakePHP 2.0

這是我的復位功能

function reset($token=null){ 
    $this->User->recursive=-1; 
    if(!empty($token)){ 
     $u=$this->User->findBytokenhash($token); 
     if($u){ 
      $this->User->id=$u['User']['id']; 
      if($this->request->is('post')){ 
       $this->User->data=$this->request->data; 
       $this->User->data['User']['username']=$u['User']['username']; 
       $new_hash=sha1($u['User']['username'].rand(0,100));//created token 
       $this->User->data['User']['tokenhash']=$new_hash; 
       // print_r($this->request->data); 
       //  exit; 
       if($this->User->validates(array('fieldList'=>array('password','password_confirm')))){ 
        if($this->User->save($this->User->data)){ 
         $this->Session->setFlash('Password Has been Updated'); 
         $this->redirect(array('controller'=>'users','action'=>'login')); 
        } 
       } else{ 
        $this->set('errors',$this->User->invalidFields()); 
       } 
      } 
     } else { 
      $this->Session->setFlash('Token Corrupted,,Please Retry.the reset link work only for once.'); 
     } 
    } else{ 
     $this->redirect('/'); 
    } 
} 

這是我reset.ctp

<?php echo $this->Form->create('User', array('action' => 'reset')); ?> 
<?php 
    if(isset($errors)){ 
     echo '<div class="error">'; 
     echo "<ul>"; 
     foreach($errors as $error){ 
      echo "<li><div class='error-message'>$error</div></li>"; 
     } 
     echo "</ul>"; 
     echo '</div>'; 
    } 
?> 
<form method="post"> 
    <?php 
     echo $this->Form->input('User.password', array('type' => 'password', 
                 'name' => '$data[User][password]', 
                 'class' => 'form-control')); 
     echo $this->Form->input('User.re_password', array('type' => 'password', 
                 'name' => 'data[User][re_password]', 
                 'class' => 'form-control')); 
    ?> 
    <input type="submit" class="button" style="float:left;margin-left:3px;" value="Save" /> 
    <?php echo $this->Form->end();?> 
</form> 

請幫助我,謝謝

+0

上CTP文件的形式標記,你不令牌再次發送剛剛從表單標籤在你的CTP刪除操作,然後檢查 – 2014-10-09 05:11:41

+0

@BharatMaheshwari是的,我使用驗證過 – dery 2014-10-09 05:12:44

+0

我也看到了兩個表單標籤打開,一個一個被關閉,刪除第二個 – 2014-10-09 05:14:17

回答

0

<?php echo $this->Form->create('User'); ?> 
<?php 
if(isset($errors)){ 
    echo '<div class="error">'; 
    echo "<ul>"; 
    foreach($errors as $error){ 
     echo "<li><div class='error-message'>$error</div></li>"; 
    } 
    echo "</ul>"; 
    echo '</div>'; 
} 
?> 
<?php 
    echo $this->Form->input('User.password', array('type' => 'password', 
                'name' => '$data[User][password]', 
                'class' => 'form-control')); 
    echo $this->Form->input('User.re_password', array('type' => 'password', 
                'name' => 'data[User][re_password]', 
                'class' => 'form-control')); 
?> 
<input type="submit" class="button" style="float:left;margin-left:3px;" value="Save" /> 
<?php echo $this->Form->end();?> 
替換您的CTP代碼

希望這個 將工作。

+0

感謝幫助兄弟,但它仍然不起作用:( – dery 2014-10-09 06:48:35

+0

檢查你的$ this->數據是什麼。它獲取$令牌或不? – 2014-10-09 08:35:34

+0

我得到的令牌的價值,但問題是當提交新的密碼,密碼不保存到數據庫中,數據庫仍然過去的密碼@bharat – dery 2014-10-09 08:43:20

0

我只注意到,

您shuld使用$this->User->save($this->request->data)

退房利用內置的CakePHP這

echo $this->Form->input('User.password', array('type' => 'password', 
                'class' => 'form-control')); 
    echo $this->Form->input('User.re_password', array('type' => 'password', 
                'class' => 'form-control')); 

讓name屬性匹配數據庫表,字段。我認爲你只有一個或兩個ctp等,你只是從開始建立你的項目,對嗎?

+0

它仍然無法工作兄弟,啊我很沮喪 – dery 2014-10-09 08:41:20

+0

@dery,我沒有訪問你的項目,我想幫助你,你說我很沮喪? – 2014-10-09 08:44:42

+0

如果您想要調試代碼,將會失敗無法正常工作。檢查用戶模型中是否有任何beforeSave()方法? – 2014-10-09 08:46:22

0

試試這個:

public function beforeSave() { 
    if (isset($this->data['User']['password'])) { 
     $this->data['User']['password'] = AuthComponent::password($this->data['User']['password']); 
    } 
    return true; 
} 

和功能復位

if($this->User->save($this->User->data,false)) 

它爲我工作。希望對你有幫助!!