2016-03-13 4 views
-1

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

вот мой контроллер:

public function register() { 
      $this->form_validation->set_rules('fname', 'First Name', 'required'); 
      $this->form_validation->set_rules('lname', 'Last Name', 'required'); 
      $this->form_validation->set_rules('email', 'E-mail', 'required|valid_email'); 
      if ($this->form_validation->run() == TRUE) { 

       $registration_data = array(
        'user_firstname' => $this->input->post('fname'), 
        'user_lastname' => $this->input->post('lname'), 
        'user_email' => $this->input->post('email'), 
        'user_password' =>md5(rand(0, 50)), 
        'user_status' => '0', 
       'hash' => md5(rand(0, 1000)) 
      ); 
       $config['protocol'] = 'smtp'; 
       $config['smtp_host'] = 'ssl://smtp.gmail.com'; 
       $config['smtp_port'] = '465'; 
       $config['smtp_user'] = 'sampleemail'; 
       $config['smtp_pass'] = 'samplepass'; 
       $config['mailtype'] = 'html'; 
       $config['charset'] = 'iso-8859-1'; 
       $config['wordwrap'] = TRUE; 
       $config['newline'] = "\r\n"; //use double quotes 
       $this->email->initialize($config); 
     $address = $this->input->post('email'); 
      $this->user_model->insert_customer($registration_data); 
     $this->load->library('email');  //load email library 
     $this->email->from('sampleemail', 'Site'); //sender's email 
     $subject="Welcome!"; //subject 
     $message= /*-----------email body starts-----------*/ 
      'Thanks for signing up, '.$_POST['fname'].'! 

      Your account has been created. 
      Here are your login details. 
      ------------------------------------------------- 
      Email : ' . $_POST['email'] . ' 
      Password: ' . $_POST['password'] . ' 
      ------------------------------------------------- 

      Please click this link to activate your account: 

      ' . base_url() . 'user/verify?' . 
      'email=' . $_POST['email'] . '&hash=' . 'hash'; 

     /*-----------email body ends-----------*/    
     $this->email->to($address); 
     $this->email->subject($subject); 
     $this->email->message($message); 
     $this->email->send(); 


     } 

я думаю, что его проблема, что пароль не посылает пользователю

+0

что это не делает, что вы ожидаете делать? Где проблема? Вы видите какой-либо выход ошибки? У вас есть ошибки? Кроме того, пунктуация - ваш друг. – Ethan22

+0

пароль не отправляется по электронной почте –

+1

Это довольно плохая практика с точки зрения безопасности. Вы должны только отправить им ссылку, содержащую одноразовый токен, в форму, где они могут установить новый пароль. – CBroe

ответ

0

Ваш код не ясен для меня.

Ваши данные сохраняются в массиве

$registration_data = array(
        'user_firstname' => $this->input->post('fname'), 
        'user_lastname' => $this->input->post('lname'), 
        'user_email' => $this->input->post('email'), 
        'user_password' =>md5(rand(0, 50)), 
        'user_status' => '0', 
       'hash' => md5(rand(0, 1000)) 
      ); 

Попробуйте отправить пароль через этот массив. Пример:

$registration_data['user_password']; 

Поскольку пароль был сгенерирован в вашем коде, и он не закончился пользователем.

0

Сначала вы должны получить пароль из базы данных и отправить его.

у вас нет в наличии этой почты «$ _POST ['password']» для отправки пользователю.

+0

Есть ли способ, которым я мог бы разместить случайную строку, и в то же время, которая будет храниться в базе данных? –