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

Pada artikel Day 1 beberapa hari yang lalu, kita telah mempersiapkan konfigurasi database, dan persiapan class PHPMailer. Untuk artikel Day 2, penulis akan mencoba membuat tampilan form dan juga sistem Mailer secara sederhana (belum termasuk aktivasi).

Sebelum memulai tutorial, penulis mengingatkan untuk mengikuti tutorial sebelumnya disini, agar pembaca dapat mengikuti langkah demi langkah secara beruntun. Berikut adalah lanjutannya :

1File yang diperlukan

Pada hari pertama (Day 1), kita telah memasukkan library PHPMailer ke dalam sistem root aplikasi web kita. Kali ini kita akan membuat beberapa file yang nantinya akan mendukung kerja dari sistem. File yang telah dibuat dapat langsung diupload ke server hosting melalui FTP dan mengeditnya menggunakan editor.

File yang Diperlukan

File yang Diperlukan

Berikut adalah file yang dibutuhkan :

  • Index.php, Untuk membuat tampilan utama form pendaftaran, terdiri dari 2 input yaitu input nama dan email.
  • Config.php, File yang dipergunakan untuk konfigurasi sistem aplikasi dengan database MySQL
  • Mail.php, Inilah file yang akan memproses hasil inputan form dan memasukkannya ke database. File ini juga berfungsi sebagai controller pengirim email dengan menginclude library yang telah kita taruh di root sistem aplikasi
  • Confirm.php, file yang akan dipanggil saat user melakukan klik link aktivasi yang dikirim di email pendaftar. (Tutorial Day 3)

2Membuat Halaman Index

Halaman index kita merupakan halaman utama form registrasi. Form ini terdiri dari 2 input yakni input nama dan input email beserta tombol submit. Sebenarnya pembaca bisa membuat sendiri tampilan maupun source form di bagian ini sesuai kehendak. Berikut adalah script index.php yang bisa pembaca tulis :

<html>
<head>
	<meta name="viewport" content="width=device-width">
	<title>PHP Mailer by Mkhuda</title>
	<meta name="description" content="PHP Mailer by Mkhuda">
	<link href="http://fonts.googleapis.com/css?family=Open+Sans+Condensed:700,300" rel="stylesheet" type="text/css">
	<link href="style.css" type="tex/css" rel="stylesheet" media="all">
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

</head>	
<body>

<div id="form">
	<form method="post" action="mail.php" class="form-horizontal">
	<label class="detik">Nama Anda</label><br>
	<input class="input" type="text" name="nama" placeholder="Masukkan Nama Angka"><br>
    <label class="detik">Nama Email Anda</label><br>
    <input class="input" type="text" name="email" placeholder="Masukkan Email Anda"><br>
	<button type="submit" name="submit" class="btn">Submit</button>
</form>
</div>
<div id="mk-link">
	<a class="link" href="http://mkhuda.com" title="Mkhuda Blog">Back to Site</a>
</div>
</body>
</html>

CSS bisa pembaca sesuaikan sendiri.

3File Konfigurasi Database

Config.php bertugas untuk menjembatani aplikasi web mailer kita dengan database MySQL yang sebelumnya telah dibuat pada Day 1. Seperti script konfigurasi pada artikel saya yang lain, berikut adalah script config.php yang bisa penulis pakai :

<?php
	$host="localhost";
	$user="nama_user_anda";
	$password="password_user";	
	$koneksi=mysql_connect($host,$user,$password) or 
	die("Gagal Cuy ! :D");

	mysql_select_db("nama_database_anda");
?>

Silahkan sesuaikan variabel $user dan $password beserta database sesuai konfigurasi database yang telah pembaca buat pada masing-masing phpmyadmin. Jangan sampai salah untuk konfigurasi ini.

4Membuat Sistem Utama

Pada script index.php, kita telah merujuk action ke file mail.php. File mail.php inilah yang menjadi kunci dan kontrol email sistem aplikasi kita. Terdiri dari beberapa Class berbasis OOP yang merupakan default dari PhpMailer. Berikut adalah script, beserta penjelasannya :

<?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) {

		} else {

		}
		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>
		<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 	= '49.xxx.xxx.xxx'; // Gunakan Ip Shared Address Hosting Anda
		$mail->Port       = 25;  // post gunakan port 25
		$mail->Username   = "hello@mkhuda.com"; // username email akun
		$mail->Password   = "passwordanda";        // 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";
		}
	}

}

?>

