Membuat Form Registrasi dengan Notifikasi Email Bukti Registrasi di PHP - Pernahkah sobat melakukan registrasi atau pendaftaran ke suatu situs? Setelah proses registrasi selesai dilakukan, selanjutnya bukti registrasi yang berupa file PDF akan dikirim secara otomatis ke email sobat. Adapun contoh penerapan dari kasus ini adalah proses booking tiket pesawat online yang disediakan oleh situs-situs penerbangan domestik kita, seperti Garuda Indonesia, Lion Air, Sriwijaya Air dll. Setelah sobat melakukan proses booking dan konfirmasi pembayaran, e-ticket yang berupa file PDF akan otomatis terkirim ke email sobat.
Na.. pada tutorial kali ini, saya akan memaparkan teknik dasar dari hal tersebut. Secara garis besar, skenario teknik dasar ini adalah sebagai berikut: pertama user diminta memasukkan nama, alamat dan email nya, selanjutnya setelah si user mensubmit form registrasi tersebut, langsung terkirim email berisi attachment PDF bukti registrasinya. Di dalam file PDF tersebut akan dimunculkan ID Registrasi yang berupa nomor unik proses registrasi, serta data nama, alamat dan email yang telah dia inputkan.
OK untuk membuat aplikasi sederhana ini pertama kita siapkan tabel di databasenya terlebih dahulu.
CREATE TABLE `registrasi` ( `id` varchar(20), `nama` varchar(100), `alamat` varchar(100), `email` varchar(50), PRIMARY KEY (`id`) )
Selanjutnya, kita buat script untuk membuat form registrasinya. Cukup simpel saja saya buat.
form.html
<html> <head> <title>Form Registrasi</title> </head> <body> <h1>Form Registrasi</h1> <form method="post" action="proses.php"> <table> <tr><td>Nama Lengkap</td><td>:</td><td><input type="text" name="nama"></td></tr> <tr><td>Alamat</td><td>:</td><td><input type="text" name="alamat"></td></tr> <tr><td>Email</td><td>:</td><td><input type="text" name="email"></td></tr> </table> <input type="submit" name="submit" value="REGISTER"> </form> </body> </html>
Setelah form kita buat, berikutnya kita akan membuat script proses.php untuk memproses registrasinya. Akan tetapi sebelumnya kita buat script koneksi ke databasenya terlebih dahulu sbb:
koneksi.php
<?php // isikan parameter koneksi databasenya $dbhost = "..."; $dbuser = "..."; $dbpass = "..."; $dbname = "..."; mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbname); ?>
Kemudian barulah kita buat script proses.php nya
proses.php
<?php // koneksi ke database include 'koneksi.php'; include 'email.php'; // function untuk mengenerate ID registrasi unik // dengan format 'TRX-----', mis: TRX00001 function newID() { $query = "SELECT max(id) as maxID FROM registrasi"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); $idMax = $data['maxID']; $noUrut = (int) substr($idMax, 3, 5); $noUrut++; $id = 'TRX' . sprintf("%05s", $noUrut); return $id; } $nama = $_POST['nama']; $alamat = $_POST['alamat']; $email = $_POST['email']; // mengenerate ID registrasi baru $id = newID(); // menyimpan data registrasi ke db $query = "INSERT INTO registrasi (id, nama, alamat, email) VALUES ('$id', '$nama', '$alamat', '$email')"; $hasil = mysql_query($query); if ($hasil) { echo "Registrasi sukses, form bukti registrasi akan dikirim ke email Anda"; // kirim email dg attachment file PDF bukti registrasi kirimEmail($id, $email); } else echo "Registrasi gagal"; ?>
Di dalam script proses.php di atas, terdapat sebuah function newID() untuk mengenerate ID registrasi unik. Penjelasan dari mekanisme ini, silakan dipelajari di artikel berjudul ‘membuat kode unik otomatis‘.
Perhatikan juga pada script proses.php di atas, di dalamnya terdapat pemanggilan function kirimEmail($id, $email). Function ini nanti digunakan untuk menjalankan proses pengiriman email dengan attachment dari ID registrasi $id, ke alamat email $email. Detil dari function kirimEmail() ini ada di dalam script ‘email.php’ yang nanti akan kita buat.
OK. Setelah ini kita siapkan script untuk mengenerate file PDF yang berisi data registrasi berdasarkan ID tertentu. Untuk keperluan ini, saya menggunakan class FPDF guna membuat dokumen PDF nya.
pdf.php
<?php // membuat file PDF registrasi berdasarkan ID include 'koneksi.php'; include 'fpdf.php'; $id = $_GET['id']; $query = "SELECT * FROM registrasi WHERE id = '$id'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); $pdf=new FPDF('P','mm','A4'); $pdf->AddPage(); $pdf->SetFont('Times','',12); $pdf->Cell(30,10,'ID Registrasi',0,0,'L'); $pdf->Cell(5,10,':',0,0,'L'); $pdf->Cell(100,10,$data['id'],0,1,'L'); $pdf->Cell(30,10,'Nama Lengkap',0,0,'L'); $pdf->Cell(5,10,':',0,0,'L'); $pdf->Cell(100,10,$data['nama'],0,1,'L'); $pdf->Cell(30,10,'Alamat Rumah',0,0,'L'); $pdf->Cell(5,10,':',0,0,'L'); $pdf->Cell(100,10,$data['alamat'],0,1,'L'); $pdf->Cell(30,10,'E-mail',0,0,'L'); $pdf->Cell(5,10,':',0,0,'L'); $pdf->Cell(50,10,$data['email'],0,1,'L'); $pdf->Output(); ?>
Pastikan, sebelumnya Anda sudah mendownload class FPDF nya di sini, karena untuk menjalankan script pdf.php ini membutuhkan class FPDF yang ada di file ‘fpdf.php’. Lebih lanjut mengenai FPDF ini, Anda bisa mempelajarinya di ebook FPDF yang telah saya buat.
Terakhir… kita buat script email.php untuk proses pengiriman email dengan attachment file PDF yang digenerate dari script pdf.php
email.php
<?php // function untuk membaca konten file function get_content($url){ $data = curl_init(); curl_setopt($data, CURLOPT_RETURNTRANSFER, 1); curl_setopt($data, CURLOPT_URL, $url); $hasil = curl_exec($data); curl_close($data); return $hasil; } // function pengiriman email dengan attachment function kirimEmail($id, $email) { // setting nama file attachment $namafile = "registrasi.pdf"; // MIME type file PDF sbg attachment $fileType = "application/x-pdf"; // setting pesan intro di email $introPesan = "Terimakasih sudah melakukan registrasi. Bukti registrasi ada di attachment email ini, silakan disimpan."; // membaca isi file pdf registrasi berdasarkan id // yang dihasilkan oleh script pdf.php $fileContent = get_content("http://localhost/fpdf/pdf.php?id=".$id); // membuat attachment di email $semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; $headers = "MIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; $pesan = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $introPesan . "\n\n"; $data = chunk_split(base64_encode($fileContent)); $pesan .= "--{$mime_boundary}\n" . "Content-Type: {$fileType};\n" . " name=\"{$namafile}\"\n" . "Content-Disposition: attachment;\n" . " filename=\"{$namafile}\"\n" . "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n"; // proses mengirim email dengan attachment mail($email, "Konfirmasi Registrasi", $pesan, $headers); } ?>Download / Copy Script
Perhatikan, di dalam script email.php di atas, saya buat sebuah function get_content() yang digunakan untuk membaca isi dari suatu file, dalam hal ini adalah file PDF yang dihasilkan oleh pdf.php nya. Sebenarnya untuk membaca isi file ini kita bisa menggunakan fopen() akan tetapi, beberapa admin web hosting mendisable function fopen() ini dengan alasan keamanan. Sehingga kita buat sendiri saja function get_content() ini untuk membaca isi file dengan memanfaatkan CURL.
OK… selesai deh pembuatan aplikasi sederhana untuk proses registrasi yang diintegrasikan dengan pengiriman email dan attachmentnya.
Jika Anda menjalankan semua script di atas di pc local, maka pastikan Anda sudah mensetting modul mail sendernya sebagaimana yang pernah saya jelaskan sebelumnya di artikel ‘cara mengirim email di localhost dengan xampp‘.
Berikut ini contoh tampilan email yang terkirim dengan attachmentnya
dan berikut ini tampilan isi pdfnya