Cara Membuat Contact Form Lengkap Dengan Codeigniter

Dalam tutorial kali ini, kita akan membagikan bagaimana cara membuat contact form atau form konta...
Penulis
Admin
Kategori
Tutorial
Estimasi
4 menit baca
Dilihat
1.2K
Posting
21 Jul 2022
Cara Membuat Contact Form Lengkap Dengan Codeigniter Dalam tutorial kali ini, kita akan membagikan bagaimana cara membuat contact form atau form kontak dengan mengunakan framework PHP Codeigniter, kita gunakan framework ini dikarenakan pengunaannya yang simple Cara Membuat Contact Form Lengkap Dengan Codeigniter
2022-11-25

Dalam membuat sebuah website dibutuhkan beberapa halaman atau page untuk menampilkan konten dari website tersebut. Salah satunya adalah form kontak, contact form atau form kontak sangat diperlukan dalam sebuah website, karena untuk menghubungkan antara user dan pemilik website dengan mengunakan contact form ini.

Fungsi dari contact form ini agar pengunjung website dapat mengirim pertanyaan atau lainnya kepada pemilik website sebagai pelayanan yang diberikan kepada pengunjung dalam mengunakan websitenya.

 

Membuat Contact Form Email Dengan Codeigniter

 

Dalam beberapa kasus, pertanyaan yang diajukan oleh pengguna ke pemilik website biasanya akan dikirim melalui script khusus agar mendapatkan email dari pengguna melalui halaman contact khusus. 

Dalam tutorial kali ini, kita akan membagikan bagaimana cara membuat contact form atau form kontak dengan mengunakan framework PHP Codeigniter, kita gunakan framework ini dikarenakan pengunaannya yang simple dan bisa mengunakan library dari bawaan maupun dari pihak ketiga dan juga terdapat fitur validasi yang dimana kita tidak perlu membuatnya dari awal, cukup mengunakan fitur validasi dari frameworknya saja untuk memastikan data yang diinput oleh user.

Beberapa contoh dan penjelasan, nanti dari masing-masing baris kode akan dilampirkan, mari kita mulai.

 

 

1. Membuat contact form dengan Codeigniter

Membuat contact form dalam codeigniter cukup mudah, dan juga dapat diimplementasikan kedalam codeigniter 3 dan codeigniter 4, cara pengunaannya sama saja, yang membedakan codeigniter 3 dan 4 hanya syntax kodenya saja namun selebihnya sama. Dalam tutorial kali ini kita akan mencontohkan dalam codeigniter 3.

Langsung saja, untuk memulai kita hanya menambahkan beberapa file baru yang mencakup controller, view dan beberapa tambahan library agar mengirim email berfungsi.

Dalam contoh pembuatan contact form disini, data-data user yang dikirim tidak akan masuk kedalam database kalian, namun akan dikirim langsung kedalam email kalian dengan mengunakan gmail, beberapa yang dibutuhkan adalah email aktif sebagai email server pengirim bisa mengunakan email pribadi atau email bisnis.

 

2. Persiapan

Langsung saja kita buat file baru di folder controller, kita beri nama contact.php dan membuat tiga function yaitu function __construct(), public function index() dan private function send_email().

Sebelum masuk kedalam intinya, kita jelaskan dulu ada saja yang terdapat didalam function-function tersebut. Didalam function __construct() ini kita load beberapa library untuk mengaktifkan fitur validasi ketika user menginput data didalam form yang disediakan.

Lalu berikutnya adalah public function index() yang terkait data yang akan ditampilkan ke halaman front-end kontak website, memberikan status email berhasil terkirim atau tidak, memproses data-data didalam form kedalam function inti, untuk mengirim data yang diinputkan user ke email kita.

Dan terakhir private function send_email() yang berfungsi untuk memproses data dan merupakan function inti untuk mengirim email. Kita akan buat mengunakan library bawaan dan library kirim email dari pihak ketiga.

 

3. Contoh dengan mengunakan library bawaan Codeigniter

Beberapa baris syntax kode contact.php didalam folder controller dan berikut adalah cara penggunaan library email bawaan codeigniter:

<?php defined("BASEPATH") or exit("No direct script access allowed");

class Contact extends CI_Controller
{
    function __construct()
    {
        parent::__construct();

        // Load form validation library
        $this->load->library("form_validation");
    }

