如果使用已注册的电子邮件/用户名注册,则警告


warning if register with email / username is already registered

我尝试使用CodeIgniter框架使项目注册,在列表后验证电子邮件,它可以使用。但我的剧本有弱点。当注册时如果他使用的是同一个用户,那么当提交时会出现"你已经注册了电子邮件"的声明。controller login.

function submit() {
    //passing post data dari view
    $_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');       
    //memasukan ke array
    $data = array(
        'firstname' => $firstname,
        'lastname' => $lastname,
        'password' => $password,
        'email' => $email,  
        'dob' => $dob,
        'jkl' => $jkl,
        'lastlogin' => $lastlogin,
        'active' => 0
    );
    //tambahkan akun ke database
    $this->m_register->add_account($data);
    //redirect(base_url().'homepage/homepage'); 
    $id = $this->m_register->add_account($data);
    //enkripsi id
    $encrypted_id = md5($id);
    $this->load->library('email');
    $config = Array(
    'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.gmail.com',
            'smtp_port' => 465,
            'smtp_user' => '*******@*****esy.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('jobrecruit@jobrecruit.esy.es', 'JOBRECRUIT');
           $this->email->to($email);
           $this->email->subject('Confirmation Email');
           $this->email->message("WELCOME TO JOB RECRUIT <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 JOBRECRUIT");

    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);
    }

}   

我建议您使用codeigniter的表单验证库。

function submit() {
$this->load->library('form_validation');        
$this->form_validation->set_rules('email','Email','trim|required|valid_email|xss_clean|is_unique[TABLE_NAME.email]');
$this->form_validation->set_message('is_unique', 'you have registered email.');
if($this->form_validation->run())
{
    //passing post data dari view
    $_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');       
    //memasukan ke array
    $data = array(
        'firstname' => $firstname,
        'lastname' => $lastname,
        'password' => $password,
        'email' => $email,  
        'dob' => $dob,
        'jkl' => $jkl,
        'lastlogin' => $lastlogin,
        'active' => 0
    );
    //tambahkan akun ke database
    $this->m_register->add_account($data);
    //redirect(base_url().'homepage/homepage'); 
    $id = $this->m_register->add_account($data);
    //enkripsi id
    $encrypted_id = md5($id);
    $this->load->library('email');
    $config = Array(
    'protocol' => 'smtp',
            'smtp_host' => 'ssl://smtp.gmail.com',
            'smtp_port' => 465,
            'smtp_user' => 'jobrecruit@jobrecruit.esy.es ',
            'smtp_pass' => 'jobrecruit123456',
            '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('jobrecruit@jobrecruit.esy.es', 'JOBRECRUIT');
           $this->email->to($email);
           $this->email->subject('Confirmation Email');
           $this->email->message("WELCOME TO JOB RECRUIT <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 JOBRECRUIT");

    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);
    }
  }
}   

错误信息将在form_validation()或特定form_error('email')打印中可访问,因为它显示错误信息

在控制器

<?php
    defined('BASEPATH') OR exit('No direct script access allowed');
    class Login extends CI_Controller {
        public function __construct(){
            parent::__construct();
            // if($this->session->userdata('user'))redirect('homepage/menu');
        }
        public function index($param='')
        {
            if($param == 'error')
                $param = 'Incorrect username or password';
            if($param == 'error1')
                $param = 'User not acctive';
            $data = array('title'=>'Login','message'=>$param, 'isi' => 'login/vlogin', 'base_url'=>base_url());
            $this->load->view('layout/wrapper', $data);
        }

        public function do_login() {
            $mail = $_POST['mail'];
            $password = $_POST['password'];
            $result = $this->Model_name->check_valid_user($mail,$password);

            if ($result == 1)
            {    //User exists
                if ($result['active'] == 1)
                {
                    //User exists and his email is verified
                    $session_set = array(
                        'user'  => true,
                        'firstname' => $user->firstname,
                        'lastname'  => $user->lastname,
                        'jkl'       => $user->jkl,
                        'id'        => $user->id,
                        'lastlogin' => $user->lastlogin
                    );
                    $this->Model_name->update_last_login($result['id']);
                    $this->session->set_userdata($session_set);
                    redirect('homepage/menu');
                }
                else
                {
                    //User exists BUT his email is NOT verified
                    $this->session->set_flashdata('message', 'Akun anda belum aktif silahkan cek email anda untuk verifikasi');
                    //You have to capture and show the flash message in view
                    redirect('login/login/index');
                }
            }
            else 
            {    
            //User does NOT exist at all
                $this->session->set_flashdata('message', 'Username dan Password tidak sama.');
                //You have to capture and show the flash message in view
                redirect('login/login/index');
            }
        }
    }
模型中

public function check_valid_user($mail,$password)
{
    $query = $this->db->quesry("SELECT * FROM user WHERE mail='$mail' AND password = '$password'");
    $result = $query->result_array();
    $count = count($result);
    if(empty($count) || $count >1 )
    {
        $log = 0;
        return $log;
    }
    else
    {
        $log = 1;
        return $log;
    }
}
function update_last_login($id)
{
    $data = array(
        'lastlogin' => date('Y-m-d H:i:s')
    );
    $this->db->where('id', $id);
    $this->db->update('user', $data);
}