Yak, langsung saja
Disini saya asumsikan pembaca sudah paham basic dari CodeIgniter terutama konsep OOP
1. Buat tablenya
CREATE TABLE IF NOT EXISTS tbl_user
(
id_user INT(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id_user),
email VARCHAR (30),
username VARCHAR(12),
password VARCHAR(32),
status ENUM ('Aktif','Tidak Aktif') DEFAULT 'Tidak Aktif'
);
(
id_user INT(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id_user),
email VARCHAR (30),
username VARCHAR(12),
password VARCHAR(32),
status ENUM ('Aktif','Tidak Aktif') DEFAULT 'Tidak Aktif'
);
2. Load library email
$autoload['libraries'] = array('email');
atau bisa langsung di controller atau modelnya dengan "$this->load->library('email');"3. Controller
public function simpanUser() {
$data = array(
'email' => $this->input->post('email'),
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password'))
);
if ($this->nuroaki->_simpanUser($data)) {
if ($this->nuroaki->send($this->input->post('email'),$this->input->post('username'))) {
$this->session->set_flashdata(md5('sukses'), "Anda berhasil melakukan registrasi, silahkan periksa pesan masuk email Anda untuk mengaktifkan akun yang baru Anda buat");
// redirect ke halaman login
redirect('/url/login');
} else {
$this->session->set_flashdata(md5('gagal'), "Terjadi kesalahan dalam melakukan registrasi, silahkan coba lagi!");
// redirect ke halaman register, untuk melakukan register ulang
redirect('/url/register');
}
}
}
public function verify($hash=NULL) {
if ($this->nuroaki->verifyEmail($hash)) {
$this->session->set_flashdata(md5('sukses'), "Email sukses diverifikasi!");
redirect('/url/login');
} else {
$this->session->set_flashdata(md5('notification'), "Email gagal terverifikasi");
redirect('/url/register');
}
}
$data = array(
'email' => $this->input->post('email'),
'username' => $this->input->post('username'),
'password' => md5($this->input->post('password'))
);
if ($this->nuroaki->_simpanUser($data)) {
if ($this->nuroaki->send($this->input->post('email'),$this->input->post('username'))) {
$this->session->set_flashdata(md5('sukses'), "Anda berhasil melakukan registrasi, silahkan periksa pesan masuk email Anda untuk mengaktifkan akun yang baru Anda buat");
// redirect ke halaman login
redirect('/url/login');
} else {
$this->session->set_flashdata(md5('gagal'), "Terjadi kesalahan dalam melakukan registrasi, silahkan coba lagi!");
// redirect ke halaman register, untuk melakukan register ulang
redirect('/url/register');
}
}
}
public function verify($hash=NULL) {
if ($this->nuroaki->verifyEmail($hash)) {
$this->session->set_flashdata(md5('sukses'), "Email sukses diverifikasi!");
redirect('/url/login');
} else {
$this->session->set_flashdata(md5('notification'), "Email gagal terverifikasi");
redirect('/url/register');
}
}
4. Model
public function _simpanUser($data) {
// gunakan return untuk mengembalikan nilai ke controller yang nantinya akan dioper lagi ke proses email
return $this->db->insert('tbl_user', $data);
}
public function sendMail($email,$username) {
$from_email = 'ahmad.uji1902@gmail.com'; // ganti dengan email kalian
$subject = 'Verify Your Email Address';
$message = 'Dear '. $username .',<br /><br />
Please click on the below activation link to verify your email address.<br /><br />
http://urlwebsitenya/action/verify/' . md5($email) . '<br /><br /><br />
Thanks<br />
Nuroaki';
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com'; // sesuaikan dengan host email
$config['smtp_timeout'] = '7';
$config['smtp_port'] = '465'; // sesuaikan
$config['smtp_user'] = $from_email;
$config['smtp_pass'] = 'password'; // ganti dengan password email
$config['mailtype'] = 'html';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
$this->email->initialize($config);
$this->email->from($from_email, 'Nuroaki');
$this->email->to($email);
$this->email->subject($subject);
$this->email->message($message);
// gunakan return untuk mengembalikan nilai yang akan selanjutnya diproses ke verifikasi email
return $this->email->send();
}
public function verify($key) {
// nilai dari status yang berawal dari Tidak Aktif akan diubah menjadi Aktif disini
$data = array('status' => "Aktif");
$this->db->where('md5(email)', $key);
return $this->db->update('tbl_user', $data);
}
5. Routes// gunakan return untuk mengembalikan nilai ke controller yang nantinya akan dioper lagi ke proses email
return $this->db->insert('tbl_user', $data);
}
public function sendMail($email,$username) {
$from_email = 'ahmad.uji1902@gmail.com'; // ganti dengan email kalian
$subject = 'Verify Your Email Address';
$message = 'Dear '. $username .',<br /><br />
Please click on the below activation link to verify your email address.<br /><br />
http://urlwebsitenya/action/verify/' . md5($email) . '<br /><br /><br />
Thanks<br />
Nuroaki';
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com'; // sesuaikan dengan host email
$config['smtp_timeout'] = '7';
$config['smtp_port'] = '465'; // sesuaikan
$config['smtp_user'] = $from_email;
$config['smtp_pass'] = 'password'; // ganti dengan password email
$config['mailtype'] = 'html';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$config['newline'] = "\r\n";
$config['crlf'] = "\r\n";
$this->email->initialize($config);
$this->email->from($from_email, 'Nuroaki');
$this->email->to($email);
$this->email->subject($subject);
$this->email->message($message);
// gunakan return untuk mengembalikan nilai yang akan selanjutnya diproses ke verifikasi email
return $this->email->send();
}
public function verify($key) {
// nilai dari status yang berawal dari Tidak Aktif akan diubah menjadi Aktif disini
$data = array('status' => "Aktif");
$this->db->where('md5(email)', $key);
return $this->db->update('tbl_user', $data);
}
Link untuk ke verifikasi, action adalah nama controller, dan verify methodnya
$route['verify/(:any)'] = "/action/verify/$1";
Semoga membantu :)
nuroaki itu nama apa?
ReplyDeletenama bintang JAV ^_^
DeleteBintang JAV njirr 😂 itu nama modelnya pak.
ReplyDeletekok saya msh blm bisa ya di hosting maupun di localhost
ReplyDeleteitu routes itu maksdnya gmna?
ReplyDelete