Thursday 19 October 2017
3 komentar

Membuat Form Register Di Codeigniter Dengan Verifikasi Email



Hampir setiap website memiliki formulir pendaftaran untuk mengakses beberapa data situs web hanya kepada user terdaftar mereka. Formulir pendaftaran merupakan elemen penting dan merupakan langkah awal dalam pengembangan aplikasi web. Hari ini kita akan membuat formulir pendaftaran di CodeIgniter. dengan fungsi verifikasi email. Sebelum melangkah lebih jauh Anda harus tahu bagaimana CodeIgniter bekerja dan bagaimana melakukan operasi sederhana crud di Codeigniter. Di akhir tutorial ini, Anda dapat membuat formulir pendaftaran untuk situs web atau aplikasi web Anda.

Sekarang mari kita lihat bagaimana proses pendaftaran User berjalan :

1. Pertama, pengguna mengisi semua rincian dalam formulir 

2. Cek validasi data pengguna. 

3. setelah validasi berhasil, periksa apakah pengguna sudah terdaftar dengan kami atau tidak. 

4. Jika user tidak terdaftar maka masukkan data ke dalam database dan kirim email ke user email id dengan link validasi 

5. Pengguna harus mengklik link validasi untuk pendaftaran yang sukses. 6. akun pengguna sekarang aktif

Database 
Pertama, buat tabel database "user" di database Anda untuk menyimpan informasi pengguna. Di sini saya menggunakan tabel "user" untuk menyimpan data, Anda bisa memberi nama apapun yang Anda inginkan. Salin kode MySQL di bawah ini untuk membuat tabel di database Anda.

1:  create table `user`(`id` int(10) not null auto_increment, `fname` varchar(150) not null, `lname` varchar(150) not null, `email` varchar(150) not null, `password` varchar(150) not null, `status` varchar(100) not null, primary key(id));  


Sekarang konfigurasikan database ini di proyek CodeIgniter Anda ke database config dengan folder project CodeIgniter Anda.


Controller
Buat file controller "user.php" di direktori aplikasi / controller CodeIgniter Anda. Di controller ini, copy paste kode di bawah ini.

1:  <?php  
2:  defined('BASEPATH') OR exit('No direct script access allowed');  
3:  class User extends CI_Controller {  
4:   function __Construct(){  
5:    parent::__Construct();  
6:    $this->load->helper(array('form', 'url'));  
7:    $this->load->library(array('session', 'form_validation', 'email'));   
8:    $this->load->database();  
9:    $this->load->model('user_model');  
10:    }    
11:   public function index()  
12:   {  
13:    $this->load->view('registration');  
14:   }  
15:   public function registration()  
16:   {  
17:    //validate input value with form validation class of codeigniter  
18:    $this->form_validation->set_rules('fname', 'First Name', 'required');  
19:    $this->form_validation->set_rules('lname', 'Last Name', 'required');  
20:    $this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[user.email]');  
21:      $this->form_validation->set_rules('password', 'Password', 'required|min_length[6]|max_length[15]');  
22:      $this->form_validation->set_rules('confirmpswd', 'Password Confirmation', 'required|matches[password]');  
23:      //$this->form_validation->set_message('is_unique', 'This %s is already exits');  
24:      if ($this->form_validation->run() == FALSE)  
25:      {  
26:        $this->load->view('registration');  
27:      }  
28:      else  
29:      {  
30:        $fname = $_POST['fname'];  
31:        $lname = $_POST['lname'];  
32:        $email = $_POST['email'];  
33:        $password = $_POST['password'];  
34:        $passhash = hash('md5', $password);  
35:        //md5 hashing algorithm to decode and encode input password  
36:        //$salt    = uniqid(rand(10,10000000),true);  
37:     $saltid   = md5($email);  
38:     $status   = 0;  
39:     $data = array('fname' => $fname,  
40:         'lname' => $lname,  
41:         'email' => $email,  
42:         'password' => $passhash,  
43:         'status' => $status);  
44:     if($this->user_model->insertuser($data))  
45:     {  
46:      if($this->sendemail($email, $saltid))  
47:      {  
48:       // successfully sent mail to user email  
49:            $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Please confirm the mail sent to your email id to complete the registration.</div>');  
50:            redirect(base_url());  
51:      }  
52:      else  
53:      {  
54:       $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Please try again ...</div>');  
55:            redirect(base_url());  
56:          }  
57:     }  
58:     else  
59:     {  
60:      $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Something Wrong. Please try again ...</div>');  
61:            redirect(base_url());  
62:     }  
63:      }  
64:   }  
65:   function sendemail($email,$saltid){  
66:    // configure the email setting  
67:    $config['protocol'] = 'smtp';  
68:      $config['smtp_host'] = 'ssl://smtp.gmail.com'; //smtp host name  
69:      $config['smtp_port'] = '465'; //smtp port number  
70:      $config['smtp_user'] = 'faisalalamsyah1@gmail.com';  
71:      $config['smtp_pass'] = '********'; //$from_email password  
72:      $config['mailtype'] = 'html';  
73:      $config['charset'] = 'iso-8859-1';  
74:      $config['wordwrap'] = TRUE;  
75:      $config['newline'] = "\r\n"; //use double quotes  
76:      $this->email->initialize($config);  
77:      $url = base_url()."user/confirmation/".$saltid;  
78:      $this->email->from('faisalalamsyah1@gmail.com', 'CodesQuery');  
79:    $this->email->to($email);   
80:    $this->email->subject('Please Verify Your Email Address');  
81:    $message = "<html><head><head></head><body><p>Hi,</p><p>Thanks for registration with CodesQuery.</p><p>Please click below link to verify your email.</p>".$url."<br/><p>Sincerely,</p><p>CodesQuery Team</p></body></html>";  
82:    $this->email->message($message);  
83:    return $this->email->send();  
84:    }  
85:    public function confirmation($key)  
86:    {  
87:      if($this->user_model->verifyemail($key))  
88:      {  
89:        $this->session->set_flashdata('msg','<div class="alert alert-success text-center">Your Email Address is successfully verified!</div>');  
90:        redirect(base_url());  
91:      }  
92:      else  
93:      {  
94:        $this->session->set_flashdata('msg','<div class="alert alert-danger text-center">Your Email Address Verification Failed. Please try again later...</div>');  
95:        redirect(base_url());  
96:      }  
97:    }  
98:  }  

