|
|
|
| Есть скрипт отправки формы но кириллицу передает кракозябрами такого вида
Текст сообщения
Помогите разобрать проблему
<?
if(!isset($rnd) || !isset($name) || !isset($email) || !isset($subject) || !isset($body)) {
showform();
} else {
processform();
}
function processform(){
global $name, $email, $subject, $body;
$email_to1 = "mail@mail.com"; // enter your email here
$email_from1 = $mail;
$email_to2 = $mail;
$email_from2 = $email_to1;
$email_subject = "Письмо с сайта: ".stripslashes($subject);
$email_message = "Сообщение от '".stripslashes($name);
$email_message .="' on ".date("d/m/Y")." at ".date("H:i")."\n\n";
$email_message .="--------- начало сообщения ---------\n\n";
$email_message .= stripslashes($body);
$email_message .="\n\n--------- конец сообщения ---------\n\n";
$confirmation_subject = "Тема письма";
$confirmation = "Это подтверждение того, что мы получили Ваше сообщение...";
// SEND EMAIL TO email_to2 - confirmation
$headers = 'От: '.$email_from2."\r\n" .
'Reply-To: '.$email_from2."\r\n";
mail($email_to2, $email_subject, $confirmation, $headers);
// SEND EMAIL TO email_to1 - message to you!!
$headers = 'от: '.$email_from1."\r\n" .
'Reply-To: '.$email_from1."\r\n";
mail($email_to1, $email_subject, $email_message, $headers);
echo "<p>Спасибо, сообщение отправлено!</p> <p>В ближайшее время мы свяжемся с Вами.</p>";
die();
} // end processform()
function showform() {
?>
<script type="text/javascript">
<!--
var http = createRequestObject();
var areal = Math.random() + "";
var real = areal.substring(2,6);
function createRequestObject() {
var xmlhttp;
try { xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); }
catch(e) {
try { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
catch(f) { xmlhttp=null; }
}
if(!xmlhttp&&typeof XMLHttpRequest!="undefined") {
xmlhttp=new XMLHttpRequest();
}
return xmlhttp;
}
function sendRequest() {
var rnd = Math.random();
var name = unescape(document.getElementById("name").value);
var email = unescape(document.getElementById("email").value);
var subject = unescape(document.getElementById("subject").value);
var body = unescape(document.getElementById("body").value);
try{
http.open('POST', 'sender.php');
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
http.onreadystatechange = handleResponse;
http.send('name='+name+'&email='+email+'&subject='+subject+'&body='+body+'&rnd='+rnd);
}
catch(e){}
finally{}
}
function check_values() {
var valid = document.getElementById("valid").value;
if(real !== valid) {
alert("Вы не прошли проверку..... \n\n Пожалуйста введите 4 цифры как только они появятся.");
return false;
}
var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
var subject = document.getElementById("subject").value;
var body = document.getElementById("body").value;
if(trim(name) == "" ||
trim(email) == "" ||
trim(subject) == "" ||
trim(body) == "") {
alert("Пожалуйста заполните все поля");
} else {
if(isEmail(email)) {
document.getElementById("submit").disabled=true;
document.getElementById("submit").value='Пожалуйста подождите..';
sendRequest();
} else {
alert("Электронная почта, кажется, неверна. \n\n Пожалуйста проверьте правильность адреса.");
document.getElementById("email").focus();
document.getElementById("email").select();
}
}
}
function handleResponse() {
try{
if((http.readyState == 4)&&(http.status == 200)){
var response = http.responseText;
document.getElementById("confirmation").innerHTML = response;
document.getElementById("confirmation").style.display ="";
document.getElementById("form").style.display = "none";
}
}
catch(e){}
finally{}
}
function isUndefined(a) {
return typeof a == 'undefined';
}
function trim(a) {
return a.replace(/^s*(S*(s+S+)*)s*$/, "$1");
}
function isEmail(a) {
return (a.indexOf(".") > 0) && (a.indexOf("@") > 0);
}
function botCheckInfo() {
alert("Чтобы предотвратить автоматическую отправку на наш адрес спам-сообщений через эту форму, пройдите простую проверку. \n\n Вы должны ввести 4 цифры для отправки сообщения.");
}
// -->
</script>
<div style="float:right; width:370px">
<div id="form">
<form>
<div class="row"><span class="label">Ваше имя:</span><br>
<span class="formw">
<input type="text" id="name" maxlength="50" />
</span></div>
<div class="row"><span class="label">Email:</span><br>
<span class="formw"><input type="text" id="email" maxlength="100" />
</span></div>
<div class="row"><span class="label">Тема сообщения:<br>
</span>
<span class="formw"><input type="text" id="subject" maxlength="255" />
</span></div>
<div class="row"><span class="label">Текст сообщения:<br>
</span>
<span class="formw"><textarea cols="35" rows="6" id="body"></textarea>
</span></div>
<div class="row"><a href="javascript:botCheckInfo()">Анти-спам</a>. Введите цифры '<b><script language="javascript">document.write(real)</script></b>' в поле:</div>
<div class="row"><input type="text" id="valid" size="15" /></div>
<div class="row">
<input type="button" value="Отправить сообщение" id="submit" onClick="return check_values();"></div>
</form>
<span style="font-size:11px;">Все поля обязательны для заполнения</span>
</div>
<div id="confirmation" style="display:none"></div>
</div>
<?
} // end showform()
?>
|
| |
|
|
|
|
|
|
|
для: MaxTax
(18.03.2008 в 21:25)
| | Нафига выкладывать весь этот код, если у вас проблема только в кодировках??? Чтобы не получить кракозяблы, нужно использовать кодировку UTF-8. | |
|
|
|
|
|
|
|
для: MaxTax
(18.03.2008 в 21:25)
| | Код выложил, может кому пригодится
а кодировка стоит UTF-8
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=utf-8');
может еще где-то надо выставлять, если знаете, подскажите | |
|
|
|
|
|
|
|
для: MaxTax
(18.03.2008 в 21:25)
| | Вы отправляете письмо в кодировке WINDOWS-1251, а данные из аякса приходят всегда в UTF-8. Вам нужно перекодировать переменные $name, $email, $subject, $body в кодировку WINDOWS-1251. | |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:07)
| | Подскажите пожалуйста функцию для перекодирования | |
|
|
|
|
|
|
|
для: MaxTax
(19.03.2008 в 12:42)
| | >>Подскажите пожалуйста функцию для перекодирования
iconv
почитай мануал | |
|
|
|
|
|
|
|
для: Antohins
(19.03.2008 в 12:55)
| |
iconv("WINDOWS-1251", "UTF-8", [Приняты данные])
|
| |
|
|
|
|
|
|
|
для: Antohins
(19.03.2008 в 12:55)
| | написал так
$email_subject = "Письмо с сайта: ".iconv("WINDOWS-1251", "UTF-8", "".stripslashes($subject)."");
пришло
%u0422%u0435%u043A%u0441%u0442
смена местами "UTF-8", "WINDOWS-1251" тот же результат | |
|
|
|
|
|
|
|
для: MaxTax
(19.03.2008 в 13:37)
| | у меня та же проблема. отпишись пожалуйста если найдешь решение проблемы | |
|
|
|
|
|
|
|
для: Antohins
(19.03.2008 в 13:56)
| | Правда перепутал местами кодировки
iconv('utf-8', 'windows-1251',[данные])
|
| |
|
|
|
|
|
|
|
для: Саня
(19.03.2008 в 11:07)
| | лучше все таки мне кажется везде использовать utf-8 а не париться с перекодировкой :) | |
|
|
|
|
|
|
|
для: KPETuH
(20.03.2008 в 09:13)
| | так ничего и не получается. В чем еще может быть проблема? | |
|
|
|
|
|
|
|
для: MaxTax
(20.03.2008 в 15:15)
| | используйте везде utf-8 ... | |
|
|
|
|
|
|
|
для: MaxTax
(20.03.2008 в 15:15)
| | как то была похожая проблема
бросил в директорию где работает Ajax
.htaccess
со строкой
AddDefaultCharset windows-1251
и попустило | |
|
|
|
|
|
|
|
для: MaxTax
(18.03.2008 в 21:25)
| | А еще посмотрите на настройки сервера. Если у Вас стоит AddDefaultCharset windows-1251, а вывести Вы пытаетесь в UTF-8, то ничего и не получится. Лучше эту директиву вообще закомментировать. | |
|
|
|
|
|
|
|
для: Sergeich
(20.03.2008 в 15:57)
| | HTTP_ACCEPT_CHARSET windows-1251,utf-8;q=0.7,*;q=0.7
по остальным пареметрам то же | |
|
|
|
|
|
|
|
для: MaxTax
(20.03.2008 в 17:31)
| | А о каком сервере идет вообще речь?
В апаче надо глянуть конфиг httpd.conf
Директивы HTTP_ACCEPT_CHARSET там нет. Посмотрите как там выглядит указанная мною выше директива. Если там стоит какая-то одна кодировка, windows-1251 например, то сервер просто не сможет работать корректно с другими. | |
|
|
|
|
|
|
|
для: Sergeich
(20.03.2008 в 19:37)
| | не имею доступа к httpd.conf
проверял phpinfo() | |
|
|
|