Waduh… bingung menentukan judul artikel ini, tapi mudah-mudahan pembaca setia blog tutorial pemrograman gratis ini sudah bisa menangkap apa maksud judul di atas. Apabila ada yang belum menangkap maksudnya, maka penjelasannya seperti ini. Pernahkah Anda 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 Anda. 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 Anda melakukan proses booking dan konfirmasi pembayaran, e-ticket yang berupa file PDF akan otomatis terkirim ke email Anda.
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.
1.CREATE TABLE `registrasi` (2.`id` varchar(20),3.`nama` varchar(100),4.`alamat` varchar(100),5.`email` varchar(50),6.PRIMARY KEY (`id`)7.)
Selanjutnya, kita buat script untuk membuat form registrasinya. Cukup simpel saja saya buat.
form.html
01.<html>02.<head>03.<title>Form Registrasi</title>04.</head>05.<body>06.<h1>Form Registrasi</h1>07.<form method="post" action="proses.php">08.<table>09.<tr><td>Nama Lengkap</td><td>:</td><td><input type="text"name="nama"></td></tr>10.<tr><td>Alamat</td><td>:</td><td><input type="text"name="alamat"></td></tr>11.<tr><td>Email</td><td>:</td><td><input type="text"name="email"></td></tr>12.</table>13.<input type="submit" name="submit" value="REGISTER">14.</form>15.</body>16.</html>
Form di atas, apabila ditampilkan di browser tampak sbb:
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
01.02.// isikan parameter koneksi databasenya03.$dbhost = "...";04.$dbuser = "...";05.$dbpass = "...";06.$dbname = "...";07. 08.mysql_connect($dbhost, $dbuser, $dbpass);09.mysql_select_db($dbname);10.?>
Kemudian barulah kita buat script proses.php nya
proses.php
01.02.// koneksi ke database03.include 'koneksi.php';04. 05.include 'email.php';06. 07.// function untuk mengenerate ID registrasi unik08.// dengan format 'TRX-----', mis: TRX0000109.function newID()10.{11.$query = "SELECT max(id) as maxID FROM registrasi";12.$hasil = mysql_query($query);13.$data = mysql_fetch_array($hasil);14.$idMax = $data['maxID'];15.$noUrut = (int) substr($idMax, 3, 5);16.$noUrut++;17.$id = 'TRX' . sprintf("%05s", $noUrut);18.return $id;19.}20. 21.$nama = $_POST['nama'];22.$alamat = $_POST['alamat'];23.$email = $_POST['email'];24.// mengenerate ID registrasi baru25.$id = newID();26. 27.// menyimpan data registrasi ke db28.$query = "INSERT INTO registrasi (id, nama, alamat, email) VALUES ('$id', '$nama', '$alamat', '$email')";29.$hasil = mysql_query($query);30.if ($hasil) {31.echo "Registrasi sukses, form bukti registrasi akan dikirim ke email Anda";32.// kirim email dg attachment file PDF bukti registrasi33.kirimEmail($id, $email);34.}35.else echo "Registrasi gagal";36. 37.?>
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 FPDFguna membuat dokumen PDF nya.
pdf.php
01.02.// membuat file PDF registrasi berdasarkan ID03. 04.include 'koneksi.php';05.include 'fpdf.php';06. 07.$id = $_GET['id'];08. 09.$query = "SELECT * FROM registrasi WHERE id = '$id'";10.$hasil = mysql_query($query);11.$data = mysql_fetch_array($hasil);12. 13.$pdf=new FPDF('P','mm','A4');14.$pdf->AddPage();15.$pdf->SetFont('Times','',12);16.$pdf->Cell(30,10,'ID Registrasi',0,0,'L');17.$pdf->Cell(5,10,':',0,0,'L');18.$pdf->Cell(100,10,$data['id'],0,1,'L');19.$pdf->Cell(30,10,'Nama Lengkap',0,0,'L');20.$pdf->Cell(5,10,':',0,0,'L');21.$pdf->Cell(100,10,$data['nama'],0,1,'L');22.$pdf->Cell(30,10,'Alamat Rumah',0,0,'L');23.$pdf->Cell(5,10,':',0,0,'L');24.$pdf->Cell(100,10,$data['alamat'],0,1,'L');25.$pdf->Cell(30,10,'E-mail',0,0,'L');26.$pdf->Cell(5,10,':',0,0,'L');27.$pdf->Cell(50,10,$data['email'],0,1,'L');28.$pdf->Output();29.?>
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
01.02.// function untuk membaca konten file03.function get_content($url){04.$data = curl_init();05.curl_setopt($data, CURLOPT_RETURNTRANSFER, 1);06.curl_setopt($data, CURLOPT_URL, $url);07.$hasil = curl_exec($data);08.curl_close($data);09.return $hasil;10.}11. 12.// function pengiriman email dengan attachment13.function kirimEmail($id, $email)14.{15.// setting nama file attachment16.$namafile = "registrasi.pdf";17.// MIME type file PDF sbg attachment18.$fileType = "application/x-pdf";19. 20.// setting pesan intro di email21.$introPesan = "Terimakasih sudah melakukan registrasi. Bukti registrasi ada di attachment email ini, silakan disimpan.";22. 23.// membaca isi file pdf registrasi berdasarkan id24.// yang dihasilkan oleh script pdf.php25.$fileContent = get_content("http://localhost/fpdf/pdf.php?id=".$id);26. 27.// membuat attachment di email28.$semi_rand = md5(time());29.$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";30. 31.$headers = "MIME-Version: 1.0\n" .32."Content-Type: multipart/mixed;\n" .33." boundary=\"{$mime_boundary}\"";34. 35.$pesan = "This is a multi-part message in MIME format.\n\n" .36."--{$mime_boundary}\n" .37."Content-Type: text/html; charset=\"iso-8859-1\"\n" .38."Content-Transfer-Encoding: 7bit\n\n" .39.$introPesan . "\n\n";40. 41.$data = chunk_split(base64_encode($fileContent));42. 43.$pesan .= "--{$mime_boundary}\n" .44."Content-Type: {$fileType};\n" .45." name=\"{$namafile}\"\n" .46."Content-Disposition: attachment;\n" .47." filename=\"{$namafile}\"\n" .48."Content-Transfer-Encoding: base64\n\n" .49.$data . "\n\n" .50."--{$mime_boundary}--\n";51. 52.// proses mengirim email dengan attachment53.mail($email, "Konfirmasi Registrasi", $pesan, $headers);54.}55.?>
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 file PDF nya
Mudah bukan membuatnya? selamat mencoba dan semoga bermanfaat ya… 
No comments:
Post a Comment