    public function index()
    {
        $data = $formData = [];

        // data didalam form kontak akan dikirim dan diproses disini
        if ($this->input->post("contactSubmit")) {
            // mengambil data dari form
            $formData = $this->input->post();

            // form validasi
            $this->form_validation->set_rules("name", "Name", "required");
            $this->form_validation->set_rules(
                "email",
                "Email",
                "required|valid_email"
            );
            $this->form_validation->set_rules("subject", "Subject", "required");
            $this->form_validation->set_rules("message", "Message", "required");

            // proses jika validasi tidak ada error
            if ($this->form_validation->run() == true) {
                $mailData = [
                    "name" => $formData["name"],
                    "email" => $formData["email"],
                    "subject" => $formData["subject"],
                    "message" => $formData["message"],
                ];

                // memproses data kedalam function sendEmail
                $send = $this->sendEmail($mailData);

                // menampilkan status
                if ($send == true) {
                    // unset data
                    $formData = [];

                    $data["status"] = [
                        "type" => "success",
                        "msg" => "Berhasil kirim email.",
                    ];
                } else {
                    $data["status"] = [
                        "type" => "error",
                        "msg" => "Gagal kirim email.",
                    ];
                }
            }
        }

        // mengirimkan data post ke view
        $data["postData"] = $formData;

        $this->load->view("view_contact", $data);
    }

    private function sendEmail($mailData)
    {
        // load codeigniter email library
        $this->load->library("email");

        // Mail config
        $to = "[email protected]";
        $from = "[email protected]";
        $fromName = "Membuat contact form dengan Codeigniter";
        $mailSubject = "Terdapat email baru dari: " . $mailData["name"];

        // Mail content
        $mailContent = "
            <h2>Email baru dari penerima</h2>
            <p><b>Name: </b>$mailData['name']</p>
            <p><b>Email: </b>$mailData['email']</p>
            <p><b>Subject: </b>$mailData['subject']</p>
            <p><b>Message: </b>$mailData['message']</p>
    "   ;

        $this->email->to($to);
        $this->email->from($from, $fromName);
        $this->email->subject($mailSubject);
        $this->email->message($mailContent);

        // Send email & return status
        return $this->email->send() ? true : false;
    }
}

Untuk mengkonfigurasi mail server, kalian bisa cek didalam folder config/mail.php, ini berlaku untuk codeigniter 3 atau codeigniter 4, sesuaikan dengan versi codeigniter kalian. jika data masih kosong bisa tambahkan beberapa baris kode untuk mengkonfigurasi email kalian.

<?php

$this->load->library('email');

//configure email settings
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = 465;
$config['smtp_user'] = '[email protected]'; // email id
$config['smtp_pass'] = 'password'; // email password
$config['mailtype'] = 'html';
$config['wordwrap'] = TRUE;
$config['charset'] = 'iso-8859-1';
$config['newline'] = "\r\n";

$this->email->initialize($config);

 

atau bisa juga dengan alternatif lain dengan menambahkan beberapa baris line kode config tambahan kedalam function sendEmail().

 

4. Mengunakan library email third party atau pihak ketiga

Contoh dari controller diatas adalah dengan mengunakan library bawaan dari codeigniter, bagaimana jika kita mengunakan library lain? disini saya akan mencontohkannya dengan mengunakan library PHPMailer, kalian bisa download library tersebut di github.com

 

PHPMailer Library

 

Buat folder baru terlebih dahulu didalam folder third party dengan nama folder PHPMailer, setelah selesai mendownload library tersebut dan sudah diextract, cari beberapa folder dan file didalam folder src berikut:

  • Folder language
  • Exception.php
  • get_oauth_token.php
  • OAuth.php
  • PHPMailer.php
  • POP3.php
  • SMTP.php

Pindahkan kedalam folder PHPMailer yang tadi dibuat.

Setelah semua sudah siap, buat file PHP baru didalam folder libraries codeigniter, dengan nama PHPMailer_load.php, silahkan copy paste code dibawah kedalam file yang dibuat tadi, berikut script kodenya:

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

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

class PHPMailer_Load
{
  public function __construct(){
    log_message('Debug', 'PHPMailer class is loaded.');
  }

  public function load(){
    require_once APPPATH.'third_party/PHPMailer/Exception.php';
    require_once APPPATH.'third_party/PHPMailer/PHPMailer.php';
    require_once APPPATH.'third_party/PHPMailer/SMTP.php';
    
    $mail = new PHPMailer;
    return $mail;
  }
}

Setelah semua siap, kita load library tersebut kedalam controller contact form kita, perubahannya hanya terletak dalam private function send_mail() saja, berikut adalah contohnya: 

