/* LABEL CHOOSE ================================================ */ img.label_thumb{ float:left; padding:5px; border:1px solid #F3F3F3; background:#D2D0D0; margin-right:10px; height:55px; width:55px; } img.label_thumb:hover{background:#f7f6f6} .label_with_thumbs{ float:left; width:100%; min-height:70px; margin:0px 10px 2px 0px; padding:0} ul.label_with_thumbs li{ padding:8px 0; min-height:65px; margin-bottom:10px; list-style:none; } .label_with_thumbs a{} .label_with_thumbs strong{}

MEMBUAT FORM REGISTRASI DENGAN PHP

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 IndonesiaLion AirSriwijaya 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:
 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
01.
02.// isikan parameter koneksi databasenya
03.$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 database
03.include 'koneksi.php';
04. 
05.include 'email.php';
06. 
07.// function untuk mengenerate ID registrasi unik
08.// dengan format 'TRX-----', mis: TRX00001
09.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 baru
25.$id = newID();
26. 
27.// menyimpan data registrasi ke db
28.$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 registrasi
33.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 ID
03. 
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 file
03.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 attachment
13.function kirimEmail($id$email)
14.{
15.// setting nama file attachment
16.$namafile "registrasi.pdf";
17.// MIME type file PDF sbg attachment
18.$fileType "application/x-pdf";
19. 
20.// setting pesan intro di email
21.$introPesan "Terimakasih sudah melakukan registrasi. Bukti registrasi ada di attachment email ini, silakan disimpan.";
22. 
23.// membaca isi file pdf registrasi berdasarkan id
24.// yang dihasilkan oleh script pdf.php
25.$fileContent = get_content("http://localhost/fpdf/pdf.php?id=".$id);
26. 
27.// membuat attachment di email
28.$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 attachment
53.mail($email"Konfirmasi Registrasi"$pesan$headers);
54.}
55.?>
Perhatikan, di dalam script email.php di atas, saya buat sebuah functionget_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… :-)

No comments:

Post a Comment