CodeIgniter를 사용하여 등록 시스템을 구축하려고합니다. 다음 코드로 User라는 컨트롤러가 있습니다.CodeIgniter 사용자 등록 등록
class User extends CI_Controller{
public function __construct()
{
parent::__construct();
$this->load->model('user_model');
}
public function index()
{
if(($this->session->userdata('user_name')!=""))
{
$this->welcome();
}
else{
$data['title']= 'Home';
$this->load->view('header_view',$data);
$this->load->view("registration_view.php", $data);
$this->load->view('footer_view',$data);
}
}
public function welcome()
{
$data['title']= 'Welcome';
$this->load->view('header_view',$data);
$this->load->view('welcome_view.php', $data);
$this->load->view('footer_view',$data);
}
public function login()
{
$email=$this->input->post('email');
$password=md5($this->input->post('pass'));
$result=$this->user_model->login($email,$password);
if($result) $this->welcome();
else $this->index();
}
public function thank()
{
$data['title']= 'Thank';
$this->load->view('header_view',$data);
$this->load->view('thank_view.php', $data);
$this->load->view('footer_view',$data);
}
public function registration()
{
$this->load->library('form_validation');
// field name, error message, validation rules
$this->form_validation->set_rules('user_name', 'User Name', 'trim|required|min_length[4]|xss_clean');
$this->form_validation->set_rules('email_address', 'Your Email', 'trim|required|valid_email');
$this->form_validation->set_rules('password', 'Password', 'trim|required|min_length[4]|max_length[32]');
$this->form_validation->set_rules('con_password', 'Password Confirmation', 'trim|required|matches[password]');
if($this->form_validation->run() == FALSE)
{
$this->index();
}
else
{
$this->user_model->add_user();
$this->thank();
}
}
public function logout()
{
$newdata = array(
'user_id' =>'',
'user_name' =>'',
'user_email' => '',
'logged_in' => FALSE,
);
$this->session->unset_userdata($newdata);
$this->session->sess_destroy();
$this->index();
}
}
지금까지는 그렇게 좋았습니다. 등록 페이지로 가면 등록 양식이 표시됩니다. 폼을 보내고 폼 유효성 검사를 통과하면 성공 페이지가 표시됩니다. 폼에 오류가 있으면 폼에 몇 가지 오류 메시지가 표시됩니다.
이제 내가하고 싶은 것은 데이터베이스입니다. 등록 양식에서 내 데이터베이스로 POST 값을 가져올 수있는 방법에 대한 아이디어가 있지만 사용자 이름이나 전자 메일이 이미 있는지 확인할 수있는 방법이 없습니다. 그렇다면 등록 양식에 오류를 표시하십시오. 양식에 등록 할 때 내 사이트의 활성 계정으로 사용자 이메일에 활성화를 어떻게 보내면됩니까?
class User_model extends CI_Model {
public function __construct()
{
parent::__construct();
}
function login($email,$password)
{
$this->db->where("email",$email);
$this->db->where("password",$password);
$query=$this->db->get("user");
if($query->num_rows()>0)
{
foreach($query->result() as $rows)
{
//add all data to session
$newdata = array(
'user_id' => $rows->id,
'user_name' => $rows->username,
'user_email' => $rows->email,
'logged_in' => TRUE,
);
}
$this->session->set_userdata($newdata);
return true;
}
return false;
}
public function add_user()
{
$data=array(
'username'=>$this->input->post('user_name'),
'email'=>$this->input->post('email_address'),
'password'=>md5($this->input->post('password'))
);
$this->db->insert('user',$data);
}
}
당신이 당신의 응용 프로그램에서 CI 검증 라이브러리를 확장 할 수있는 검증 존재/라이브러리는 자신의 기능을 가지고 폴더를 제공합니다. 그런 다음 CI 유효성 검사 기능과 동일한 방식으로 사용할 수 있습니다. DB 물건은 모델 규칙에서 수행해야합니다. 이메일을 보내려면 이메일 도우미를 사용해야합니다. – Nishanthan
@ 니스 어떻게 전자 메일 도우미를 사용하여 정품 인증을 보낼 수 있습니까? –
$ CI-> load-> library ('email'); $ CI-> email-> initialize ($ CI-> config-> item ('email_config')); $ CI-> email-> from ($ from, $ fromName); $ CI-> email-> to ($ to); $ CI-> email-> subject ($ subject); $ CI-> email-> message ($ body); $ CI-> email-> send(); – Nishanthan