2013-09-25 2 views
0

Утром все, может кто-то, пожалуйста, помогите мне. У меня есть одна небольшая ошибка, которую я не могу понять. Я хотел бы обновить/сменить пароль, где пользователи электронной почты = например, 123 @ gmail. однако, когда я ввожу новый пароль, он удаляет старое и оставляет поле пустым.удаляет пароль вместо сброса пароля

**Controller** 
     <?php 
class My_account extends CI_Controller{ 
public function index(){ 
    $this->load->view("vChangePassword"); 
} 

public function change_password() 
{ 

    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('cur_password','Current Password','required'); 
    $this->form_validation->set_rules('new_password','New Password','required'); 
    $this->form_validation->set_rules('con_password','Confirm Password', 'required[matches[new_password]'); 
    if ($this->form_validation->run()!= true){ 

     $this->load->view("vChangePassword"); 
    }else { 
     $sql = $this->db->select("*")->from('users')->where('email',$this->session->userdata('email'))->get(); 
    foreach($sql->result() as $my_info) 
    { 
     $db_password = $my_info->password; 
     $email = $my_info->email; 
    } 
     if(md5($this->input->post('cur_password'))== $db_password){ 
     $fixed_password = mysql_real_escape_string(md5($this->input->post('new_password'))); 
     // $update = $this->db->query("Update 'users' SET 'password' = '$fixed_password' WHERE 'id' = '$db_id'") or die(mysql_error()); 
     $fixed_password ='password'; 
     // $fixed_password = md5($this->input->post('new_password')); 
     $this->db->where('email', $email)->update('users' ,$fixed_password); 
     // $update = $this->db->query("Update 'users' SET 'password' = '$fixed_password' WHERE 'id'= '$db_id'")or die(mysql_error()); 
     echo "Password has been updated!" ; 

     } 
     else { 
      echo "Password is incorrect!"; 
     } 
    } 


} 
} 


?> 

вид

<?php 
echo form_open(base_url()."index.php/my_account/change_password")?> 
<?php echo validation_errors(); 
    ?> 
<table class=”table table-bordered”> 
    <tbody> 
    <tr> 
<td><small><?php echo 'Old Password:';?></small></td> 
<td><?php echo form_password("cur_password");?></td> 
</tr> 
<tr> 
<td><small><?php echo 'New Password:';?></small></td> 
<td><?php echo form_password("new_password");?></td> 
</tr> 
    <tr> 
    <td><small><?php echo 'Confirm Password:';?></small></td> 
    <td><?php echo form_password("con_password");?></td> 
    </tr> 
    </tbody> 
    </table> 
&nbsp;&nbsp;<div id=”some”style=”position:relative;”><button type=”submit” class=”btn btn-primary”><i class=” icon-ok-sign icon-white”></i>&nbsp;Submit</button> 
<?php 
echo form_close(); 
?> 

EDIT Структура таблицы

CREATE TABLE IF NOT EXISTS users (
    id INT (11) NOT NULL AUTO_INCREMENT, 
    email VARCHAR (255) NOT NULL, 
    `password` VARCHAR (255) NOT NULL, 
    `status` VARCHAR (255) NOT NULL, 
    `Level` INT (11) NOT NULL, 
    username VARCHAR (255) NOT NULL, 
    avatar TEXT NOT NULL, 
    signup_date INT (10) NOT NULL, 
    PRIMARY KEY (id) > 
) ENGINE = INNODB DEFAULT CHARSET = latin1 AUTO_INCREMENT = 9 ; 

ответ

2

Проблема заключается в том что вы не сделать правильный массив для обновления пароля вместо этого вы обновляете сгенерированную строку md5 до

$ fixed_password = 'password'; неправильно

Попробуйте один

$fixed_password = mysql_real_escape_string(md5($this->input->post('new_password'))); 
$data = array('password' => $fixed_password); 

$this->db->where('email', $email); 
$this->db->update('users', $data) 

See Active Record Reference

+0

Просьба также представить нам свою структуру таблицы, чтобы сделать более понятной. – Shreyas

+0

@ Шрейас мне нужно предоставить структуру таблицы действительно? Когда op предоставил свою структуру таблицы –

+1

Согласен с вами ответить. –

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