Как исправить «неопределенное свойство: Register :: $ encrypt» в среде PHP codeigniter - PullRequest
0 голосов
/ 16 мая 2019

Когда я отправляю свою форму в CodeIgniter, я получаю эту ошибку Сообщение: неопределенное свойство: Register :: $ encrypt. Я хочу хешировать пароль, поэтому я использовал шифрование.

Я попытался включить библиотеку шифрования в autoload.php, но появляется еще одна ошибка.

здесь появляется ошибка.
проверка функции () {

    $this->form_validation->set_rules('user_name','Name','required|trim');
    $this->form_validation->set_rules('user_email','Email Address','required|trim|valid_email|is_unique[codeigniter_register.email]');
    $this->form_validation->set_rules('user_password','Password','required|trim');

    if($this->form_validation->run()){

        $verification_key=md5(rand());
        $encrypted_password = $this->encrypt->encode($this->input->post('user_password'));
        $data = array(
            'name' => $this->input->post('user_name'),
            'email' => $this->input->post('user_email'),
            'password' => $encrypted_password,
            'verification_key' => $verification_key


        );
        $id=$this->register_model->insert($data);
        if($id > 0){
            $subject='Please verify email for login';
            $message="
                <p>Hi".$this->input->post('user_name')."</p>
                <p>Verify your email for login to this system. Click this <a href='".base_url()."register/verify_email/".$verification_key."'>link</a>.</p>
                <p>Use this link to log in in to this system.</p>
                <p>Thanks You.</p>
            ";

            $config = array(
                'protocol' => 'smtp',
                'smtp_host' => 'smtpout.secureserver.net',
                'smtp_port' => 80,
                'smtp_user' => 'root',
                'smtp_pass' => 'root',
                'mailtype' => 'html',
                'charset' => 'iso-8859-1',
                'wordwrap' =>TRUE
            );

            $this->load->library('email',$config);
            $this->email->set_newline("\r\n");
            $this->email->from('info@icode.info');
            $this->email->to($this->input->post('user_email'));
            $this->email->subject($subject);
            $this->email->message($message);
            if($this->email->send()){
                $this->session->set_flashdata('message','Check in your email for verification mail');
                redirect('register');
            }

        }

    }
    else{
        $this->index();
    }

Я ожидал после отправки формы отправить предупреждение или отправить данные, которые я заполнил, в базу данных,

1 Ответ

0 голосов
/ 16 мая 2019

Загрузка библиотеки шифрования

$this->load->library('encryption');
$encrypted_password = $this->encrypt->encode($this->input->post('user_password'));

https://www.codeigniter.com/user_guide/libraries/encryption.html

После загрузки объект библиотеки шифрования будет доступен с помощью: $this->encryption

Обновление:

Когда вы упомянули о загрузке в конструкторе, я еще раз взглянул на него:

похоже на орфографическую ошибку

$this->load->library('encryption');
 ...
$this->encrypt->encode($this->input->post('user_password'));

вместо

$this->load->library('encryption');
 ...
$this->encryption->encode($this->input->post('user_password'));

Также в документации это представлено так

$ciphertext = $this->encryption->encrypt($plain_text);

Простая ошибка, мне потребовалось несколько минут, чтобы посмотреть на это тоже, чтобы увидеть это. Я никогда ничего не печатаю, если могу этого избежать, я все копирую / вставляю. В основном это потому, что у меня плохое правописание и прочее (дислексия), но он может избежать некоторых проблем, подобных этой ... lol

Рад, что мы разобрали его для вас!

...