Membuat Form Registrasi dan Sistem Aktivasi Menggunakan PHP Mailer – Day 3

Artikel Day 2 sebelumnya telah menjelaskan dan memberikan sedikit pengetahuan bagaimana melakukan pengiriman email secara otomatis setelah user melakukan pendaftaran di form. Untuk artikel tutorial kali ini, penulis akan melakukan sedikit modifikasi di beberapa bagian untuk menambahkan modul sistem aktivasi.

Cara kerja sistem aktivasi pendaftaran ini cukup sederhana :

  1. Jika user mendaftar untuk pertama kalinya, kolom “confirm” pada database otomatis bernilai “no“. Itu artinya user belum melakukan registrasi
  2. Sistem akan mengirimkan link notifikasi jika user telah melakukan pengisian form.
  3. Link notifikasi ini berisi id unique,
  4. Jika link notifikasi di klik, user akan dibawa ke halaman confirm.php, selanjutnya sistem akan melakukan pemrosesan kolom “confirm” di database menjadi “yes“.

Mari kita lanjutkan tutorial Day 3. Silahkan ikuti tutorial berikut :

Modifikasi mail.php

File mail.php yang telah dibuat sebelumnya telah berhasil kita manfaatkan untuk melakukan proses input data ke database dan mengirimkan email notifikasi (tanpa link konfirmasi). Modifikasi kali ini bertujuan agar file mail.php dapat memproses data sekaligus mengirim email notifikasi beserta link konfirmasinya.

Berikut adalah source code mail.php yang bisa Anda tulis :

<?php
error_reporting(0);

function rand_string( $length ) {
	$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";	

	$size = strlen( $chars );
	for( $i = 0; $i < $length; $i++ ) {
		$str .= $chars[ rand( 0, $size - 1 ) ];
	}

	return $str;
}

include 'config.php';
$nama = $_POST['nama'];
$email = $_POST['email'];
$id = rand_string( 10 );
if (!isset($nama)) {
echo "Lengkap form";
}
elseif (!isset($email)) {
	echo "Lengkapi form";
} 
else {

	// cek apakah email sudah terdaftar
	$query = "SELECT email FROM user WHERE email='$email'";
	$find = mysql_query($query);

	if ($find && mysql_num_rows($find) > 0) {
		echo "user telah terdaftar";
	}
	else {
		$add = "insert into user set id='$id', name='$nama', email='$email', confirm='no'";
		$set = mysql_query($add);
		if ($set) {
			echo "sukses db <br>";
		} else {
			echo "gagal database <br>";
		}
		require_once('library/class.phpmailer.php'); //menginclude librari phpmailer

		$mail             = new PHPMailer();
		$body             = 
		"<body style='margin: 10px;'>
		<div style='width: 640px; font-family: Helvetica, sans-serif; font-size: 13px; padding:10px; line-height:150%; border:#eaeaea solid 10px;'>
		<br>
		<strong>Terima Kasih Telah Mendaftar</strong><br>
		<b>Nama Anda : </b>".$nama."<br>
		<b>Email : </b>".$email."<br>
		<b>URL Konfirmasi : </b>http://domain-anda.com/mailer/confirm.php?id=".$id."<br>
		<br>
		</div>
		</body>";
		$body             = eregi_replace("[\]",'',$body);
		$mail->IsSMTP(); 	// menggunakan SMTP
		$mail->SMTPDebug  = 1;   // mengaktifkan debug SMTP

		$mail->SMTPAuth   = true;   // mengaktifkan Autentifikasi SMTP
		$mail->Host 	= 'mail.mkhuda.com'; // host sesuaikan dengan hosting mail anda
		$mail->Port       = 25;  // post gunakan port 25
		$mail->Username   = "hello@mkhuda.com"; // username email akun
		$mail->Password   = "coretwoduo";        // password akun

		$mail->SetFrom('hello@mkhuda.com', 'Hello Mkhuda');

		$mail->Subject    = "Hello";
		$mail->MsgHTML($body);

		$address = $email; //email tujuan
		$mail->AddAddress($address, "Hello (Reciever name)");

		if(!$mail->Send()) {
			echo "Oops, Mailer Error: " . $mail->ErrorInfo;
		} else {
			echo "Mail Sukses";
		}
	}

}

?>

Penjelasan :

  • Penambahan kode ada di baris 52, dimana berisi alamat url link beserta id yang di-create otomatis berdasarkan id user yang telah mendaftar.
  • Untuk meneruskannya ke email admin, pembaca bisa melakukan modifikasi sendiri pada source diatas di baris 77.

Membuat halaman confirm (konfirmasi)

Sebelumnya kita telah membuat file php bernama confirm.php, seperti yang telah kita edit pada file mail.php bahwa file ini akan memproses link konfirmasi yang dikirimkan ke email user. Berikut adalah file confirm.php yang penulis buat :

<?php
include 'config.php';
$confirm = $_GET['id'];
if (isset($confirm)) {
	$query = "SELECT id FROM user WHERE id='$confirm'";
	$find = mysql_query($query);

	if ($find && mysql_num_rows($find) > 0) {
		$update = "update user set confirm='yes' where user.id='$confirm'";
		$set = mysql_query ($update);
		if ($set) {
			echo "Konfirmasi sukses";
		}
	} else {
		echo "ID tidak dikenali";
	}
} else {
	echo "Nothing to do";
}

?>

Penjelasan kode :

  • Baris nomor 3 kita membuat variabel $confirm, yang berasal dari $_GET[‘id’] (lihat url link konfirmasi).
  • Baris 5 dan 6, melakukan pengecekan pada tabel database apakah ID tersebut ada di dalam data.
  • Jika data ID tersedia, maka baris 8 sampai 13 akan memproses dengan mengeset data confirm “no” menjadi “yes“.
  • Jika data ID tidak ada, maka akan ada notifikasi error.

Uji coba

Berikut adalah tampilan email notifikasi beserta penambahan link konfirmasinya :

  • Tampilan email beserta link konfirmasi :

Mail dengan link konfirmasi

  • Informasi tabel database dari kolom “confirm” berubah menjadi “yes“, setelah dilakukan konfirmasi.

Cek konfirmasi di database

Dengan berakhirnya tutorial Form Registrasi dan Sistem Aktivasi Day 3, maka berakhirlah rangkaian day to day tutorial sederhana namun cukup kompleks mengenai PHP Mailer ini. Silahkan uji coba sistem yang baru saja pembaca buat, sekaligus implementasikan dengan sebaik mungkin.

Berikut adalah link tutorial day to day penulis mengenai PHP Mailer ini :

  1. Day 1 (Hari Pertama)Untuk persiapan class, database dan konfigurasi sistem
  2. Day 2 (Hari Kedua)Pembuatan form dan sistem
  3. Day 3 (Hari Ketiga) – Implementasi PHP Mailer untuk aktivasi melalui email

Terima kasih. Semoga bermanfaat, Caaooo ! 😀

Muhammad K Huda: A non exhausted blogger person within fullstack engineer (spicy food), open source religion, self-taught driver and maybe you know or don't like it. Simply says, Hello from Me!
Related Post