注册验证邮件,但提交时插入双数据

时间:2015-10-07 07:05:14

标签: php codeigniter email

仍在继续我发布的项目。注册验证邮件时遇到一些麻烦。当前正常运行:将验证电子邮件注册到电子邮件目的地。但是我看到在数据库中有两个具有相同数据(提交)的插入。我的剧本有什么问题吗?

这是我的控制器

function submit() {

    $_POST['dob'] = $_POST['year'].'-'.$_POST['month'].'-'.$_POST['day'];

    $firstname = $this->input->post('firstname');
    $lastname = $this->input->post('lastname');     
    $password = $this->input->post('password');
    $email = $this->input->post('email');
    $dob = $this->input->post('dob');
    $jkl = $this->input->post('jkl');   
    $lastlogin = $this->input->post('lastlogin');       

    $data = array(
        'firstname' => $firstname,
        'lastname' => $lastname,
        'password' => $password,
        'email' => $email,  
        'dob' => $dob,
        'jkl' => $jkl,
        'lastlogin' => $lastlogin,
        'active' => 0
    );

    $this->m_register->add_account($data);  
    $id = $this->m_register->add_account($data);

    $encrypted_id = md5($id);

    $this->load->library('email');

    $config = Array(
    'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.gmail.com',
            'smtp_port' => 465,
            'smtp_user' => '*******@*****.com ',
            'smtp_pass' => '**********',
            'mailtype'  => 'html', 
            'charset' => 'utf-8',
            'wordwrap' => TRUE
        );      

           $this->load->library('email', $config);
           $this->email->set_newline("\r\n");
           $email_setting  = array('mailtype'=>'html');
           $this->email->initialize($email_setting);
           $this->email->from('*****@******.COM', 'RRR');
           $this->email->to($email);
           $this->email->subject('Confirmation Email');
           $this->email->message("WELCOME TO RRRR <br><p></p>Hallo $firstname $lastname <br><br><br><p>Terimakasih telah melakuan registrasi dengan:<br><br><p>
                       Username   = $email<p>
                       Password   = $password
                       <br><br>
                       <p>
                       untuk memverifikasi akun silahkan klik tautan dibawah ini</p><br><br>"
                       .site_url("login/register/verification/$encrypted_id")."
                       <br><br><br>
                       <p></p><br>

                       <p>Thanks</p>Admin ");


    if($this->email->send())
    {
    $data = array ( 'isi' => 'login/vsuccess');
            $this->load->view('layout/wrapper',$data);
    }else
    {
    $data = array ( 'isi' => 'login/vgagal');
            $this->load->view('layout/wrapper',$data);
    }


}   

这是我的模特

    function add_account($data){
        $this->load->database();
        $this->db->insert('user',$data);
        return  mysql_insert_id();
    }

5 个答案:

答案 0 :(得分:2)

我不完全理解这个问题,但您是否注意到您似乎将数据插入数据库两次?

$this->m_register->add_account($data);  
$id = $this->m_register->add_account($data);

答案 1 :(得分:2)

$this->m_register->add_account($data);  
$id = $this->m_register->add_account($data);

检查代码中的这两行,删除:

  

$这 - &GT; m_register-&GT; add_account($数据);

它会起作用。

答案 2 :(得分:1)

因为您要两次调用ad_account()。

$this->m_register->add_account($data);  
$id = $this->m_register->add_account($data);

答案 3 :(得分:1)

$this->m_register->add_account($data);  
$id = $this->m_register->add_account($data);

显然,您将$ data数据插入数据库2次:)

答案 4 :(得分:1)

$this->m_register->add_account($data);调用add_account()模型中的m_register函数。使用$id = $this->m_register->add_account($data);,您可以第二次调用它,但您也可以捕获返回的数据。这应该是您在数据库中看到两个插入的原因。

删除第一个电话,只留下$id = $this->m_register->add_account($data);,可以解决问题。

我建议在您的控制器中添加表单验证,您可以在其中使用电子邮件的回调函数,以检查您的用户表中是否已存在该电子邮件。这样,用户无法使用相同的电子邮件注册两次。