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 :

1Modifikasi 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.

2Membuat 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.

3Uji coba

Berikut adalah tampilan email notifikasi beserta penambahan link konfirmasinya :

  • Tampilan email beserta link konfirmasi :
Mail dengan link konfirmasi

Mail dengan link konfirmasi

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

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!

 

14 thoughts on “Membuat Form Registrasi dan Sistem Aktivasi Menggunakan PHP Mailer – Day 3

  1. Kok muncul ini kenapa ya?
    SMTP ERROR: Password command failed: 535 Incorrect authentication data 2014-05-05 09:25:43 CLIENT -> SERVER: QUIT SMTP connect() failed. Oops, Mailer Error: SMTP connect() failed.

  2. Mas, saya sudah coba tapi ada error seperti ini

    “sukses db
    SMTP connect() failed. Oops, Mailer Error: SMTP connect() failed.”

    DImana ya letak kesalahannya ? Mohon bantuannya . Terimakasih banyak.

  3. Oops, Mailer Error: SMTP connect() failed.
    saya dapat pesan tersebut kenapa ya?
    saya pakai idhostinger hostingnya..

  4. Makasih Kang Huda Infonya ,
    saya sudah coba tapi kok email nya gak masuk ke Gmaill saya yaa?
    saya pakai Email dari hosting web saya port nya say rubah dari 25 ke 465 pun masih gak masuk juga email nya ke email gmail yg diinput ??

    Kenapa yaa mass ??

    1. Saya lihat struktur di framework tersebut cukup bagus dan kemungkinan bisa di inject dengan phpmailer.
      Caranya :

      1. Copas PHPMailer.php ke php folder
      2. Buat file baru di php folder dgn nama apapun
      3. Include PhpMailer.php ke file baru tersebut, dan buat script untuk melakukan request mail.

      Bisa dicoba dahulu mas.

  5. saya sudah mengaplikasinya di hosting dgn konfig dari hosting dapurhosting.com
    Incoming Server: mail.lovanoz.com
    IMAP Port: 143
    POP3 Port: 110
    Outgoing Server: mail.lovanoz.com
    SMTP Port: 26
    Kalo input form sudah masuk ke database, tapi pada saat kirim email tidak ada pesan error ataupun apa ? tapi berulang kali di coba tidak terkirim ke email, gimana cara perintah cek fungsi phpmailer nya bekerja tidak nya

    trima kasih

  6. saya mau ngubah variabelnya gan,, email dijadikan nohp.. jadi nama dan no hp.. apa yang harus diubah atau ditambah coding gan… mohon bantuannya

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.