Pada kode di atas,pertama kita memuat kelas library dan help yang dibutuhkan di konstruktor dan pada kode diatas juga kita telah membuat tiga function registration(), sendemail() dan confirmation().

Pada kode diatas, CodeIgniter in-build function is.unique [user.email] cek email unik di database. Jika email sudah terdaftar maka fungsi ini akan menampilkan pesan error ke pengguna yang sudah ada email. validasi berhasil maka kami memasukkan data ke dalam database kami dan mengirim email ke id email yang terdaftar untuk mengkonfirmasi registrasi. Kami mengamankan password user dengan melakukan md5 () algoritma hashing. md5 () algoritma hashing memberi string unik yang sangat sulit untuk didekode tanpa menggunakan md5 (). Setelah berhasil mengirim email, kami menunjukkan pesan kepada pengguna untuk memverifikasi email.







Model
Buat file model di direktori aplikasi / model CodeIgniter Anda dan beri nama "user_model.php". Salin kode di bawah ini dan tempelkan ke file ini
1:  <?php  
2:  defined('BASEPATH') OR exit('No direct script access allowed');  
3:  class User_model extends CI_Model  
4:  {  
5:   public function insertuser($data)  
6:   {  
7:    return $this->db->insert('user', $data);  
8:   }  
9:   public function verifyemail($key)  
10:   {  
11:    $data = array('status' => 1);  
12:      $this->db->where('md5(email)', $key);  
13:      return $this->db->update('user', $data);  
14:   }  
15:  }  

Pada kode di atas, kita hanya menggunakan dua method insertuser() dan verifyemail(). Setelah berhasil validasi insertuser() method memasukkan data ke dalam database dan saat pengguna mengklik link yang dikirimkan kepadanya melalui email maka verifyemail() method mengecek email ke database dan kemudian mengupdate status dari baris tersebut dari 0 ke 1 yang menunjukkan keberhasilan pendaftaran pengguna.

