На форуме я нашел несколько ответов по моему вопросу, но они немного размыты. Можете дать конкретные ответы, в чем причины такого поведения и рекомендации, что делать лично на моем примере? Хочу заметить, что на виртуалке (в Денвере) этот код работает, а на хосте нет.
Вот код, который не работает на моем сайте:
| Код | <?php error_reporting(0);
header("Content-Type: text/html; charset=\"windows-1251\""); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
//Указываем свой почтовый адрес $email_it_to = "[email protected]";
//Переменные $rnd = $_POST['rnd']; $name = $_POST['name']; $email = $_POST['email']; $subject = $_POST['subject']; $body = $_POST['body']; $valid = $_POST['valid'];
function uft8html2utf8( $s ) { if ( !function_exists('uft8html2utf8_callback') ) { function uft8html2utf8_callback($t) { $dec = $t[1]; if ($dec < 128) { $utf = chr($dec); } else if ($dec < 2048) { $utf = chr(192 + (($dec - ($dec % 64)) / 64)); $utf .= chr(128 + ($dec % 64)); } else { $utf = chr(224 + (($dec - ($dec % 4096)) / 4096)); $utf .= chr(128 + ((($dec % 4096) - ($dec % 64)) / 64)); $utf .= chr(128 + ($dec % 64)); } return $utf; } } return preg_replace_callback('|&#([0-9]{1,});|', 'uft8html2utf8_callback', $s ); }
function utf8RawUrlDecode($source) { $decodedStr = ""; $pos = 0; $len = strlen($source); while ($pos < $len) { $charAt = substr($source, $pos, 1); if ($charAt == '%') { $pos++; $charAt = substr($source, $pos, 1); if ($charAt == 'u') { // we got a unicode character $pos++; $unicodeHexVal = substr($source, $pos, 4); $unicode = hexdec($unicodeHexVal); $entity = "&#". $unicode . ';'; $decodedStr .= utf8_encode($entity); $pos += 4; } else { // we have an escaped ascii character $hexVal = substr($source, $pos, 2); $decodedStr .= chr(hexdec($hexVal)); $pos += 2; } } else { $decodedStr .= $charAt; $pos++; } } return $decodedStr; }
if(!isset($rnd) || !isset($name) || !isset($email) || !isset($subject) || !isset($body) || !isset($valid)) { die(); } $email_from = $email;
$email_subject = "Тема: ".iconv('UTF-8','windows-1251',uft8html2utf8(utf8RawUrlDecode(stripslashes($subject))));
$email_message = "Отправитель: ".iconv('UTF-8','windows-1251',uft8html2utf8(utf8RawUrlDecode(stripslashes($name))))."\n"; $email_message .= "Дата отправки: ".date("d/m/Y").", время: ".date("H:i")."\n\n"; $email_message .= "======== НАЧАЛО СООБЩЕНИЯ =======\n"; $email_message .= iconv('UTF-8','windows-1251',uft8html2utf8(utf8RawUrlDecode(stripslashes($body)))); $email_message .= "\n======== КОНЕЦ СООБЩЕНИЯ ========";
$headers = 'From: '.$email_from."\r\n".'Reply-To: '.$email_from."\r\n".'X-Mailer: PHP/'.phpversion();
mail($email_it_to, $email_subject, $email_message, $headers); die(); ?>
|
|