ссылка сброса пароля не работает должным образом в codeigniter - PullRequest
0 голосов
/ 29 июня 2018

Привет, ребята, я пытаюсь отправить электронное письмо пользователям со ссылкой для сброса пароля. Когда они нажимают на забытый пароль, он попросит их отправить свой адрес электронной почты. Если они дали правильный адрес электронной почты, он отправит им письмо со ссылкой токена. Я сгенерировал случайное число из 16 цифр. Поэтому, когда я пытаюсь передать номер электронной почты и номер токена в ссылке, но по какой-то причине он не передает эти два значения.

вот мой код:

public function ForgotPassword()
{
    $email = $this->input->post('email');
    $findemail = $this->Login_model->forgotPassword($email);
    $token = random_string('alnum', 16);
    if ($findemail) {

        $config = [
            'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.gmail.com',
            'smtp_port' => 465,
            'smtp_user' => 'do-not-reply@example.com', // change it to yours
            'smtp_pass' => 'password', // change it to yours
            'mailtype' => 'html',
            'charset' => 'iso-8859-1',
            'wordwrap' => true
        ];


        $message = 'Please click on below link to reset your password';

        $message .= "<a href='http://localhost/SVN/Project_X/Login/resetpassword/email='.$email.'/token='.$token.'>test</a>";
        $this->load->library('email', $config);
        $this->email->set_newline("\r\n");
        $this->email->from('do-not-reply@example.com'); // change it to yours

        $this->email->to($email); // change it to yours
        $this->email->subject('Message from Project_X for reset your password');
        $this->email->message($message);
        if ($this->email->send()) {
            $this->session->set_flashdata(
                'message',
                'We have sent you email for reset your password!Please check your email'
            );
            $this->load->view('login_view');
        } else {
            show_error($this->email->print_debugger());
        }

    } else {
        //echo "<script>alert(' $email not found, please enter correct email id')</script>";
        $this->session->set_flashdata('message', 'Mail  not found, please enter correct email id');
        $this->load->view('login_view');
    }
}

Может ли кто-нибудь объяснить мне, какую ошибку я совершил.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

попробуйте ниже код

Solution1

$token=random_string('alnum', 16);      
$email = 'test@test.com';
$message .="<a href='http://localhost/SVN/Project_X/Login/resetpassword/$email/$token'>test</a>";

Получите доступ к своей электронной почте и токену через функциональность uri сегмента ci.

$this->uri->segment()

Solution2

Вы можете настроить страницу сброса пароля, как показано ниже

enter image description here

1) Создайте URL страницы сброса пароля с токеном, как показано ниже, и отправьте ссылку ниже в электронном письме пользователя.

$token=random_string('alnum', 16);
$confirmationLink = base_url().'Login/resetpassword/'.$verificationCode;   

2) Создать 1 поле в пользовательской таблице (для значения токена магазина) забытого пароля пользователя.

3) Создайте функцию, как показано ниже, в контроллере входа в систему

public function resetpassword($token=NULL){ echo $token; }

4) Используя токен, вы можете определить, существует ли токен в базе данных, а затем показать пользователю страницу для сброса пароля, в противном случае показать страницу 404

.

5) Пока пользователь отправляет новый пароль, просто нужно обновить пароль в строке токена.

0 голосов
/ 29 июня 2018

Просто удалите одинарную кавычку '' из вашей ссылки и используйте двойную кавычку "".

Попробуйте это:

$message .="<a href='http://localhost/SVN/Project_X/Login/resetpassword/email=".$email."/token=".$token.">test</a>";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...