فرم تماس با ما یکی از قسمت های اساسی تقریبا هر وبسایتی است . فرم تماس با ما به مخاطبان و بازدیدکنندگان سایت اجازه برقراری ارتباط به مدیر سایت را می دهد .از طریق فرم تماس با ما ، بازدیدکنندگان به راحتی می توانند نظرات ، پیشنهادات ، انتقاد و درخواست هایشان را در مورد سایت ، خدمات و محصولات به مدیریت سایت ارسال کنند . همچنین اطلاعات ارسالی از این طریق نیز میتواند از طریق ایمیل به مدیریت سایت ارسال شود.
فرم تماس به شما این امکان را می دهد گه درخواست های کاربران را دریافت و سریعا پاسخی را برایشان ارسال کنید . منطق فرم تماس با ما بسیار ساده است .
در این مقاله آموزشی قصد داریم به شما نحوه ساخت یک فرم تماس با ما در php را آموزش بدیم . با اسکریپتphp فرم تماس ما میتوانید به راحتی یک فرم تماس با ما را به سایتتان اضافه کنید.این اسکریپت علاوه بر نمایش و ذخیره اطلاعات کاربران ، یک ایمیل هم ارسال می کند.
برای درک بهتر ، اسکریپت php فرم تماس با ما را به در دو بخش html و php تقسیم کردیم . میتوانید هر دو در یک فایل برای نماش قرار بدید.
فرم HTML
کد های html زیر بک فرم تماس با ما به همراه فیلد های معمول (اسم ، ایمیل ، موضوع و پیام شما) و یک دکمه ارسال است . برای نمایش فرم همه کد های زیر را در پروژه خود اضافه کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<h2>فرم تماس با ما</h2> <div class="contactFrm"> <?php if(!empty($statusMsg)){ ?> <p class="statusMsg <?php echo !empty($msgClass)?$msgClass:''; ?>"><?php echo $statusMsg; ?></p> <?php } ?> <form action="" method="post"> <h4>Name</h4> <input type="text" name="name" placeholder="Your Name" required=""> <h4>Email </h4> <input type="email" name="email" placeholder="email@netparadis.com" required=""> <h4>Subject</h4> <input type="text" name="subject" placeholder="Write subject" required=""> <h4>Message</h4> <textarea name="message" placeholder="Write your message here" required=""> </textarea> <input type="submit" name="submit" value="Submit"> <div class="clear"> </div> </form> </div> |
کد های PHP
در کد php زیر همه ی داده های ارسالی به این صفحه را از طریق متغیر سراسری $_POST را اعتبار سنجی میکنیم . برای اعتبار سنجی ایمیل از تابع FILTER_VALIDATE_EMAIL و برای ارسال ایمیل به یک آدرس خاص از تابع mail() استفاده می کنیم.
مقدار متغیر $toEmail را به ایمیل خود تغییر بدید. کد زیر را در صفحه ای که کد html بالا را وارد کردید قبل آن اضافه کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php $statusMsg = ''; $msgClass = ''; if(isset($_POST['submit'])){ // Get the submitted form data $email = $_POST['email']; $name = $_POST['name']; $subject = $_POST['subject']; $message = $_POST['message']; // Check whether submitted data is not empty if(!empty($email) && !empty($name) && !empty($subject) && !empty($message)){ if(filter_var($email, FILTER_VALIDATE_EMAIL) === false){ $statusMsg = 'Please enter your valid email.'; $msgClass = 'errordiv'; }else{ // Recipient email $toEmail = 'netparadis.com@gmail.com'; $emailSubject = 'Contact Request Submitted by '.$name; $htmlContent = '<h2>Contact Request Submitted</h2> <h4>Name</h4><p>'.$name.'</p> <h4>Email</h4><p>'.$email.'</p> <h4>Subject</h4><p>'.$subject.'</p> <h4>Message</h4><p>'.$message.'</p>'; // Set content-type header for sending HTML email $headers = "MIME-Version: 1.0" . "\r\n"; $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n"; // Additional headers $headers .= 'From: '.$name.'<'.$email.'>'. "\r\n"; // Send email if(mail($toEmail,$emailSubject,$htmlContent,$headers)){ $statusMsg = 'Your contact request has been submitted successfully !'; $msgClass = 'succdiv'; }else{ $statusMsg = 'Your contact request submission failed, please try again.'; $msgClass = 'errordiv'; } } }else{ $statusMsg = 'Please fill all the fields.'; $msgClass = 'errordiv'; } } ?> |
کد های CSS
برای زیبایی بیشتر فرم تماس با ما چندین استایل تعریف کردیم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
.contactFrm h4 { font-size: 1em; color: #252525; margin-bottom: 0.5em; font-weight: 300; letter-spacing: 5px; } .contactFrm input[type="text"], .contactFrm input[type="email"] { width: 92%; color: #9370DB; background: #fff; outline: none; font-size: 0.9em; padding: .7em 1em; border: 1px solid #9370DB; -webkit-appearance: none; display: block; margin-bottom: 1.2em; } .contactFrm textarea { resize: none; width: 93.5%; background: #fff; color: #9370DB; font-size: 0.9em; outline: none; padding: .6em 1em; border: 1px solid #9370DB; min-height: 10em; -webkit-appearance: none; } .contactFrm input[type="submit"] { outline: none; color: #FFFFFF; padding: 0.5em 0; font-size: 1em; margin: 1em 0 0 0; -webkit-appearance: none; background: #9370DB; transition: 0.5s all; border: 2px solid #795CB4; -webkit-transition: 0.5s all; transition: 0.5s all; -moz-transition: 0.5s all; width: 47%; cursor: pointer; } .contactFrm input[type="submit"]:hover { background: none; color: #9370DB; } p.statusMsg{font-size:18px;} p.succdiv{color: #008000;} p.errordiv{color:#E80000;} |
امیدوارم مفید بوده باشه و این کد ها را در داخل پروژه هایی که مینویسید استفاده کنید.
سلام ببخشید باید چکار کرد که صفحه تماس با ما فقط برای کابران عادی قابل مشاهده باشه و مدیر سایت نتونه واردش بشه ؟
سلام. باید شرط بزارید بالای صفحه تماس با ما که اگر سشن مدیر isset شده بود نمایش نده یا ریدارکت کنه به صفحه اصلی
با عرض سلام و وقت بخیر من کد تماس با ما خیلی ساده نوشتم به صورت username و email و message
inclue “message.php”
con = new mysqli($server,$username,$password,$db)
email = $_POST[“email”]
message = $_POST[“message”]
$username = $_POST[“username”]
از دستور result = con
-> query(“INSERT INSERT INTO ‘MESSAGE’ VALUE ‘$username’ , ‘$email’,’$message'”)
من مجبوریماین طور بنویسم این طور نمایش میده
if(result)
{
echo “پیام شما با موفقیت ثبت شد”
پیام در پایگاه داده میاد
}
بعد چطوری پیام در پروفایل ادمین نمایش داده بشه
سلام. ممنون
در بروفایل هم کافیه یه دستور sql برای select * from message بزنید و هرچی بیام هست رو بخونید و داخل صفحه echo کنید
مرسی باتشکر
سلام خسته نباشید من وقتی این رو می ذارم توی کد خودم با زدن دکمه ارسال صفحم رفرش می شه
سلام. ممنون.
بعد از رفرش پیام موفق/ناموفق بودن عملیات باید نمایش داده بشه و این صحیحه
پیغام رو نمایش نمی ده این یک
بعد نمیشه صفحه نره سمت سرور ؟
کدهای html فرم و کدهای php همزمان باید در یک صفحه .php باشند.
اره می دونم مال منم توی یک صفحه است ولی نمی خوام بعد submit کل صفحه بره سرور
می شه راهنماییم کنین
باید توی اینا چه مقادیری بنویسیم؟
$statusMsg = ”;
$msgClass = ”;
نیاز به تغییر کد یا پر کردن مقادیر ندارید. همه موارد مورد نیاز داخل فرم html از کاربر درخواست میشه. و فقط کافیه کد رو اجرا کنید همین
میشه بگید چجوره به صورت خودکار برای کاربر ایمیل بفرستیم
سلام. میتونید از auto respond داخل خود پنل هاست استفاده کنید.
یا از کرون جاب استفاده کنید و تعریف کنید در زمان یا بازه های خاص چه ایمیلی برای چه کسانی ارسال بشه مثلا ایمیل یادآوری اتمام اشتراک یا یادآوری تمدید فاکتور و غیر
https://netparadis.com/managing-cron-jobs-with-php
یا اینکه از سیستم های ایمیل مارکتینگ مثل mailerlite.com بهره ببرید.
سلام. میخوام توی فرم فقط input ایمیل و input مسیج باشه. مسیج اجباری باشه و چک بشه ولی ایمیلو بتونن وارد نکنن اجباری نباشه. خودم هیچی بلد نیستم از این موضوع. ممنون میشم راهنمایی کنین.
سلام. باید php متوسط بلد باشید تا بتونید اینکار رو انجام بدید. در این کدی که ارایه شده در خط ۱۲ میتونید حالت اجبار رو بردارید :
if(!empty($email) && !empty($name) && !empty($subject) && !empty($message)){
و اگر این عبارت رو حذف کنید : !empty($email) && وارد کردن ایمیل اختیاری میشه ولی مطمینا اسکریپت کار نمیکنه چون این اطلاعات جایی ذخیره نمیشه و به ایمیل ارسال میشه.
باسلام
ببخشید اگر بخوام به ایمیا نیاد تو دیتابیس ذخیره بشه چیکار باید بکنم؟
سلام. تابع mail رو با insert داخل آموزش pdo جایگزین می کنید
https://netparadis.com/php-pdo-crud
باسلام
ببخشید این نوع فرم در دیتا بیس پیامش میره یا ایمیل یا …؟
سلام. بله با ایمیل ارسال میشه