2016-06-09 90 views
-1

我是CakePHP的新手,並且需要提示(管理員)用戶在提交頁面時重新輸入密碼。頁面,需要添加驗證用於修改子用戶的信息。我試圖找到Stack Overflow和其他論壇的解決方案,但沒有運氣。CakePHP - 頁面重新輸入密碼提交

以下是詳細信息:

我們有edit.ctp說,「使能」,通過改變其狀態在用戶表「禁用」和「刪除」子用戶3個按鍵。

echo $this->Form->button('Enable', array('onclick'=> 'change_status(1);')); 

      echo $this->Form->button('Disable', array('onclick'=> 'change_status(0);')); 

      echo $this->Form->button('Delete', array('onclick'=> 'change_status(2);')); 

有一個隱藏文本字段綁定到用戶表的狀態字段。它可以有3個值:1(啓用),0(禁用)和2(刪除)。 PS:由於某些原因,我們無法刪除用戶的記錄,因此依賴於這些「狀態」。當用戶點擊任意3個按鍵

echo $this->Form->hidden('user.status', array('label' => false, 'type' => 'text' , 'value'=> $user["User"]["status"], 'id' => 'status_id')); 

JavaScript函數

<script type="text/javascript"> 
      function change_status(status){ 
        document.getElementById("status_id").value = status; 
      } 
     </script> 

現在,我們需要提示用戶重新輸入密碼,當他們點擊任意3個按鈕的此字段更新。如果密碼與登錄密碼不匹配,則不應執行該操作。

+1

你需要顯示你的(特定的)代碼,並要求一個特定的代碼相關的問題,因爲它是關於主題的stackoverflow。另外請注意,您提出的問題不是(概念上)CakePHP特定的。 – AD7six

+1

感謝您的回覆。我編輯了這個問題。我希望現在清楚 – mnh

回答

0

我假設你有你的數據庫中的用戶表(否則你可以自己修改)。在用戶控制器,

public function checkPassword($userid,$password) 
{ 
    $hashed_pwd = $this->User->passwordHash($password); // call passwordHash function in User.php model 
    $condition = array('User.id'=>$userid,'User.password'=>$hashed_pwd); 

    if($this->User->hasAny($condition)) // check if password with that userid exists in users table 
    { 
     $output['status'] = 1; // give access 
    } else { 
     $output['status'] = 0 
    } 

    $this->set('output'=>$output); 

} 

在用戶模式,

public function passwordHash($password) { 
    return AuthComponent::password($password); 

} 

在你看來,你可以檢查寫在控制器checkPassword函數給出迴應。

+0

我一直在試圖調用函數,但得到了缺失參數2的錯誤。第一個參數被傳遞(我可以從函數checkPassword在屏幕上打印它),但第二個參數沒有。 $ parameters = $ userId。'/'。$ userPassword; \t \t $ result = $ this-> requestAction('/ users/checkPassword /'.$ parameters); 錯誤: WarningControl(2):UsersController :: checkPassword()[APP/controllers/users_controller.php,line 118]缺少參數2 – mnh

+0

如果是這樣,請從checkPassword函數中移除第二個參數並將密碼作爲某事例如: $ password = $ this-> request-> data ['User'] ['password']; // $分配給表單密碼的密碼, 來自該函數。 –

+0

好的,謝謝!讓我嘗試 – mnh