Tutorial CodeIgniter 8 - Membuat Verifikasi Email untuk proses Registrasi



Microtrafh - Membuat verifikasi email dengan codeigniter sebenarnya cukup mudah asalkan kita tau bagaimana konsepnya sistem dari email verification di CI. Disini saya akan menjelaskan bagaimana konsep verifikasi email untuk proses registrasi akun / account register. Registrasi email pada era website saat ini sangat penting, mungkin dipicu karena banyak akun yang dibuat dalam sebuah website tapi tidak dipakai oleh si pembuat menimbulkan website tersebut memiliki jumlah akun yang tidak sesuai dengan jumlah penggunanya, disamping itu penggunaan verifikasi ini dapat mengetahui jumlah pengguna sebenarnya. Ada banyak metode verifikasi bisa menggunakan email, nomer telepon, via code yang dikirim lewat surat ataupun menggunakan captha. Ini bertujuan untuk melihat seberapa minat dan tanggung jawab pembuat akun terhadap akun yang mereka buat.

Sekarang saya akan menjelaskan menggunakan metode email di CI. Sebelumnya saya akan menggunakan / melanjutkan dari data tutorial sebelumnya yaitu membuat login di codeingiter kamu bisa lihat tutorialnya disini dan download source codenya karena kita akan melanjutkan dari tutorial itu. Selain itu saya menggunakan library email bawaan codeigniter untuk mengirim email verifikasinya.

Langkah pertama kita tambahkan field 'active','email dan 'id' di table login sehingga strukturnya bertambah menjadi
  • id : int(11) AutoIncrement
  • username : varchar(50)
  • password : varchar(50)
  • nama : varchar (50)
  • active : int(11)
  • email : varchar(150)
Langkah selanjutnya kita akan buat view untuk form registrasinya, buat file v_register.php di application/views/ dan sisipkan syntax ini
<html>
<body>
  <?php echo form_open('register/submit'); ?>
  <table>
  <tbody>
   <tr>
    <td>Username</td>
    <td><input type="text" name="username" value="" size="50" /></td>
   </tr>
   <tr>
    <td>Password</td>
    <td><input type="password" name="password" value="" size="50" /></td>
   </tr>
   <tr>
    <td>Nama</td>
    <td><input type="text" name="nama" value="" size="50" /></td>
   </tr>
   <tr>
    <td>Email</td>
    <td><input type="text" name="email" value="" size="50" /></td>
   </tr>
   <tr>
    <td></td>
    <td><input type="submit" name="daftar" value="Daftar"/></td>
   </tr>
   
  </tbody>
<body>
</html>
setelah itu kita buat controllernya, buat file register.php di application/controllers lalu sisipkan syntax ini

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

//nama class harus sama dengan nama file dan diawali dengan huruf besar
class Register extends CI_Controller {

    public function index()
    {
        $this->load->view('v_register');
    }
 
}
sampai disini jika kamu membuka localhost/nama_app/index.php/register/ maka akan tampil form untuk registrasi selanjutnya kita akan menyimpan ke database dan mengirimkannya lewat email, buat function submit() dibawah function index() pada file controller register.php
 public function submit(){
    //passing post data dari view
    $this->load->helper(array('form', 'url'));
    $username = $this->input->post('username');
    $password = $this->input->post('password');
    $nama = $this->input->post('nama');
    $email = $this->input->post('email');
  
    //memasukan ke array
    $data = array(
     'username' => $username,
     'password' => $password,
     'nama' => $nama,
     'email' => $email,
     'active' => 0
     );
    //tambahkan akun ke database
    $this->load->model('m_register');
    $id = $this->m_register->add_account($data);
  
    //enkripsi id
    $encrypted_id = md5($id);
  
    $this->load->library('email');
    $config = array();
    $config['charset'] = 'utf-8';
    $config['useragent'] = 'Codeigniter';
    $config['protocol']= "smtp";
    $config['mailtype']= "html";
    $config['smtp_host']= "ssl://smtp.gmail.com";//pengaturan smtp
    $config['smtp_port']= "465";
    $config['smtp_timeout']= "400";
    $config['smtp_user']= "emailkamu@gmail.com"; // isi dengan email kamu
    $config['smtp_pass']= "password kamu"; // isi dengan password kamu
    $config['crlf']="\r\n"; 
    $config['newline']="\r\n"; 
    $config['wordwrap'] = TRUE;
    //memanggil library email dan set konfigurasi untuk pengiriman email
   
    $this->email->initialize($config);
    //konfigurasi pengiriman
    $this->email->from($config['smtp_user']);
    $this->email->to($email);
    $this->email->subject("Verifikasi Akun");
    $this->email->message(
     "terimakasih telah melakuan registrasi, untuk memverifikasi silahkan klik tautan dibawah ini<br><br>".
      site_url("register/verification/$encrypted_id")
    );
  
    if($this->email->send())
    {
       echo "Berhasil melakukan registrasi, silahkan cek email kamu";
    }else
    {
       echo "Berhasil melakukan registrasi, namu gagal mengirim verifikasi email";
    }
  
    echo "<br><br><a href='".site_url("login")."'>Kembali ke Menu Login</a>";
}
Pada syntax diatas kita memanfaatkan id hasil penyimpanan dan mengenkripsinya dengan md5, ini bertujuan untuk unik key pada link yang nanti dikirimkan ke email untuk memverifikasi akun tersebut, untuk pengaturan email kamu bisa isi sesuai pengaturan provider email, jika belum tau pengaturan smtp bisa dilihat disini
Sesudah itu kita buat model m_register.php di application/models/ dan sisipkan syntax ini
<?php
 
 class M_register extends CI_Model {
  
  function __construct()
  {
   parent::__construct();
  }
  
  function add_account($data)
  {
     $this->load->database();
     $this->db->insert('login',$data);
   
     return  mysql_insert_id();
  }
  
 }
