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 :
- Jika user mendaftar untuk pertama kalinya, kolom “confirm” pada database otomatis bernilai “no“. Itu artinya user belum melakukan registrasi
- Sistem akan mengirimkan link notifikasi jika user telah melakukan pengisian form.
- Link notifikasi ini berisi id unique,
- 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 :
- Informasi tabel database dari kolom “confirm” berubah menjadi “yes“, setelah dilakukan konfirmasi.
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 :
- Day 1 (Hari Pertama) – Untuk persiapan class, database dan konfigurasi sistem
- Day 2 (Hari Kedua) – Pembuatan form dan sistem
- Day 3 (Hari Ketiga) – Implementasi PHP Mailer untuk aktivasi melalui email
Terima kasih. Semoga bermanfaat, Caaooo ! 😀
Itu Cara ngedit Mail Php nya Gimana Gan ?!
Mau nambahin variabel gitu mas ?
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.
Kalau bikin lupa password via email gimana ya? Terimakasih 🙂
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.
smtp-nya pakai hosting atau dari google mbak ?
Oops, Mailer Error: SMTP connect() failed.
saya dapat pesan tersebut kenapa ya?
saya pakai idhostinger hostingnya..
beberapa penyedia hosting sekarang tidak memperkenankan penggunaan smtp spertinya
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 ??
Halo mas,
Jika php mailer di injek kedalam framework ini : https://github.com/derek-lu/Entitlement-Admin
Ada Grup (Grup 1, Grup 2, Grup 3, Grup 4, Grup 5)
Ada User yang terkelompok dalam Grup
Ada Product Id yang terkelompok ke Grup & User.
Itu Cara Injectnya gimana mas ?
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.
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
coba mas dedy pakai gmail dulu
$mail->SMTPAuth = true;
$mail->Host = 'smtp.gmail.com';
$mail->Port = 465;
$mail->SMTPSecure = 'ssl';
saya mau ngubah variabelnya gan,, email dijadikan nohp.. jadi nama dan no hp.. apa yang harus diubah atau ditambah coding gan… mohon bantuannya