View
Dalam tutorial ini, kita menggunakan bootstrap untuk membuat template form registrasi. Buat file di direktori aplikasi / view CodeIgniter Anda dan beri nama "registration.php" dan tempelkan kode di bawah ini
1:  <!DOCTYPE html>  
2:  <html lang="en">  
3:  <head>  
4:   <title>Registration</title>  
5:   <meta charset="utf-8">  
6:   <meta http-equiv="X-UA-Compatible" content="IE=edge">  
7:    <meta name="viewport" content="width=device-width, initial-scale=1">  
8:   <!-- Latest compiled and minified CSS -->  
9:   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" >  
10:   <style type="text/css">  
11:    .form-box{  
12:     max-width: 500px;  
13:     position: relative;  
14:     margin: 5% auto;  
15:    }  
16:   </style>  
17:  </head>  
18:  <body>  
19:   <div class="wrapper">  
20:    <div class="container">  
21:     <div class="row">  
22:      <div class="form-box">  
23:       <div class="panel panel-primary">  
24:        <div class="panel-heading text-center">  
25:         <h3>Register</h3>  
26:        </div>  
27:        <div class="panel-body">  
28:         <div class="row">  
29:           <div class="col-sm-12">  
30:             <?php echo $this->session->flashdata('msg'); ?>  
31:           </div>  
32:         </div>  
33:         <form action="<?php echo base_url(); ?>user/registration" method="post">  
34:          <div class="row">  
35:           <div class="col-sm-6">  
36:            <div class="form-group">  
37:                    <label class="control-label" for="fname">First Name</label>  
38:                      <div >  
39:                        <input type="text" class="form-control" id="fname" name="fname" placeholder="First Name" required="">  
40:                        <span class="text-danger"><?php echo form_error('fname'); ?></span>  
41:                      </div>  
42:                  </div>  
43:           </div>  
44:           <div class="col-sm-6">  
45:            <div class="form-group">  
46:                    <label class="control-label" for="fname">Last Name</label>  
47:                      <div >  
48:                        <input type="text" class="form-control" id="lname" name="lname" placeholder="Last Name" required="">  
49:                        <span class="text-danger"><?php echo form_error('lame'); ?></span>  
50:                      </div>  
51:                  </div>  
52:           </div>  
53:          </div>  
54:          <div class="form-group">  
55:                  <label class="control-label" for="pswd">Email</label>  
56:                    <div>  
57:                      <input type="email" class="form-control" id="email" name="email" placeholder="Email" required="">  
58:                      <span class="text-danger"><?php echo form_error('email'); ?></span>  
59:                    </div>  
60:                </div>  
61:                <div class="form-group">  
62:                  <label class="control-label" for="pswd">Password</label>  
63:                    <div>  
64:                      <input type="password" class="form-control" id="pswd" name="password" placeholder="Password" required="">  
65:                      <span class="text-danger"><?php echo form_error('password'); ?></span>  
66:                    </div>  
67:                </div>  
68:                <div class="form-group">  
69:                  <label class="control-label" for="cn-pswd">Confirm Password</label>  
70:                    <div>  
71:                      <input type="password" class="form-control" id="cn-pswd" name="confirmpswd" placeholder="Confirm Password" required="">  
72:                      <span class="text-danger"><?php echo form_error('confirmpswd'); ?></span>  
73:                    </div>  
74:                </div>  
75:                <div class="form-group">   
76:                  <div class="row">  
77:                    <div class="col-sm-offset-5 col-sm-3 btn-submit">  
78:                      <button type="submit" class="btn btn-success">Register</button>  
79:                    </div>  
80:                  </div>  
81:                </div>  
82:         </form>  
83:        </div>  
84:        <div class="panel-footer text-center">  
85:         <h5><a href="http://codesquery.com">Click Here for more tutorials</a></h5>  
86:        </div>  
87:       </div>  
88:      </div>  
89:     </div>  
90:    </div>  
91:   </div>  
92:   <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->  
93:    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>  
94:   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>  
95:  </body>  
96:  </html>  


Kode diatas sangat mudah dimengerti. Disini kita menggunakan kelas bootstrap sederhana untuk membuat template form registrasi kita. Kode diatas, akan terlihat seperti gambar di bawah ini.


Selamat mencoba dan semoga membantu proses belajar anda. Next Step kita akan membuat system Login dengan Session





3 komentar :

  1. waduh pas banget nih, ane juga lagi belajar framework codeigniter. thank you gan artikel nya untuk nambah ilmu cocok banget (y)

    ReplyDelete
  2. ini gan benar2 penting untuk pengembangan web, terutama untuk user frendly

    ReplyDelete
  3. Nice info gan bs dipraktekkan nih heheh

    ReplyDelete

 
Toggle Footer
Top