Смена пароля вошедшего пользователя в код воспламенителя - PullRequest
0 голосов
/ 19 декабря 2018

Я работаю над Code Igniter и застрял там, где мне нужно сменить пароль вошедшего в систему пользователя.Мне нужна помощь в подборе идентификатора пользователя, вошедшего в систему, и через него я хочу обновить пароль этого пользователя.

Ниже приведены изображения контроллера и модели, созданные в проекте соответственно.

1 Ответ

0 голосов
/ 19 декабря 2018
Create html link:
<a href="<?php echo base_url(); ?>user/changePassword"><i class="fa fa-circle-o"></i>Change password</a>

Create user controller:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class User extends CI_Controller
{

    public function __construct()
    {
        parent::__construct();

        // Load form helper library
        $this->load->helper('form');

        // Load form validation library
        $this->load->library('form_validation');

        // Load session library
        $this->load->library('session');

        $this->load->model('Data_model');
    }

    public function changePassword()
    {
        $web = array();
        $web['title'] = 'Change password';
        $web['content'] = 'web/password';

        $this->form_validation->set_rules('old_password', 'Old password', 'required|callback_check_password');
        $this->form_validation->set_rules('new_password', 'New password', 'required');
        $this->form_validation->set_rules('confirm_password', 'Confirm password', 'required|matches[new_password]');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('web_template',$web);
        } else {

            $id = $this->user_id;

            $data = array(
                'user_password' => $this->input->post('new_password'),
            );

            $this->Common_model->Data_model('user_login', $data, 'id', $id);
            $this->session->set_flashdata('msg', 'Password changed Successfully');

            redirect('user/changePassword');
        }

    }

    function check_password($password) {        
        if($this->user_id)
            $id = $this->user_id;
        else
            $id = '';

        $result = $this->Data_model->check_user_password($id, $password);
        if($result > 0)
            $response = true;
        else {
            $this->form_validation->set_message('check_password', 'Old password is wrong');
            $response = false;
        }

        return $response;
    }
}

Change password html page in view:
<section class="content">
    <div class="box">
        <div class="box-header with-border">
            <h3 class="box-title"><?php echo $title; ?></h3>
            <div class="box-tools pull-right">
                <button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
                <i class="fa fa-minus"></i></button>
            </div>
        </div>
        <?php 
            $attributes = array('class' => 'form-horizontal', 'id' => 'changePassword');
            echo form_open('user/changePassword', $attributes); 
        ?>
        <div class="box-body">
            <?php if (!empty($this->session->flashdata('msg'))) : ?>
                <div class="alert alert-success alert-dismissable alertDiv"> <?php echo $this->session->flashdata('msg'); ?> </div>
            <?php endif; ?>

            <div class="row">
                <div class="col-md-offset-2 col-md-8">
                    <div class="form-group">
                        <label for="inputEmail3" class="col-md-2 control-label">Old password</label>
                        <div class="col-md-8">
                            <input type="password" name="old_password" value="<?php echo (isset($form_data) ? $form_data->old_password : set_value('old_password')); ?>" class="form-control" id="old_password" placeholder="Old password">
                            <?php echo form_error('old_password', '<div class="error">', '</div>'); ?>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-2 col-md-8">
                    <div class="form-group">
                        <label for="inputEmail3" class="col-md-2 control-label">New password</label>
                        <div class="col-md-8">
                            <input type="password" name="new_password" value="<?php echo (isset($form_data) ? $form_data->new_password : set_value('new_password')); ?>" class="form-control" id="new_password" placeholder="New password" autocomplete="off">
                            <?php echo form_error('new_password', '<div class="error">', '</div>'); ?>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-2 col-md-8">
                    <div class="form-group">
                        <label for="inputEmail3" class="col-md-2 control-label">Confirm Password</label>
                        <div class="col-md-8">
                            <input type="password" name="confirm_password" value="<?php echo (isset($form_data) ? $form_data->confirm_password : set_value('confirm_password')); ?>" class="form-control" id="confirm_password" placeholder="Confirm Password" autocomplete="off">
                            <?php echo form_error('confirm_password', '<div class="error">', '</div>'); ?>
                        </div>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-md-offset-5" style="margin-top: 10px;">
                    <button type="submit" class="btn btn-primary">Submit</button>
                </div>
            </div>
        </div>
        <?php form_close(); ?>
    </div>
    <!-- /.box -->
</section>

Create Data_model in model add this function:
// Update data to table
    public function update($table, $data, $primaryfield, $id)
    {
        $this->db->where($primaryfield, $id);
        $q = $this->db->update($table, $data);
        return $q;
    }
//Check the old password:
function check_user_password($id = '', $password) {
        $this->db->where('user_password', $password);
        $this->db->where('id', $id);

        return $this->db->get('user_login')->num_rows();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...