Membuat Contact Form

Apr 9, 2010 by MyPHPtutorials Level: Menengah Komentar Print

Tutorial php Membuat Contact Form menjelaskan cara membuat contact form. Mulai dari membuat form html, meyimpan contact ke database, mengirim contact ke pengelola lewat email dan juga membahas masalah security dari contact form beserta cara meningkatkan security contact form.

Berikut adalah langkah langkah membuat contact form:

Membuat Contact Form/HTML form

Buatlah sebuah html form seperi berikut:

Name: 

Email: 

Message: 

Code:

<form method="post" name="form1" action="save-comment.php">
	<p>
		Name: <input name="name" type="text" />
 </p>
	<p>
		Email: <input name="email" type="text" />
 </p>
	<p>
		Message: <textarea name="message"></textarea>
 </p>
	<p>
		<input name="submit" type="submit" value="Send" />
 </p>
</form>

Menyimpan Contact ke Database

Contact yang dikirim oleh pengguna dapat disimpan ke database atau langsung dikirim lewat email ke pengelola website. Untuk menyimpan contact ke database kunjungi tutorials ini : Menyimpan Data ke Database & Menampilkan Data dengan PHP.

Mengirim Contact ke Pengelola Lewat Email

Di tutorial Mengirim Email Dengan PHP telah dijelaskan cara untuk mengirim email dengan PHP. Di tutorial ini tinggal mengimplementasikan tutorial tersebut. Untuk mengirim contact lewat email kepada pengelola website bisa digunakan script php di bawah:

<?php
 // file save-comment.php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $text = $_POST['message'];
 
 $email_pengelola = 'pengelola@example.com'; // sesuai dengan email pengelola
 
 $message = "Name: ". $name ."\n";
 $message .= "Email: ". $email ."\n";
 $message .= "Message: " .$comment;
 $message = wordwrap($text, 70);
 //mengirim email
 mail($email_pengelola, "New message from ".$name, $message);
?>

Contact juga bisa dikirim menggunakan HTML email dengan script php di bawah:

<?php
 // file save-comment.php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $text = $_POST['message'];
 
 $email_pengelola = 'pengelola@example.com'; // sesuai dengan email pengelola
 
 $message = "<html>
		<head>
		 <title>New Message</title>
		</head>
		<body>";
 $message .= "<p>New message from $name</p>";
 $message .= "<dl>
		 <dt>Email:</dt>
		 <dd>$email</dd>
		 <dt>Message:</dt>
		 <dd>$text</dd>
	 </dl>";
 $message .= "</body></html>";
 //setting header
 $headers = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .= 'From: Your Website Name <noreply@example.com>' . "\r\n";
 //send email
 mail($email_pengelola, "New message from ".$name, $message, $headers);
?>

Mengirim Email Konfirmasi ke Pengguna dan Pengelola

<?php
 // file save-comment.php
 $name = $_POST['name'];
 $email = $_POST['email'];
 $text = $_POST['message'];
 
 $email_pengelola = 'pengelola@example.com'; // sesuai dengan email pengelola
 
 $message = "<html>
		<head>
		 <title>New Message</title>
		</head>
		<body>";
 $message .= "<p>New message from $name</p>";
 $message .= "<dl>
		 <dt>Email:</dt>
		 <dd>$email</dd>
		 <dt>Message:</dt>
		 <dd>$text</dd>
	 </dl>";
 $message .= "</body></html>";
 //setting header
 $headers = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
 $headers .= 'From: Your Website Name <noreply@example.com>' . "\r\n";
 //email ke pengelola
 mail($email_pengelola, "New message from ".$name, $message, $headers);
//email ke pengguna
$text = "Terima kasih atas pesan Anda di Example.com.nnKami akan segera menghubungi Anda.";
mail($email,"Terima kasih atas pesan Anda", $text);
?>

Meningkatkan Security Contact Form

Jika anda mengimplementasikan contact form di website anda, yang harus diperhatikan adalah masalah security. Seseorang bisa saja memasukkan  kode HTML ke contact form, memasukkan kode javascript, bahkan bisa sampai untuk mengambil cookies. Selain itu juga terkait dengan spam yang bisa menggunakan contact form dan mengirimi pengelola ribuan email.

Untuk menghindari spam, anda bisa mengimplementasikan tutorial Membuat Captcha dengan PHP pada contact form. Sedangkan untuk menghindari pengguna memasukkan kode HTML dan javascript bisa menggunakan dua cara. Yang pertama  adalah menggunakan fungsi strip_tags() yang akan mengilangkan semua tag html, contoh:

<?php
 $input = "<strong>Bold Text</strong><p>Paragraph text</p>";
 $output = strip_tags($input);
 echo $output;
 //hasilnya adalah "Bold TextParagraph text"
?>

Cara kedua adalah menggunakan fungsi htmlentities() yang akan meng-convert kode html menjadi html entity, contoh:

<?php
 $input = "<strong>Bold Text</strong><p>Paragraph text</p>";
 $output = htmlentities($input);
 echo $output;
 //hasilnya adalah "&lt;strong&gt;Bold Text&lt;/strong&gt;&lt;p&gt;Paragraph text&lt;p&gt;"
?>

Silahkan login atau register sebelum meninggalkan komentar.