Perlu diperhatikan. Sebelum pembaca menulis script untuk mail.php di atas, sebaiknya pembaca membuat terlebih dahulu akun email yang akan difungsikan untuk konfigurasi SMTP pada class phpMailer kita. Port yang digunakan umumnya menggunakan Port 25, pembaca bisa mengikuti tutorial ini untuk melihat detail konfigurasi SMTP email pada hosting.

– Mail.php diatas juga telah penulis lengkapi dengan fungsi untuk membuat id secara otomatis bernama rand_string() (lihat baris 4 sampai 13). Fungsi rand_string dimanfaatkan oleh variabel $id (lihat baris 18).

– File diatas juga telah dilengkapi dengan pengecekan apakah user yang dipakai email sudah terdaftar. Jika sudah terdaftar, maka email tidak dapat dipakai untuk melakukan pendaftaran kembali.

– Tambahan baru, bilamana ada masalah dengan port smtp di hosting, coba gunakan Ip shared Address untuk hosting Anda pada bagian $mail->Host, dan untuk $mail->Port tetap gunakan port 25

5Uji Coba

Jika pembaca sudah mengikuti tutorial di atas dengan baik, silahkan melakukan uji coba dengan mengakses aplikasi sekaligus mengisi form pendaftaran. Pastikan juga email yang kita registrasikan adalah email aktif, untuk mengecek apakah sistem PHP Mailer sukses mengirim email ke pendaftar.

Berikut adalah screenshot hasil uji coba dan notifikasi email yang diterima :

Pengisian Form

Pengisian Form


Email Notifikasi PHPMailer

Email Notifikasi PHPMailer


Cek Database PhpMyAdmin

Cek Database PhpMyAdmin


Selamat mencoba !

Pada tutorial selanjutnya (Day 3), penulis akan mengaplikasikan sistem aktivasi agar user dapat melakukan aktivasi melalui email yang dikirim oleh sistem.

 

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!

 