private function sendEmail($mailData){

    // load library
    $this->load->library('PHPMailer_load'); //Load Library PHPMailer
    $mail = $this->phpmailer_load->load(); // Mendefinisikan Variabel Mail
    
    // mail config
    $mail->isSMTP();  // Mengirim menggunakan protokol SMTP
    $mail->Host = 'smtp.gmail.com'; // Host dari server SMTP
    $mail->SMTPAuth = true; // Autentikasi SMTP
    $mail->Username = '[email protected]';
    $mail->Password = 'password';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    // setup send email
    $mail->setFrom($mailData['email'], $mailData['name']); // Sumber email
    $mail->addAddress('[email protected]','Tutorial contact form sederhana dengan Codeigniter'); // Masukkan alamat email dari variabel $email
    $mail->Subject = "Ada kiriman email dari: $mailData['name']"; // Subjek Email
    $mail->msgHtml("<h3>Informasi pengirim</h3>
    <b>Name: </b> $mailData['name']<br><br>
    <b>Email: </b> $mailData['email']<br><br>
    <b>Subjek: </b> $mailData['subject']<br><br>
    <b>Pesan: </b> $mailData['message']"); // Isi email dengan format HTML
 
    if (!$mail->send()) {
        return false;
    } else {
        return true;
    } 
}

 

5. Membuat file view untuk menampilkan data form

Setelah kita selesai membuat file controller contact.php, selanjutnya kita buat untuk tampilan viewnya, dimana berisi beberapa tag html dan form untuk mengirimkan data seperti nama, email user, subjek dan pesan. Semua data tersebut nantinya akan dikirim kedalam controller contact.php dan data akan diproses.

Silahkan buat file baru didalam folder view yang kita beri nama view_contact.php. Agar form kita aman dari peretas, disarankan untuk mengaktifkan fitur CSRF. Disini kita akan memberikan contoh form dengan metode keamanan CSRF.

<div class="content-form">
  <!-- Display the status message -->
  <?php if(!empty($status)){ ?>
     <div class="status <?php echo $status['type']; ?>"><?php echo $status['msg']; ?></div>
  <?php } ?>
 
  <!-- Contact form & CSRF -->
  <?php echo form_open(base_url().'contact', array('method' => 'POST')); ?>
    <div class="form-cw">
      <h2>Contact Us</h2>
      <button type="submit" name="contactSubmit" class="frm-submit" value="Submit">
        <img src="<?php echo base_url('assets/images/mail.png'); ?>">
      </button>
      <div class="clear"></div>
    </div>
   
    <div class="input-group">
      <input type="text" name="name" value="<?php echo !empty($postData['name']) ? $postData['name'] : ''; ?>" placeholder="Isi nama">
      <?php echo form_error('name','<p class="field-error">','</p>'); ?>
    </div>
   
    <div class="input-group">
      <input type="email" name="email" value="<?php echo !empty($postData['email']) ? $postData['email'] : ''; ?>" placeholder="isi email">
      <?php echo form_error('email','<p class="field-error">','</p>'); ?>
    </div>
   
    <div class="input-group">
      <input type="text" name="subject" value="<?php echo !empty($postData['subject']) ? $postData['subject'] : ''; ?>" placeholder="Subjek pertanyaan">
      <?php echo form_error('subject','<p class="field-error">','</p>'); ?>
    </div>
   
    <div class="input-group">
      <textarea name="message" placeholder="Pesan anda"><?php echo !empty($postData['message']) ? $postData['message'] : ''; ?></textarea>
      <?php echo form_error('message','<p class="field-error">','</p>'); ?>
    </div>
   
    <input type="submit" name="contactSubmit" class="frm-submit" value="Submit">
  <?php echo form_close(); ?>
</div>

Membuat contact form sederhana dengan mengunakan codeigniter sudah berhasil dan mudah, dengan mengunakan library bawaan dari codeigniter itu sendiri atau mengunakan library dari pihak ketiga. Contact form ini bisa juga dikombinasikan dengan JQuery Ajax agar tidak merefresh halaman saat submit data.

Jika mengunakan library bawaan tidak berhasil, silahkan coba mengunakan library email dari pihak ketiga.

 

Kesimpulan

Dengan contact form yang tersedia didalam website kalian, akan menambahkan sisi profesionalitas dari website kalian dan akan mempermudah visitor atau pengguna berkomunikasi dengan kalian.

Share