2015-12-03 3 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 какая точная ошибка? –

+0

Пока мы отправляем новые данные паролей, показывающие «Ошибка при обновлении», –

Смежные вопросы