2013-08-25 78 views
0

我想獲取確認密碼以對抗我的表單中的密碼字段。我通過了驗證器的方法,他們似乎都很完美。但是,當試圖確認密碼時,我每次都會收到一條錯誤消息,他們必須匹配。抓住我的頭,我只能確定它是因爲它們在通過驗證之前被哈希。我不知道如何克服這個問題,因爲他們需要在輸入數據庫之前進行哈希處理。有任何想法嗎?比較確認密碼和散列密碼| Laravel 4

getSignUp控制器

 public function getSignUp() { 
      $userdata = array(
       'email' => Input::get('email'), 
       'password' => Hash::make(Input::get('password')), 
       'confirm_password' => Hash::make(Input::get('confirm_password')), 
       'user_zip_code' => Input::get('user_zip_code')   
      ); 

      $rules = array(
       'email' => 'required|email|unique:users,email', 
       'password' => 'required|min:5', 
       'confirm_password' => 'required|same:password', 
       'user_zip_code' => 'required' 
      ); 

      $validation = Validator::make($userdata, $rules); 

      if($validation->fails()){ 
       return Redirect::to('signup')->withErrors($validation)->withInput(); 
      } 

      $user = new User($userdata); 
      $user->save(); 

      return Redirect::to('login'); 
    } 

如果需要再代碼讓我知道。我只是簡單地讓withErrors進入註冊頁面的刀片模板

回答

3

不要將哈希密碼傳遞給驗證器。哈希它之前,你保存它:

public function getSignUp() { 
    $userdata = array(
     'email' => Input::get('email'), 
     'password' => Input::get('password'), 
     'confirm_password' => Input::get('confirm_password'), 
     'user_zip_code' => Input::get('user_zip_code')   
    ); 

    $rules = ... 

    $validation = Validator::make($userdata, $rules); 

    if($validation->fails()){ 
     return Redirect::to('signup')->withErrors($validation)->withInput(); 
    } 

    $userdata['password'] = Hash::make($userdata['password']); 

    $user = new User($userdata); 
    $user->save(); 

    return Redirect::to('login'); 
} 
+0

愚蠢的容易...大聲笑謝謝!希爾先生! – Lynx