abbas3zaar
چهارشنبه 15 آبان 1398, 22:12 عصر
من یه فرم تماس با ما دارم چند تا مشکل دارم:
1 - اول اینکه حروف فارسی مینویسم و ارسال میزنم خطا میده
2 - توی contact.php اون خط های اولش که senderName رو preg_replace کرده فکر کنم نمیزاره فارسی نوشته بشه درسته؟ اون خط رو چجوری باید بنویسم؟
3- توی همون خط وقتی preg_replace رو پاک میکنم فارسی ارسال میشه ولی توی ایمیلم به این شکل(عکس زیر) علامت سوال نشون میده:
150925
از دوستان دو تا خواهش دارم:
4 - اولی اینکه در خصوص مورد 2 که بالا گفتم برای ایمن کردن اون input از چه تابعی باید استفاده کنم؟ htmlspecialchars یا stripslashes ؟؟؟ کدش چجوری نوشته میشه؟
5 - در خصوص نمایش علامت سوال چیکار باید بکنم؟ منظورم کدشه. میدونم که باید utf8 ارسال بشه اما توی کد قرار دادم ولی نمیدونم درست نوشتم یا نه.
کدهای فرم: index.php
<div class="contact-form">
<h4>فرم تماس با من</h4>
<form id="contactForm" action="php/contact.php" method="post">
<div class="row">
<div class="col-md-8">
<textarea name="message" id="message" rows="6" placeholder="متن پیام"></textarea>
</div>
<div class="col-md-4">
<input type="text" name="senderName" id="senderName" placeholder="نام شما">
<input type="email" name="senderEmail" id="senderEmail" placeholder="ایمیل شما">
<input type="text" name="subject" id="subject" placeholder="موضوع پیام">
<button type="submit">ارسال پیام</button>
</div>
</div>
</form>
<div id="successMessage" class="successmessage">
<p><span class="success-ico"></span> باتشکر، پیام شما با موفقیت ارسال شد.</p>
</div>
<div id="failureMessage" class="errormessage">
<p><span class="error-ico"></span> هنگام ارسال پیام مشکلی پیش آمد. لطفا دوباره تلاش کنید.</p>
</div>
<div id="incompleteMessage" class="statusMessage">
<p>لطفاً قبل از ارسال ، کلیه قسمتها را در فرم تکمیل کنید.</p>
</div>
</div>
این هم کدهای contact.php
<?php
// Define some constants
define( "RECIPIENT_NAME", "abbas" );
define( "RECIPIENT_EMAIL", "info@domainname.ir" );
define( "EMAIL_SUBJECT", "$subject" );
// Read the form values
$success = false;
$senderName = isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "Content-type: text/html; charset=UTF-8" . "\r\n" . "MIME-Version: 1.0" . "\r\n" . "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ارسال پیام</title>
<link rel="stylesheet" href="css/pfonts.css" >
</head>
<body style="margin: 0; padding: 0;">
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="direction:rtl;">
<tr>
<td style="padding: 10px 0 30px 0;">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="400" style="border: 1px solid #cccccc; border-collapse: collapse;">
<tr>
<td align="center" bgcolor="#131313" style="padding: 40px 0 30px 0; color: #153643; font-size: 28px; font-weight: bold; font-family: iransans;">
<img src="https://sitename.ir/images/amlogo.png" alt="Abbas Masrour Logo" width="300" style="display: block;" />
</td>
</tr>
<tr>
<td bgcolor="#ffffff" style="padding: 40px 30px 40px 30px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<?php if ( $success ) { echo'
<tr>
<td style="text-align:center; color: #153643; font-family: iransans; font-size: 24px;">
<span style="color:#53d219;"><b>پیام شما با موفقیت ارسال شد</b></span>
</td>
</tr>
<tr>
<td style="text-align:justify; padding: 20px 0 30px 0; color: #153643; font-family: iransans; font-size: 16px; line-height: 20px;">
با تشکر از شما کاربر عزیز، پیام شما برای من ارسال شد و در اسرع وقت پاسخگو خواهم بود. در صورت وجود هرگونه مشکل با شماره تماس داخل سایت در ارتباط باشید. موفق باشید.
</td>
</tr>
'; } ?>
<?php if ( !$success ) echo '<tr>
<td style="text-align:center; font-family: iransans; font-size: 24px;">
<span style="color:#f70a0a;"><b>خطایی در ارسال رخ داد!</b></span>
</td>
</tr>
<tr>
<td style="text-align:justify; padding: 20px 0 30px 0; color: #153643; font-family: iransans; font-size: 16px; line-height: 20px;">
متاسفانه در فرایند ارسال پیام خطایی رخ داده است، لطفا مجددا تلاش کنید و در صورت وجود مشکل با شماره تلفن موجود در سایت تماس بگیرید. موفق باشید.
</td>
</tr>' ?>
<tr>
<td style="text-align:center; padding: 20px 0 30px 0; color: #153643; font-family: iransans; font-size: 16px; line-height: 20px;">
<a href="https://sitename.ir/" style="padding: 15px 20px; background-color: #44b710; border-radius: 30px; color:#fff; text-decoration: none;">بازگشت به سایت</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>
1 - اول اینکه حروف فارسی مینویسم و ارسال میزنم خطا میده
2 - توی contact.php اون خط های اولش که senderName رو preg_replace کرده فکر کنم نمیزاره فارسی نوشته بشه درسته؟ اون خط رو چجوری باید بنویسم؟
3- توی همون خط وقتی preg_replace رو پاک میکنم فارسی ارسال میشه ولی توی ایمیلم به این شکل(عکس زیر) علامت سوال نشون میده:
150925
از دوستان دو تا خواهش دارم:
4 - اولی اینکه در خصوص مورد 2 که بالا گفتم برای ایمن کردن اون input از چه تابعی باید استفاده کنم؟ htmlspecialchars یا stripslashes ؟؟؟ کدش چجوری نوشته میشه؟
5 - در خصوص نمایش علامت سوال چیکار باید بکنم؟ منظورم کدشه. میدونم که باید utf8 ارسال بشه اما توی کد قرار دادم ولی نمیدونم درست نوشتم یا نه.
کدهای فرم: index.php
<div class="contact-form">
<h4>فرم تماس با من</h4>
<form id="contactForm" action="php/contact.php" method="post">
<div class="row">
<div class="col-md-8">
<textarea name="message" id="message" rows="6" placeholder="متن پیام"></textarea>
</div>
<div class="col-md-4">
<input type="text" name="senderName" id="senderName" placeholder="نام شما">
<input type="email" name="senderEmail" id="senderEmail" placeholder="ایمیل شما">
<input type="text" name="subject" id="subject" placeholder="موضوع پیام">
<button type="submit">ارسال پیام</button>
</div>
</div>
</form>
<div id="successMessage" class="successmessage">
<p><span class="success-ico"></span> باتشکر، پیام شما با موفقیت ارسال شد.</p>
</div>
<div id="failureMessage" class="errormessage">
<p><span class="error-ico"></span> هنگام ارسال پیام مشکلی پیش آمد. لطفا دوباره تلاش کنید.</p>
</div>
<div id="incompleteMessage" class="statusMessage">
<p>لطفاً قبل از ارسال ، کلیه قسمتها را در فرم تکمیل کنید.</p>
</div>
</div>
این هم کدهای contact.php
<?php
// Define some constants
define( "RECIPIENT_NAME", "abbas" );
define( "RECIPIENT_EMAIL", "info@domainname.ir" );
define( "EMAIL_SUBJECT", "$subject" );
// Read the form values
$success = false;
$senderName = isset( $_POST['senderName'] ) ? preg_replace( "/[^\.\-\' a-zA-Z0-9]/", "", $_POST['senderName'] ) : "";
$senderEmail = isset( $_POST['senderEmail'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['senderEmail'] ) : "";
$subject = isset( $_POST['subject'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['subject'] ) : "";
$message = isset( $_POST['message'] ) ? preg_replace( "/(From:|To:|BCC:|CC:|Subject:|Content-Type:)/", "", $_POST['message'] ) : "";
// If all values exist, send the email
if ( $senderName && $senderEmail && $message ) {
$recipient = RECIPIENT_NAME . " <" . RECIPIENT_EMAIL . ">";
$headers = "Content-type: text/html; charset=UTF-8" . "\r\n" . "MIME-Version: 1.0" . "\r\n" . "From: " . $senderName . " <" . $senderEmail . ">";
$success = mail( $recipient, $subject , $message, $headers );
}
// Return an appropriate response to the browser
if ( isset($_GET["ajax"]) ) {
echo $success ? "success" : "error";
} else {
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ارسال پیام</title>
<link rel="stylesheet" href="css/pfonts.css" >
</head>
<body style="margin: 0; padding: 0;">
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="direction:rtl;">
<tr>
<td style="padding: 10px 0 30px 0;">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="400" style="border: 1px solid #cccccc; border-collapse: collapse;">
<tr>
<td align="center" bgcolor="#131313" style="padding: 40px 0 30px 0; color: #153643; font-size: 28px; font-weight: bold; font-family: iransans;">
<img src="https://sitename.ir/images/amlogo.png" alt="Abbas Masrour Logo" width="300" style="display: block;" />
</td>
</tr>
<tr>
<td bgcolor="#ffffff" style="padding: 40px 30px 40px 30px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<?php if ( $success ) { echo'
<tr>
<td style="text-align:center; color: #153643; font-family: iransans; font-size: 24px;">
<span style="color:#53d219;"><b>پیام شما با موفقیت ارسال شد</b></span>
</td>
</tr>
<tr>
<td style="text-align:justify; padding: 20px 0 30px 0; color: #153643; font-family: iransans; font-size: 16px; line-height: 20px;">
با تشکر از شما کاربر عزیز، پیام شما برای من ارسال شد و در اسرع وقت پاسخگو خواهم بود. در صورت وجود هرگونه مشکل با شماره تماس داخل سایت در ارتباط باشید. موفق باشید.
</td>
</tr>
'; } ?>
<?php if ( !$success ) echo '<tr>
<td style="text-align:center; font-family: iransans; font-size: 24px;">
<span style="color:#f70a0a;"><b>خطایی در ارسال رخ داد!</b></span>
</td>
</tr>
<tr>
<td style="text-align:justify; padding: 20px 0 30px 0; color: #153643; font-family: iransans; font-size: 16px; line-height: 20px;">
متاسفانه در فرایند ارسال پیام خطایی رخ داده است، لطفا مجددا تلاش کنید و در صورت وجود مشکل با شماره تلفن موجود در سایت تماس بگیرید. موفق باشید.
</td>
</tr>' ?>
<tr>
<td style="text-align:center; padding: 20px 0 30px 0; color: #153643; font-family: iransans; font-size: 16px; line-height: 20px;">
<a href="https://sitename.ir/" style="padding: 15px 20px; background-color: #44b710; border-radius: 30px; color:#fff; text-decoration: none;">بازگشت به سایت</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>