我尝试使用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);
}