19 thoughts on “Membuat Form Registrasi dan Sistem Aktivasi Menggunakan PHP Mailer – Day 2

  1. gan, ane bingung disini gan.
    $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’);

    ane gk mudeng hosting mail itu apa. tapi ane udah siapin akun gmail 2, 1 buat pengirim n satu penerima . . . ane udah pake hosting gratisan, cuma bingung mailnya itu mana . . . n keluar erro gini
    Invalid address: a7240555SMTP -> ERROR: EHLO not accepted from server:
    SMTP -> ERROR: HELO not accepted from server:
    SMTP -> ERROR: AUTH not accepted from server: 421 Cannot connect to SMTP server 31.170.162.22 (31.170.162.22:25), NB connect error 1460
    SMTP -> ERROR: RSET failed:
    SMTP -> NOTICE: EOF caught while checking if connectedThe following From address failed: root@localhost : Called Mail() without being connected Oops, Mailer Error: The following From address failed: root@localhost : Called Mail() without being connected

    mohon penceran . . -_-

  2. email suda masuk database dan suda masuk ke email gmail tester
    tapi kenapa page sendingnya jadi ancur ya?

    2014-05-11 11:49:52 CLIENT -> SERVER: EHLO sanmotor.esy.es 2014-05-11 11:49:52 CLIENT -> SERVER: AUTH LOGIN 2014-05-11 11:49:52 CLIENT -> SERVER: YWRtaW5Ac2FubW90b3IuZXN5LmVz 2014-05-11 11:49:52 CLIENT -> SERVER: a2V0b2ttYWdpYzE= 2014-05-11 11:49:52 CLIENT -> SERVER: MAIL FROM: 2014-05-11 11:49:52 CLIENT -> SERVER: RCPT TO: 2014-05-11 11:49:53 CLIENT -> SERVER: DATA 2014-05-11 11:49:53 CLIENT -> SERVER: Date: Sun, 11 May 2014 11:49:52 +0000 2014-05-11 11:49:53 CLIENT -> SERVER: To: “Hello (Reciever name)” 2014-05-11 11:49:53 CLIENT -> SERVER: From: Hello User 2014-05-11 11:49:53 CLIENT -> SERVER: Subject: Hello 2014-05-11 11:49:53 CLIENT -> SERVER: Message-ID: 2014-05-11 11:49:53 CLIENT -> SERVER: X-Priority: 3 2014-05-11 11:49:53 CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.7 (https://github.com/PHPMailer/PHPMailer/) 2014-05-11 11:49:53 CLIENT -> SERVER: MIME-Version: 1.0 2014-05-11 11:49:53 CLIENT -> SERVER: Content-Type: multipart/alternative; 2014-05-11 11:49:53 CLIENT -> SERVER: boundary=”b1_1cfa1209c7bdc67e54be3edac7e3216b” 2014-05-11 11:49:53 CLIENT -> SERVER: Content-Transfer-Encoding: 8bit 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: –b1_1cfa1209c7bdc67e54be3edac7e3216b 2014-05-11 11:49:53 CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: Terima Kasih Telah Mendaftar 2014-05-11 11:49:53 CLIENT -> SERVER: Nama Anda : erik 2014-05-11 11:49:53 CLIENT -> SERVER: Email : waterseven92@gmail.com 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: –b1_1cfa1209c7bdc67e54be3edac7e3216b 2014-05-11 11:49:53 CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER:
    2014-05-11 11:49:53 CLIENT -> SERVER:
    2014-05-11 11:49:53 CLIENT -> SERVER: Terima Kasih Telah Mendaftar
    2014-05-11 11:49:53 CLIENT -> SERVER: Nama Anda : xxxxxx
    2014-05-11 11:49:53 CLIENT -> SERVER: Email : xxxxxxx@gmail.com
    2014-05-11 11:49:53 CLIENT -> SERVER:
    2014-05-11 11:49:53 CLIENT -> SERVER:
    2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 11:49:53 CLIENT -> SERVER: –b1_1cfa1209c7bdc67e54be3edac7e3216b– 2014-05-11 11:49:53 CLIENT -> SERVER: 2014-05-11 1
    seperti itu

  3. Heloo mas, mohon pencerahannya.
    Untuk data masuk ke database. Tapi untuk email aktivasinya tidak terkirim.
    port SMPT saya sudah setting pake 26 karena default hostingnya begitu.
    Untuk phpmailer nya disimpan di hosting di folder root? atau dibuatkan folder baru library itu??

    untuk classsmtp.php apa port nya perlu saya rubah? atau tetap biarkan default 25??

    Terima kasih

  4. mas, kok setelah diklik submit halaman mail.php menjadi blank dan email juga nggak terkirim. solusinya bagaimana ya? mohon balasannya.

  5. AssalamualaikumWr. Wb.

    Pak Mohon pencerahannya

    halaman login sudah muncul tapi ketika di submit blank dan tidak ada email confirm di sisi pendaftar. berikut scriptnya :

    <?php
    error_reporting(0);

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

    $size = strlen( $chars );
    for( $i = 0; $i 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) {

    } else {

    }
    require_once(‘library/class.phpmailer.php’); //menginclude librari phpmailer

    $mail = new PHPMailer();
    $body =

    Terima Kasih Telah Mendaftar
    Nama Anda : “.$nama.”
    Email : “.$email.”

    “;
    $body = eregi_replace(“[]”,”,$body);
    $mail->IsSMTP(); // menggunakan SMTP
    $mail->SMTPDebug = 1; // mengaktifkan debug SMTP

    $mail->SMTPAuth = true; // mengaktifkan Autentifikasi SMTP
    $mail->Host = ‘********’; // Gunakan Ip Shared Address Hosting Anda
    $mail->Port = **; // post gunakan port 25
    $mail->Username = “anggie.ahmad@stpsahid.info”; // username email akun
    $mail->Password = “**********”; // password akun

    $mail->SetFrom(‘anggie.ahmad@stpsahid.info’, ‘Hello Anggie’);

    $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”;
    }
    }

    }

    ?>

      1. Notice: Undefined variable: str in /home/u292104380/public_html/daftar/mail.php on line 9

        Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u292104380/public_html/daftar/mail.php on line 29

        Deprecated: Function eregi_replace() is deprecated in /home/u292104380/public_html/daftar/mail.php on line 55

        Fatal error: Class ‘SMTP’ not found in /home/u292104380/public_html/daftar/library/class.phpmailer.php on line 1303

  6. Eror gini mas kalo di ganti (-1)

    Notice: Undefined variable: str in /home/u292104380/public_html/daftar/mail.php on line 9

    Deprecated: mysql_query(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u292104380/public_html/daftar/mail.php on line 29

    Deprecated: Function eregi_replace() is deprecated in /home/u292104380/public_html/daftar/mail.php on line 55

    Fatal error: Class ‘SMTP’ not found in /home/u292104380/public_html/daftar/library/class.phpmailer.php on line 1303

Leave a Reply to alvian david Cancel 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.