Помогите с PHP

Shaman77
На сайте с 14.09.2006
Offline
32
577

На сайте есть форма обратной связи.

Вот код PHP

<?php

// remember to replace you@email.com with your own email address lower in this code.
// load the variables form address bar
$subject = $_POST["subject"];
$message = $_POST["message"];
$from = $_POST["from"];
$verif_box = $_POST["verif_box"];

// remove the backslashes that normally appears when entering " or '
$message = stripslashes($message);
$subject = stripslashes($subject);
$from = stripslashes($from);

// check to see if verificaton code was correct
if(md5($verif_box).'a4xn' == $_COOKIE['tntcon']){
// if verification code was correct send the message and show this page

mail("you@email.com", 'Сообщене с сайта от: '.$subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from");


// delete the cookie so it cannot sent again by refreshing this page
setcookie('tntcon','');
} else if(isset($message) and $message!=""){
// if verification code was incorrect then return to contact page and show error
header("Location:".$_SERVER['HTTP_REFERER']."?subject=$subject&from=$from&message=$message&wrong_code=true");
exit;
} else {
echo "no variables received, this page cannot be accessed directly";
exit;
}
?>

как сделать, чтобы сообщения приходили в кодировке windows-1251, а не кракозябрами)?

[Удален]
#1
satrau
На сайте с 08.11.2009
Offline
12
#2

может и это поможет http://php.su/functions/?iconv


....
$message = iconv("UTF-8", "windows-1251", $message);
mail("you@email.com", 'Сообщене с сайта от: '.$subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from");
...
Россошь (http://www.flash9.ru)
Shaman77
На сайте с 14.09.2006
Offline
32
#3
satrau:
может и это поможет http://php.su/functions/?iconv

....
$message = iconv("UTF-8", "windows-1251", $message);
mail("you@email.com", 'Сообщене с сайта от: '.$subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from");
...

этот вариант не помогает, тем более сообщение вообще пропадает

[Удален]
#4

Shaman77 значит кодировку поменяй местами

[umka]
На сайте с 25.05.2008
Offline
456
#5

Если сам скрипт работает в кодировке cp1251, то во-первых:

$subject=mb_encode_mimeheader('Сообщене с сайта от: '.$subject,'cp1251');

во-вторых:

mail("you@email.com", $subject, $_SERVER['REMOTE_ADDR']."\n\n".$message, "From: $from\r\nContent-Type: text/plain; charset=cp1251");
Лог в помощь!
Shaman77
На сайте с 14.09.2006
Offline
32
#6

Всем спасибо! помогло. Но теперь еще один косяк - в теме письма кодировка не меняется и по аналогии с предыдущим это

$subject = iconv("windows-1251", "UTF-8", $subject);

на помогает. В чем проблемма?

satrau
На сайте с 08.11.2009
Offline
12
#7

ну и $subject тоже надо перекодировать


$subject = 'Сообщене с сайта от: '.$subject ;
$subject = iconv("windows-1251", "UTF-8", $subject);

, и это привести в нормальный вид

вместо ... $_SERVER['REMOTE_ADDR']."\n\n".$message...

занести сначала все в $message

$message = trim($_SERVER['REMOTE_ADDR'])."\n\n".$message;

потом сконвертировать, а уже потом делать


mail("you@email.com", $subject, $message, "From: $from");

И разбираться проще и видно, что где делается.

Shaman77
На сайте с 14.09.2006
Offline
32
#8

[umka], вообще всю кодировку поменяло, ничего не читается

Shaman77 добавил 23.01.2010 в 22:12

satrau:
ну и $subject тоже надо перекодировать

$subject = 'Сообщене с сайта от: '.$subject ;
$subject = iconv("windows-1251", "UTF-8", $subject);

, и это привести в нормальный вид
вместо ... $_SERVER['REMOTE_ADDR']."\n\n".$message...
занести сначала все в $message
$message = trim($_SERVER['REMOTE_ADDR'])."\n\n".$message;
потом сконвертировать, а уже потом делать

mail("you@email.com", $subject, $message, "From: $from");

И разбираться проще и видно, что где делается.

сейчас попробую

Shaman77 добавил 23.01.2010 в 22:20

Все заработало, всем спасибо! :) тема закрыта

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий