Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [PHP] кодировка в форме отправки, указать кодировку в скрипте 
:(
    Опции темы
Гениальный123Робот
Дата 11.12.2010, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



В общем это простенькая форма отправки сообщения через форму на сайте на ПОЧТУ. 
Вопрос такой: при пересылке данных все они в неправильной кодировке. То есть заполняю, жму Отправить. Открываю почту - там весь введенный текст - краказябры. Именно введенный. А то, что поле называется "Ваше имя"или "Ваш email" - то это все четко отображается в письме.  Как исправить?  Как мне думается, куда-то в скрипте нужно добавить кодировку, в которой пересылать текст. Вот куда ? 

И еще вопросик - на mail.ru что, вообще письма не доходят? И не у одного меня, я так понимаю? Как исправить, если возможно?

Код прилагаю.

Большое спасибо!

Код

<?php
if ($_POST['fio'] != "" && $_POST['email'] && $_POST['thetext'] ) {
$subject="пожелание_форуму";
$ip=$_SERVER["REMOTE_ADDR"];
$host = $ip;
$mon=date(m);
$day=date(j);
$year=date(y);
$hour=date(g);
$min=date(i);
$sec=date(s);
$hour=$hour-2;
if($hour<=0) { $hour+=12; }
$ts = "$hour:$min:$sec on $day/$mon/$year";


$to="[email protected]";

$body="

Ваше имя = $fio

Ваш email = $email

Пожелание = $thetext


Host: $host
Time: $ts";

$email = "From: Form <$to>";
mail($to, $subject, $body, $email);
?>

<html>
<head>
<title>Отправка пожелания</title>
</head>
<body bgcolor="#ffffff" text="#666666">

<p>&nbsp;</p>
<center>
<table border="1" cellpadding="3" cellspacing="0" width="400" bordercolor="#919191" bgcolor="#E6E6E6">
  <tr>
    <td width="100%">
      <p><center><b><font color="#000000">Письмо успешно отправлено по адресу: <?php echo $to ?></font></b></center>
      
    </td>
  </tr>
</table>

</body>
</html>

<?php
} else {
?>

<html>
<head>
    <title>Ошибка отправки</title>
</head>

<body bgcolor="#ffffff" text="#666666">
<p><center>
<table border="1" cellpadding="3" cellspacing="0" width="400" bordercolor="#919191" bgcolor="#E6E6E6">
  <tr>
    <td width="100%">
            <center>
            <b>Возникла ошибка при отправке письма.</b><br>
            <p>
            <font color="#FF0000">Возникли следующие ошибки:</font><br>
            <?php
                If (!$_POST['fio'])
                    echo "Ваше имя field is empty<br>";
    
                If (!$_POST['email'])
                    echo "Ваш email field is empty<br>";
    
                If (!$_POST['thetext'])
                    echo "Пожелание field is empty<br>";
    
            ?>
        <p>
        Письмо не было отправлено
      
    </td>
  </tr>
</table>
</body>
</html>

<?php
}
?>


Это сообщение отредактировал(а) Гениальный123Робот - 11.12.2010, 00:12
PM MAIL   Вверх
Гениальный123Робот
Дата 13.12.2010, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Частично заработало. Код поменял.
thetext и email - отображаются корректно при получении на Гмейле. А вот fio - никак не могу понять, почему в неверной кодировке отображается.  smile 
Как тут его так указать, чтобы на почте корректно отобразилось?


Код

<?php

mail("[email protected]", "с почтового ящика $email", $thetext );

?>



Код

<font face="verdana" size="1">
<form action="contact.php" method="post">
Ваше имя:<br>
<input type="text" name="fio" style="border: 1px solid #cccccc; background-color: #ffffff;" size="26" ><br><br>
Ваш email:<br>
<input type="text" name="email" style="border: 1px solid #cccccc; background-color: #ffffff;" size="26"><br><br>
Пожелание:<br>
<textarea name="thetext" rows="5" cols="30" style="border: 1px solid #cccccc; background-color: #ffffff;" size="26"></textarea><br><br>
<input type="submit" value="Отправить" style="border: 1px solid #cccccc; background-color: #ffffff;">
</p>
</form>
</font>


Это сообщение отредактировал(а) Гениальный123Робот - 13.12.2010, 00:04
PM MAIL   Вверх
The_Aleksey
Дата 13.12.2010, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: 5
Всего: 6



у меня вот такая функция отправки e-mail, все отображает корректно
Код

function email($from, $to, $subj, $html='')
   {
        
        $headers = "Content-type: text/html; charset=windows-1251 \r\n";
      if (!eregi("<(.*)>", $from))
      {
         $headers .= "From: ".$from." \r\n";
      }
      else
      {
         eregi("(.*) <(.*)>", $from, $mailfrom);
         $headers .= "From: =?windows-1251?B?".base64_encode($mailfrom[1])."?= <".$mailfrom[2]."> \n\r";
      }
      if (eregi("<(.*)>", $to))
      {
         eregi("(.*) <(.*)>", $to, $mailto);
         $to = "=?Windows-1251?B?".base64_encode($mailto[1])."?= <".$mailto[2].">";
      }
      $message = $html;
      $subj = "=?windows-1251?B?".base64_encode($subj)."?=";

      return @mail($to, $subj, $message, $headers);
   }


Это сообщение отредактировал(а) The_Aleksey - 13.12.2010, 17:25
PM MAIL   Вверх
Гениальный123Робот
Дата 14.12.2010, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



The_Aleksey, спасибо! Я помню, что у меня в коде
 
Код

mail("[email protected]", "с почтового ящика $email", $thetext );

отсутствует 4-ый параметр. Как его грамотно добавить и что еще приложить к нему, чтобы форма заработала, не подскажешь?
У тебя достаточно громоздкий код. Интересно было бы его максимально урезать до моего.  
PM MAIL   Вверх
patap
Дата 15.12.2010, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



подставь нужную кодировку вместо "кодировка", ту кодировку в которой приходят данные с клиента
Код

$header  = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=кодировка' . "\r\n";


и передавай $headers 4м параметром в mail()


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
The_Aleksey
Дата 15.12.2010, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


<?php
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.10.2007
Где: Москва

Репутация: 5
Всего: 6



Гениальный123Робот, если тебе нужно отправить форму на почту, то делается это так:
Код

$from = $_POST['fio'].' <'.$_POST['email'].'>';
$to = ""; // здесь твое мыло
$subj = 'форма с сайта';
$html = 'Имя: '.$_POST['fio'].'<br>Пожелания: '.$_POST['thetext'];

и потом юзаешь функцию, о которой я писал выше:
Код

email($from, $to, $subj, $html);

и все будет отлично!

P.S.
по поводу громозкости - здесь уже максимально все урезано, и дальше некуда, можно разве что убрать распознавание отправки вида "имя <e-mail>"

Это сообщение отредактировал(а) The_Aleksey - 15.12.2010, 10:11
PM MAIL   Вверх
Гениальный123Робот
Дата 15.12.2010, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



patap, спасибо, с этим понял. 

Проблема с одной переменной $fio. Куда я ее не вставляю - везде она не отображается нормально.
Пишу во второе поле что-то вроде: "человек по имени $fio пишет с адреса $email"  -  и все выводится красиво, но кроме $fio smile
Или в третье поле что-то вроде: "человек по имени $fio сообщает Вам $thetext " - и снова все четко выдается, но кроме имени этого $fio.
Почему? 

The_Aleksey, этот код буду пробовать, если так и не пойму, в чем дело с этой $fio :( 
PM MAIL   Вверх
patap
Дата 17.12.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 893
Регистрация: 7.5.2005
Где: Украина, Зп

Репутация: 26
Всего: 40



я думаю, что кодировка скрипта не соответствует кодировке данных, которые пришли от клиента.

т.е к примеру скрипт имеет кодировку cp1251, данные пришли в utf-8, и ты составляешь строку типа
Код

  $str = 'Привет, ' . $fio;

где "Привет" - имеет кодировку cp1251, а в переменной $fio - содержатся данные в utf-8.
И следовательно, когда отправляется письмо, то в заголовке указывается, допустим, cp1251 и получается, что часть строки не соответсвует отсылаемой кодировке.

думаю, нужно внимательно проверить, чтобы везде была одна кодировка


--------------------
На боку кобура болталась, сзади шашка отцовская звякала. 
Впереди меня все хохотало, а позади все плакало (с)
PM MAIL ICQ   Вверх
Гениальный123Робот
Дата 21.12.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 2.1.2006

Репутация: нет
Всего: нет



Ага, а как? Код весь перед тобой. Где еще что проверять?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.