1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

проблема с кодировкой в форме

Тема в разделе "Web Coding", создана пользователем ufaclub, 19 мар 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ufaclub

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    394
    Симпатии:
    17
    скрипт выдерает из формы нтмл данные и отправляет на мыло..первый раз в нормальной еодировке а потом уже ироглифами где прописать мол чтоб скриптик отсылал в нужной кодировке(русскими чтоб буквами приходило)

    <?
    if(isset($_POST['fio']))
    {
    $to = "to@mail.ru";
    $from = "from@mail.ru";
    $subject = "Инфа";
    $headers = "From: $from\r\n";
    $headers .= "Content-type: text/html\r\n";
    $message = "<html>
    <body bgcolor='#DCEEFC'>
    <center>
    </center>
    <font color='red'>ФИО:".$_POST['fio']."</font><br>
    <font color='blue'>E-mail:".$_POST['email']."</font><br>
    <font color='green'>Phone:".$_POST['phone']."</font><br>
    <font color='red'>Text:".$_POST['mess']."</font><br>
    </body>
    </html>";
    mail($to, $subject, $message, $headers);
    header("Location: legal.html");
    }

    ?>
     
  2. masto

    masto Прохожие

    добавь заголовки к mail()
     
  3. ufaclub

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    394
    Симпатии:
    17
    ыы напримере б показал ато ячет невкуриваю..






    -------

    :mad: Не на базаре! В следующий раз париться пойдешь!
     
  4. Kai

    Kai

    Регистр.:
    29 июн 2007
    Сообщения:
    329
    Симпатии:
    46
    PHP:
    $headers "Content-type: text/plain; charset=windows-1251";
     
    ufaclub нравится это.
  5. RALF

    RALF черный рыцарь

    Регистр.:
    1 май 2006
    Сообщения:
    114
    Симпатии:
    25
    ДА всё решается очень просто:

    PHP:

        $subject 
    "Биржа труда";
        
    $email='poisk@home.ru';
        
    $headers "From: site <$email>\n";
        
    $headers .= "MIME-Version: 1.0\r\n";
        
    $headers .= "Content-type: text/html; charset=windows-1251\r\n";//iso-8859-1
        
    $headers .= "Reply-To: $email\n\n";
        
    $message.='Текст письма';
    $send = @mail($email$subject$message$headers);
    :)
     
    ufaclub нравится это.
  6. ufaclub

    ufaclub

    Регистр.:
    1 май 2007
    Сообщения:
    394
    Симпатии:
    17
    всем спасибо.проблема решена
     
  7. sashas

    sashas Писатель Нарушитель

    Регистр.:
    20 мар 2008
    Сообщения:
    2
    Симпатии:
    0
    Скажите в чем м.б. проблема если mysql в win1251 А на сайте все пишется если изменить на русском то вопросиками.
     
  8. rosko

    rosko Создатель

    Регистр.:
    8 фев 2008
    Сообщения:
    24
    Симпатии:
    3
    Кодировка страницы, с которой отправляются данные, не подходит. Попробуй указать мета-тегом

    <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
     
  9. ortega3000

    ortega3000 Создатель

    Регистр.:
    21 мар 2008
    Сообщения:
    14
    Симпатии:
    7
    Второй вариант - получать данные из мускула в нужной кодировке. Тут используем вот такую штуку перед запросом на выборку данных:

    Код:
    set names 'cp1251';
    Правда, если страница отдается в западноевропейской кодировке, то вместо русских букв все равно получим фигню.

    А в идеале надо чтобы и мета-теги, и хедеры и база данных были в одной кодировке. Например, windows-1251. Тогда не будет никаких проблем.
     
  10. Black#FFFFFF

    Black#FFFFFF

    Регистр.:
    19 июл 2007
    Сообщения:
    174
    Симпатии:
    107
    Итак. Номер раз по поводу кодировок:
    обратись к хостеру и попроси чтобы для твоего сайта указали следующее - adddefaultcharset cp1251
    либо php_value default_charset cp1251 (последнее имеет больший приоритет чем первая директива)
    Тогда страница будет "отдаваться" сервером с этой кодировкой
    если у тебя есть права на то, чтобы положить в папку с сайтам .htaccess и он будет обрабатываться - то можешь в этот файл сам добавить эти строки.
    Дальше. Тут сказали о set names - на самом деле это только Верхушка Айсберга.
    Вот статейка - почитай. Там обсуждается очень подробно о всех проблемах с кодировками из баз данных:
    http://www.webmasterschool.ru/articles/article17.php
    В метатегах сайта обязательно укажи в подключаемом хидере следующее:

    HTML:
    <?xml version="1.0" encoding="windows-1251"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    
    <head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <meta http-equiv="Content-Language" content="ru"/>
    
    А чтобы в дальнейшем проблем вообще не возникало - уходите в сторону UTF-8, которая великолепно поддерживает кирилицу)
     
Статус темы:
Закрыта.