?>
sampai proses ini kamu bisa melakukan registrasi dan pengiriman email namun kamu belum bisa memverifikasinya, maka dari itu kita akan kembali ke controller register.php dan buat function verification() lalu masukan syntax dibawah ini
public function verification($key)
{
 $this->load->helper('url');
 $this->load->model('m_register');
 $this->m_register->changeActiveState($key);
 echo "Selamat kamu telah memverifikasi akun kamu";
 echo "<br><br><a href='".site_url("login")."'>Kembali ke Menu Login</a>";
}
dan tambahkan function changeActiveState() di model m_register.php
function changeActiveState($key)
{
 $this->load->database();
 $data = array(
 'active' => 1
 );

 $this->db->where('md5(id)', $key);
 $this->db->update('mytable', $data);

 return true;
}
nah sekarang kita sudah dapat status active dari akun tersebut tapi belum menambahkan ke session, buka controller login_validation.php dan tambahkan email dan active di array sebelum dimasukan ke session di function check_database() sehingga menjadi seperti ini

    function check_database()
    {
        $this->load->library('session');
        //validasi kedua dengan cara mengecek database
        $username = $this->input->post('username');
        $password = $this->input->post('password');

        //query ke database dan memanggil model m_login
        $this->load->model('m_login');
        $result = $this->m_login->login($username,$password);

        //jika hasilnya ada pada maka masukan ke season field nama dan username dengan nama season : login
        if($result)
        {
            foreach($result as $row)
            {
                $sess_array = array(
                    'nama'=> $row->nama,
                    'username' => $row->username,
                    'active' => $row->active,
                    'email' => $row->email
                );

                $this->session->set_userdata('login', $sess_array);
            }
            return TRUE;
        }
        else
        {
            return FALSE;
        }
    }
dan juga ubah controller home.php dan tambahkan dua variable ini dibawah $data['nama'] = $session['nama'];
$data['email'] = $session['email'];
$data['active'] = $session['active'];
setelah itu buka model m_login.php dan tambahkan pada function login()
$this -> db -> select('username, password,nama');
menjadi
$this -> db -> select('username, password,nama,email,active');
pada proses ini semua telah selesai, untuk membuat fungsi tertentu jika akun sudah atau belum di verifikasi kita tambahkan logika if di view v_home.php sehingga v_home.php menjadi seperti ini

<html>
    <head>
        <title>Login Form</title>
    </head>
    <body>
        Selamat datang <?php echo $nama;?><!-- variable nama adalah array dengan nama = 'nama' menghasilkan variable di view dari controller tadi.-->
  <?php 
   if ($active==1)
    echo "Akun anda telah aktif";
   else
    echo "Akun belum aktif, silahkan cek email : <b>$email</b>";
  ?>
        <a href="login/logout">Logout</a> <!-- link untuk logout -->
    </body>
</html>
Proses pembuatan telah selesai, mari kita coba

Proses pembuatan akun

 
Setelah itu akan muncul tampilan ini


Lalu kita coba login tanpa verifikasi


Lalu kita cek email maka akan ada email masuk seperti ini


jika di klik maka akan tampil seperti ini



Setelah itu kita akan login kembali setelah verifikasi dan inilah hasilnya



 itulah tutorial dari saya tentang bagaimana cara membuat verifikasi email menggunakan CI
kamu bisa mendownload source codenya disini
Jangan lupa beri +1, share dan like sosmed kita untuk mendapatkan info terbaru seputar dunia tekno.

Tutorial Selanjutnya Cara menghilangkan index.php di CodeIgniter
Back To Top