فرم های تماس با ما یک راه ارتباطی سریع بین کاربران سایت با مدیریت آن سایت است که این ابزار می تواند باعث پویاتر کردن و تعامل بیشتر با کاربران شود. در اکثر اسکریپت ها و سیستم های مدیریت محتوا مانند دیتالایف انجین، جوملا و وردپرس افزونه ها و ماژول های زیادی برای ساختن فرم تماس وجود دارد اما شاید بخواهید در یک بخش جداگانه از سایت خود یک فرم تماس با PHP بسازید. در این تاپیک از انجمن بی تاک به شما آموزش می دهیم با ترکیبی از PHP و HTML یک فرم تماس ساده و سریع برای خودتان ایجاد کنید.

کدهای HTML
ابتدا باید رابط کاربری فرم را طراحی کنیم. کد زیر یک کد فرم HTML است که می توانید داخل اسکریپت خودتان یا یک فایل جداگانه مثلا contact.html
استفاده کنید:
<form action="contact.php" method="post">
<div class="betalk-group">
<label for="name">نام</label>
<input type="text" id="name" name="visitor_name" placeholder="نام شما" pattern=[A-Z\sa-z]{3,20} required>
</div>
<div class="betalk-group">
<label for="email">ایمیل</label>
<input type="email" id="email" name="visitor_email" placeholder="john.doe@email.com" required>
</div>
<div class="betalk-group">
<label for="department-selection">ارتباط با دپارتمان</label>
<select id="department-selection" name="concerned_department" required>
<option value="">انتخاب کنید</option>
<option value="billing">پشتیبانی فروش</option>
<option value="marketing">پشتیبانی فنی</option>
<option value="technical support">ارتباط با مدیریت</option>
</select>
</div>
<div class="betalk-group">
<label for="title">موضوع درخواست</label>
<input type="text" id="title" name="email_title" required placeholder="در چه موردی قصد ارتباط دارید؟" pattern=[A-Za-z0-9\s]{8,60}>
</div>
<div class="betalk-group">
<label for="message">پیام شما</label>
<textarea id="message" name="visitor_message" placeholder="پیام خود را اینجا بنویسید..." required></textarea>
</div>
<button type="submit">ارسال پیام</button>
</form>
این کد فرم اصلی ما را ایجاد خواهد کرد.
کدهای CSS
برای بهتر کردن ظاهر فرم، به طور پیش فرض این کدها را قرار دهید تا فیلدها کمی بهتر دیده شوند:
div.betalk-group {
margin: 40px 0;
}
label {
display: block;
font-family: 'Aleo';
padding-bottom: 4px;
font-size: 1.25em;
}
input, select, textarea {
border-radius: 2px;
border: 1px solid #ccc;
box-sizing: border-box;
font-size: 1.25em;
font-family: 'Aleo';
width: 500px;
padding: 8px;
}
textarea {
height: 250px;
}
button {
height: 50px;
background: green;
color: white;
border: 2px solid darkgreen;
font-size: 1.25em;
font-family: 'Aleo';
border-radius: 4px;
cursor: pointer;
}
button:hover {
border: 2px solid black;
}
کدهای PHP
برای عملکرد درست و صحیحی فرم، شما نیاز به یک فایل PHP دارید که اطلاعات وارد شده داخل فرم را دریافت، پردازش و به ایمیل شما ارسال کند. در کد HTML ما در خط اول یک فایل به نام contact.php
داخل کد داریم که اطلاعات فرم را برای آن ارسال می کند. بنابراین در مسیری که فایل حاوی کدهای HTML فرم قرار گرفته، یک فایل به نام contact.php
ایجاد کنید و کدهای زیر را داخل آن قرار دهید:
<?php
if($_POST) {
$visitor_name = "";
$visitor_email = "";
$email_title = "";
$concerned_department = "";
$visitor_message = "";
$email_body = "<div>";
if(isset($_POST['visitor_name'])) {
$visitor_name = filter_var($_POST['visitor_name'], FILTER_SANITIZE_STRING);
$email_body .= "<div>
<label><b>Visitor Name:</b></label> <span>".$visitor_name."</span>
</div>";
}
if(isset($_POST['visitor_email'])) {
$visitor_email = str_replace(array("\r", "\n", "%0a", "%0d"), '', $_POST['visitor_email']);
$visitor_email = filter_var($visitor_email, FILTER_VALIDATE_EMAIL);
$email_body .= "<div>
<label><b>Visitor Email:</b></label> <span>".$visitor_email."</span>
</div>";
}
if(isset($_POST['email_title'])) {
$email_title = filter_var($_POST['email_title'], FILTER_SANITIZE_STRING);
$email_body .= "<div>
<label><b>Reason For Contacting Us:</b></label> <span>".$email_title."</span>
</div>";
}
if(isset($_POST['concerned_department'])) {
$concerned_department = filter_var($_POST['concerned_department'], FILTER_SANITIZE_STRING);
$email_body .= "<div>
<label><b>Concerned Department:</b></label> <span>".$concerned_department."</span>
</div>";
}
if(isset($_POST['visitor_message'])) {
$visitor_message = htmlspecialchars($_POST['visitor_message']);
$email_body .= "<div>
<label><b>Visitor Message:</b></label>
<div>".$visitor_message."</div>
</div>";
}
if($concerned_department == "billing") {
$recipient = "billing@domain.com";
}
else if($concerned_department == "marketing") {
$recipient = "marketing@domain.com";
}
else if($concerned_department == "technical support") {
$recipient = "tech.support@domain.com";
}
else {
$recipient = "contact@domain.com";
}
$email_body .= "</div>";
$headers = 'MIME-Version: 1.0' . "\r\n"
.'Content-type: text/html; charset=utf-8' . "\r\n"
.'From: ' . $visitor_email . "\r\n";
if(mail($recipient, $email_title, $email_body, $headers)) {
echo "<p>Thank you for contacting us, $visitor_name. You will get a reply within 24 hours.</p>";
} else {
echo '<p>We are sorry but the email did not go through.</p>';
}
} else {
echo '<p>خطایی رخ داده است</p>';
}
?>
که در نهایت چنین فرمی خواهید داشت:

گاهی اوقات سرورها با تنظیمات امنیتی خود مانع از اجرای چنین توابعی می شوند که در اینصورت باید یک اسکریپت حرفه ای فرم تماس با ما استفاده کنید.