Кодировка във форма за контакти

kkeliov

Registered
Здравейте на всички,
От известно време се опитвам една форма за контакт да изпраща данните на кирилица, но нещо не се получава:

PHP кодът/sendmail.php/ е следния,

Код:
<?php

$visitor = $_REQUEST['visitor'];
$visitormail = $_REQUEST['visitormail'];
$subject = $_REQUEST['subject'];
$notes = $_REQUEST['notes'];
$visitor=trim($visitor);
$visitormail=trim($visitormail);
$subject=trim($subject);
$notes=trim($notes);
$notes = addslashes($notes);

$ipi = getenv("REMOTE_ADDR");
$httprefi = getenv ("HTTP_REFERER");
$httpagenti = getenv ("HTTP_USER_AGENT");
if (!isset($_REQUEST['visitormail'])) {
header( "Location: /contacts.php" );
}

elseif(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,"."))) {
header( "Location:/contacterror.php" );
}
elseif (empty($visitor) || empty($visitormail) || empty($notes)) {
header( "Location: /contacterror.php" );
}

else {
$todayis = date("l, F j, Y, g:i a");
$message = " $todayis [EST] \n
From: $visitor ($visitormail)\n
Subject: $subject \n
Message: $notes \n
Additional Info : IP = $ipi \n
Browser Info: $httpagenti \n
Referral : $httprefi \n
";

$from = "From: $visitormail\r\n";

mail("...@abv.bg", $subject, $message, $from);
header( "Location: /thankyou.php" );

}
?>


а самата форма:
Код
Код:
<form action="/sendmail.php" method="post">
<div>
<p style="padding-left: 60px; text-align: left;"><span class="style6">*</span>Вашето име: <br /> <input class="style6" name="visitor" size="35" type="text" /> <br /> <span class="style11">*</span>Вашият еmail:<br /> <input class="style6" name="visitormail" size="35" type="text" /> <br /> <span class="style11">*Относно</span>:<br /> <input class="style6" name="subject" size="35" type="text" /> <br /> <br /> <br /> <span class="style11">*</span>Съобщение:         <br /> <textarea class="style6" cols="40" rows="8" name="notes"></textarea></p>
<p style="padding-left: 60px; text-align: center;"><input class="style6" type="submit" value="Изпрати" /></p>
</div>
<div style="padding-left: 60px;">(Полетата означени с /<span class="style6">*/</span> са задължителни)</div>
</form>


Със и без header('Content-Type: text/html; charset=utf-8'); в php файла, резултата е един и същ>> С‚РµСЃС и т.н. Опитах и с вариант като този:
$from = "From: $visitormail\r\n
Content-type: text/html; charset=utf-8\r\n";

но резултата не се промени.

Ще съм благодарен на всякакви предложение
 
header('Content-Type: text/html; charset=utf-8');

+

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
dhtodorov каза:
header('Content-Type: text/html; charset=utf-8');

+

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Това беше първият начин, по който започнах да търся решение, но без резултат.
 
Първо: сложи в хедърите на писмото енкодинга му.
Второ: научи се да слагаш всички хедъри, за да не ти се възприема писмото като спам. Също така много хостинг доставчици правят проблем когато се пращат писма от чужд мейл (по-скоро от домейн, който не е свързан с ip на сървъра). Затова ти препоръчвам да си ги пращаш все едно от твоя мейл, а на reply to да слагаш мейла който е въведен във формата.

Ето пробвай така:

Код:
<?php

$visitor = $_REQUEST['visitor'];
$visitormail = $_REQUEST['visitormail'];
$subject = $_REQUEST['subject'];
$notes = $_REQUEST['notes'];
$visitor=trim($visitor);
$visitormail=trim($visitormail);
$subject=trim($subject);
$notes=trim($notes);
$notes = addslashes($notes);

$ipi = getenv("REMOTE_ADDR");
$httprefi = getenv ("HTTP_REFERER");
$httpagenti = getenv ("HTTP_USER_AGENT");
if (!isset($_REQUEST['visitormail'])) {
header( "Location: /contacts.php" );
}

elseif(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,"."))) {
header( "Location:/contacterror.php" );
}
elseif (empty($visitor) || empty($visitormail) || empty($notes)) {
header( "Location: /contacterror.php" );
}

else {
$todayis = date("l, F j, Y, g:i a");
$message = " $todayis [EST] \n
From: $visitor ($visitormail)\n
Subject: $subject \n
Message: $notes \n
Additional Info : IP = $ipi \n
Browser Info: $httpagenti \n
Referral : $httprefi \n
";

$my_email = "myemail@mysite.com";

$headers  = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=utf-8\r\n";
$headers .= "From: <$my_email>\r\n";
$headers .= "Reply-To: <$visitormail>\r\n";
$headers .= "Return-Path: <$my_email>\r\n";
$headers .= "Date: " . date("r")."\r\n";
$headers .= "Message-ID: <".time()."-".$my_email.">\r\n";
$headers .= "X-Originating-IP: [$_SERVER[REMOTE_ADDR]]"."\r\n";
$headers .= "X-Mailer: PHP/" . phpversion();


mail($my_email, $subject, $message, $headers);
header( "Location: /thankyou.php" );

}
?>
 
koychev, изключително много ти благодаря - по този начин стана перфектно.

+1!
 
За да не отварям нова тема направо ще пиша в тази.

Имам следният въпрост: какво трябва да се добави/промени. за да може получателя на имейла да се избира от падащ списък?

Знам, че трябва да има нещо като:
Код:
<select id="primer" name="email">
<option value="0" selected="selected">Име 0</option>
									<option value="1">Име 1 </option>
									<option value="2">Име 2</option>
									<option value="3">Име 3</option>

							</select>


Предварително благодаря!
 
За да не пиша нова тема я кажете от първия пост,първия код как да си напиша моя емайл демек да ми пращат на мене.
 

Back
Горе