无法确认电子邮件帐户Codeigniter

时间:2016-10-31 10:45:28

标签: php codeigniter

我是Codeigniter的新手。我试着用电子邮件地址登录和注册用户。链接激活已发送给用户,如果用户想要激活其帐户,则始终无法确认该帐户。 有什么帮助吗?

这是我的代码。

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

请注意,$key已经在verifyEmailID()方法中进行了MD5转换,而这将在MD5中转换两次电子邮件。

$this->db->where('md5(email)', $key); // $key already MD5

因为,您在此处使用了md5()功能:

site_url('voter/voter_register/verify/'.md5($to_email))

在您的代码中,如果从md5()子句中删除WHERE方法,则该方法将起作用:

$this->db->where('email', $key); 

答案 1 :(得分:0)

请重写您的模型并在verifyEmailID(param)方法中返回一些值

function verifyEmailID($key)
{
    $condition=md5($key);
    $data = array('status' => 1);
    $this->db->where($condition, $key);
    $varify=$this->db->update('user', $data);
     if($varify==true) {
       return true;
     }
   return false;
}

答案 2 :(得分:0)

我的新模特。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Voter_model extends CI_Model
{
	
		
     function __construct()
     {
          // Call the Model constructor
          parent::__construct();
     }

     //get the username & password from tbl_usrs
     function get_user($username, $password)
     {
          $sql = "select * from user where username = '" . $username . "' and password = '" . $password . "' and status = '1'";
          $query = $this->db->query($sql);
          return $query->num_rows();
     }
	 
	 
	 //insert into user table
    function insertUser($data)
    {
        return $this->db->insert('user', $data);
    }
    
    //send verification email to user's email id
    function sendEmail($to_email)
    {
        $from_email = 'evotingcucukan@gmail.com'; //change this to yours
        $subject = 'Aktivasi Akun';
        $message = 'Hallo'. $username .'<br /><br />Silakan klik link dibawah ini untuk mengkonfirmasi akun Anda pada Sistem E-voting Desa Pakraman Cucukan.<br /><br /> 
  '. site_url('voter/voter_register/verify/'.md5($to_email)) . '<br /><br /><br />Terima Kasih<br />Admin Evoting';
        
        //configure email settings
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.googlemail.com'; //smtp host name
        $config['smtp_port'] = '465'; //smtp port number
        $config['smtp_user'] = $from_email;
        $config['smtp_pass'] = 'evoting2016'; //$from_email password
        $config['mailtype'] = 'html';
        $config['charset'] = 'iso-8859-1';
        $config['wordwrap'] = TRUE;
        $config['newline'] = "\r\n"; //use double quotes
        $this->email->initialize($config);
        
        //send mail
        $this->email->from($from_email, 'Admin Evoting');
        $this->email->to($to_email);
        $this->email->subject($subject);
        $this->email->message($message);
        return $this->email->send();
    }
    
    //activate user account
    function verifyEmailID($key)
	{
    $data = array('status' => 1);
    $this->db->where('email', $key);
    $verifed=$this->db->update('user', $data);
     if($verifed==true) 
	 	{
      	 return true;
     	}
  		 return false;
	}

	
	
}?>

我的新控制器

<?php
class Voter_register extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->helper(array('form','url'));
        $this->load->library(array('session', 'form_validation', 'email'));
        $this->load->database();
        $this->load->model('Voter_model');
    }
    
    function index()
    {
        $this->register();
    }
	
	
	
    function register()
    {
        //set validation rules
        
        $this->form_validation->set_rules('email', 'Email ID', 'trim|required|valid_email|is_unique[user.email]');
        $this->form_validation->set_rules('password', 'Password', 'trim|required|matches[cpassword]');
        $this->form_validation->set_rules('cpassword', 'Confirm Password', 'trim|required');
        
        //validate form input
        if ($this->form_validation->run() == FALSE)
        {
            // fails
            $this->load->view('voter/voter_register');
        }
        else
        {
            //insert the user registration details into database
            $data = array(
                'fname' => $this->input->post('fname'),
                'lname' => $this->input->post('lname'),
                'email' => $this->input->post('email'),
                'password' => $this->input->post('password'),
				 'username' => $this->input->post('username'),
				 'voting'=> 1,
				 'status'=> 0
				
            );
            
            // insert form data into database
            if ($this->Voter_model->insertUser($data))
            {
                // send email
                if ($this->Voter_model->sendEmail($this->input->post('email')))
                {
                    // successfully sent mail
                    $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Registrasi Sukses, silakan cek e-mail Anda untuk melakukan konfirmasi dan aktivasi akun.</div>');
                    redirect('admin_voter');
                }
                else
                {
                    // error
                    $this->session->set_flashdata('msg','<div class="alert alert-info text-center">Registrasi Sukses, gagal mengirim e-mail verifikasi.</div>');
                    redirect('admin_voter');
                }
            }
            else
            {
                // error
                $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Oops! Error.  Please try again later!!!</div>');
                redirect('admin_voter');
            }
        }
    }
    
    function verify($hash)
    {
		$this->load->helper('url');
 		$this->load->model('voter_model');

        if ($this->voter_model->verifyEmailID($hash))
        {
            
           redirect('voter/voter_aktivasiok');
        }
        else
        {
           
            redirect('voter/voter_aktivasifail');
        }
    }
}
?>