Показать сообщение отдельно
Старый 13.12.2010, 12:32
wmz38 вне форума Посмотреть профиль Отправить личное сообщение для wmz38 Найти все сообщения от wmz38
  № 14  
Ответить с цитированием
wmz38

Регистрация: Dec 2010
Сообщений: 11
Яндекс-почта например UTF-8 не видит, а флэш передает данные из формы в UTF-8 - вот код для конвертации из UTF-8 в Win-1251
PHP код:
<?php
//тут данные из переданной флэш формы в кодировке UTF-8
$name $HTTP_POST_VARS['Name'];
$phone $HTTP_POST_VARS['Phone'];
$email $HTTP_POST_VARS['Email'];
$message $HTTP_POST_VARS['Message'];


// Функция преобразования, чтоб на мыло не приходила абра кадабра для поля "name"
function Utf8ToWin($fcontents) {
    
$out $c1 '';
    
$byte2 false;
    for (
$c 0;$c strlen($fcontents);$c++) {
        
$i ord($fcontents[$c]);
        if (
$i <= 127) {
            
$out .= $fcontents[$c];
        }
        if (
$byte2) {
            
$new_c2 = ($c1 3) * 64 + ($i 63);
            
$new_c1 = ($c1 >> 2) & 5;
            
$new_i $new_c1 256 $new_c2;
            if (
$new_i == 1025) {
                
$out_i 168;
            } else {
                if (
$new_i == 1105) {
                    
$out_i 184;
                } else {
                    
$out_i $new_i 848;
                }
            }
            
$out .= chr($out_i);
            
$byte2 false;
        }
        if ((
$i >> 5) == 6) {
            
$c1 $i;
            
$byte2 true;
        }
    }
    return 
$out;
}

//задаем переменной, конвертированное вышеописанной функцией, значение.
$cname Utf8ToWin($name);

//еще одна функция аналогичная первой
function Utf8ToWin1($fcontents) {
    
$out $c1 '';
    
$byte2 false;
    for (
$c 0;$c strlen($fcontents);$c++) {
        
$i ord($fcontents[$c]);
        if (
$i <= 127) {
            
$out .= $fcontents[$c];
        }
        if (
$byte2) {
            
$new_c2 = ($c1 3) * 64 + ($i 63);
            
$new_c1 = ($c1 >> 2) & 5;
            
$new_i $new_c1 256 $new_c2;
            if (
$new_i == 1025) {
                
$out_i 168;
            } else {
                if (
$new_i == 1105) {
                    
$out_i 184;
                } else {
                    
$out_i $new_i 848;
                }
            }
            
$out .= chr($out_i);
            
$byte2 false;
        }
        if ((
$i >> 5) == 6) {
            
$c1 $i;
            
$byte2 true;
        }
    }
    return 
$out;
}
//тоже самое что и выше
$cmessage Utf8ToWin1($message);

//тут некие настройки почты, темы, даты и времени сообщения
$sendTo "ваша@почта.ру";
$subject "Тема сообщения";
$Sender_Time=date("H.i");
$Sender_Date=date("j.m.Y");

$headers  "MIME-Version: 1.0\r\n";
$headers .="Content-type: text/html; charset=windows-1251\r\n";

$msg_body "Ф.И.О.: <b>\t$cname\n</b><br>";
$msg_body .= "Телефон: <b>\t$phone\n</b><br>";
$msg_body .= "Email: <b>\t$email\n</b><br>";
$msg_body .= "Сообщение отправлено: <b>\t$Sender_Date\n</b> в <b>\t$Sender_Time\n</b><br>";
$msg_body .= "Текст заявки: <br><b>\t$cmessage\n</b><br>";


mail($sendTo$subject$msg_body$headers);

?>
Все работает, вчера намучился но сделал


Добавлено через 2 минуты
У меня вопрос - а кто может помоч написать проверку в АС на корректную вводимость email и phone?


Последний раз редактировалось wmz38; 13.12.2010 в 12:41.