Free Ebook Tutorial from Rosihan Ari's Blog

Ebook Javascript | Ebook PHP | Ebook AJAX | Ebook CSS | Ebook FPDF | Ebook Wordpress | Ebook Java SE




Integrasi Form Registrasi dengan Pengiriman Email Berisi Attachment Bukti Registrasi


September 28th, 2013 | by rosihanari |


Jual kaos

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.

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>

Form di atas, apabila ditampilkan di browser tampak sbb:

 photo image-form-registrasi-01_zps021293be.jpg

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);
}
?>

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

 photo image-form-registrasi-02_zpsc72673ba.jpg

dan berikut ini tampilan isi file PDF nya

 photo image-form-registrasi-03_zps57b3475e.jpg

Mudah bukan membuatnya? selamat mencoba dan semoga bermanfaat ya… :-)


Kata kunci: script kirim email attachment - script registrasi -


 

Komentar Anda ...