2015-12-03 84 views
0

我試圖讓用戶在我的網站中更改他們的密碼。 我被困在控制器中。我的疑問是$sql = $this->db->select("*")->from("logins_table")->where('lt_username',$this->session->userdata('email'))->get();是否工作。CodeIgniter:更改控制器中的密碼

我的控制器:

<?php 

class Changepw extends MY_Controller { 

    public function Changepwd(){ 
    } 

    public function reset() // we will load models here to check with database 
    { 
     $sql = $this->db->select("*")->from("logins_table")->where('lt_username',$this->session->userdata('email'))->get(); 

     foreach ($sql->result() as $my_info) { 
      $db_password = $my_info->lt_password; 
      $db_id = $my_info->lt_id; 
     } 

     if($this->input->post('opassword') == $db_password && ($this->input->post('npassword') != '') && ($this->input->post('cpassword')!='')) { 
       $fixed_pw = mysql_real_escape_string(md5($this->input->post('npassword'))); 
       $update = $this->db->query("Update 'logins_table' SET 'lt_password'= '$fixed_pw' WHERE 'id'= '$db_id'")or die(mysql_error()); 
       //$this->form_validation->set_message('change',"sucess"); 
    echo json_encode(array("success"=>true)); 

     }else { 
      //$this->form_validation->set_message('change', "err"); 

      echo json_encode(array("success"=>false)); 

     } 
     exit; 
    } 
} 

和我的視圖頁:

 <table width="95%" border="0" cellspacing="5" cellpadding="5"> 
     </tbody> 
      <tr> 
       <td width="35%" class="heading">Email</td> 
       <td><input type="text" name="email" ></td> 
      <tr> 
       <td class="heading">Existing Password</td> 
       <td><input type="password" name="opassword" ></td> 
      </tr> 
      <tr title="Ignore new password if you dont want to change password"> 
       <td class="heading">New Password</td> 
       <td><input type="password" name="npassword"></td> 
      </tr> 
      <tr> 
       <td class="heading">Confirm Password</td> 
       <td><input type="password" name="cpassword"></td> 
      </tr> 

      <tr> 
       <td>&nbsp;</td> 
       <td><button name="Submit" id="forgotBtn" class="customBtn" value="Submit">Save changes</button> 
        </td> 
        <tr> 
       <td>&nbsp;</td> 
       <td ><div class="errorMsg" id="errMsg" style="display:none"> Error in updating </div></td> 
      </tr> 
      </tr> 
      </tbody> 
      </table> 
    </form> 



$("#forgotBtn").on('click', function() 
{ 

    $.post("/changepw/reset", $("#forgotForm").serialize(), // serializes the form's elements. 
     function(data) { 
      data = jQuery.parseJSON(data); 
      if(data.error == false) { 
       $("#successMsg").hide(); 
      }else{ 
       $("#errMsg").show(); 
      } 
     }); 
    return false; 
}); 

感謝。

+0

你能對你面臨的問題更具體嗎?你懷疑一段代碼是否有效。你試過了嗎?你會得到什麼錯誤? –

+0

同意上述評論。你知道它不起作用嗎?如果你只是懷疑然後運行它。如果您遇到錯誤,請分享! –

+0

雖然我們提交顯示「錯誤更新」的新密碼的詳細信息,進一步想檢查錯誤的詳細信息,但無法找出如何檢查和解決它的方式 –

回答

0

我認爲根據代碼,你的錯誤在這裏。

$this->input->post('opassword') == $db_password// this line 

而在數據庫中你已經使用md5()存儲密碼,但在這裏,你只是檢查明文這是錯誤的

md5($this->input->post('opassword')) == $db_password 

這會幫助你。

+0

謝謝你的回覆,我有與上面的交叉檢查,仍然問題未解決 –

+0

@ChandaKalyani什麼exactry是錯誤? –

+0

當我們提交顯示「更新錯誤」的新密碼細節時, –