powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Форма обратной связи
22 сообщений из 22, страница 1 из 1
Форма обратной связи
    #38246586
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! При переносе с локального хоста на удаленный возникла проблема с формой обратной связи. Привожу код
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
<?php
   function ValidateEmail($email)
   {
      $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
      return preg_match($pattern, $email);
   }

   if($_SERVER['REQUEST_METHOD'] == 'POST')
   {
      $mailto = '40auto@mail.ru';
      $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
      $subject = 'Сообщение kaluga-emex.ru';
      $message = 'Сообщение от посетителя kaluga-emex.ru:';
      $success_url = 'success.php';
      $error_url = 'error.php';
      $error = '';
      $eol = "\n";
      $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
      $boundary = md5(uniqid(time()));

      $header  = 'From: '.$mailfrom.$eol;
      $header .= 'Reply-To: '.$mailfrom.$eol;
      $header .= 'MIME-Version: 1.0'.$eol;
      $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
      $header .= 'X-Mailer: PHP v'.phpversion().$eol;
      if (!ValidateEmail($mailfrom))
      {
         $error .= "The specified email address is invalid!\n<br>";
      }

      if (!empty($error))
      {
         $errorcode = file_get_contents($error_url);
         $replace = "##error##";
         $errorcode = str_replace($replace, $error, $errorcode);
         echo $errorcode;
         exit;
      }

      $internalfields = array ("submit", "reset", "send", "captcha_code");
      $message .= $eol;
      $message .= "IP адрес : ";
      $message .= $_SERVER['REMOTE_ADDR'];
      $message .= $eol;
      foreach ($_POST as $key => $value)
      {
         if (!in_array(strtolower($key), $internalfields))
         {
            if (!is_array($value))
            {
               $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
            }
            else
            {
               $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
            }
         }
      }

      $body  = 'This is a multi-part message in MIME format.'.$eol.$eol;
      $body .= '--'.$boundary.$eol;
      $body .= 'Content-Type: text/plain; charset=utf-8'.$eol;
      $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
      $body .= $eol.stripslashes($message).$eol;
      if (!empty($_FILES))
      {
          foreach ($_FILES as $key => $value)
          {
             if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
             {
                $body .= '--'.$boundary.$eol;
                $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
                $body .= 'Content-Transfer-Encoding: base64'.$eol;
                $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
                $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
             }
         }
      }
      $body .= '--'.$boundary.'--'.$eol;
      mail($mailto, $subject, $body, $header);
      header('Location: '.$success_url);
      exit;
   }
?>


На локальном хосте при отправке сообщения выводится страничка с сообщением об успешной отправке сообщения. Когда выгрузил этот код на удаленный хост, при отправке сообщения выводится сообщение об ошибке, причем само сообщение посетителя приходит на контактный mail.
Привожу скриншот ошибки, также вот ссылка на страницу с обратной связью http://40auto.ru/tes/kaluga-emex/contacts.php
Может отключить сообщения об ошибках? Что еще можно сделать? Спасибо заранее!
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246695
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так переносили, значит. Смотрите, что там в первой строке указанного файла - пробел, пустая строка, BOM или еще чего.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246728
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Помогло.
Причем по старому опыту помнил, что нужно было сохранять в кодировке utf-8 без ВОМ. Сегодня днем сохранил в такой кодировке и закачал на хост. Русский текст между тегами title был в виде краказябр. Пересохранил в кодировке просто utf-8, краказябры пропали. После этого попробовал работоспособность, появилась вышеприведенная ошибка. Сейчас плюнул на краказябры, подумал пусть уж лучше на одной странице будут краказябры, но она работать будет. Пересохранил в utf-8 без ВОМ - теперь и ошибку не выдает, и текст русский в заголовке страницы нормально отображается.
Еще раз спасибо!
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246730
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя не совсем все хорошо: краказябры опять появились, но майл отправляется нормально.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246830
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поисправлял некоторую информацию на сайте. На всякий случай прикрепляю код, который есть сейчас, но, по моему, там ничего не изменилось. Вот код PHP-скрипта.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
<?php
   function ValidateEmail($email)
   {
      $pattern = '/^([0-9a-z]([-.\w]*[0-9a-z])*@(([0-9a-z])+([-\w]*[0-9a-z])*\.)+[a-z]{2,6})$/i';
      return preg_match($pattern, $email);
   }

   if($_SERVER['REQUEST_METHOD'] == 'POST')
   {
      $mailto = '40auto@mail.ru';
      $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
      $subject = 'Сообщение с сайта kaluga-emex.ru';
      $message = 'Данные, переданные через форму обратной связи:';
      $success_url = './success.php';
      $error_url = './error.php';
      $error = '';
      $eol = "\n";
      $max_filesize = isset($_POST['filesize']) ? $_POST['filesize'] * 1024 : 1024000;
      $boundary = md5(uniqid(time()));

      $header  = 'From: '.$mailfrom.$eol;
      $header .= 'Reply-To: '.$mailfrom.$eol;
      $header .= 'MIME-Version: 1.0'.$eol;
      $header .= 'Content-Type: multipart/mixed; boundary="'.$boundary.'"'.$eol;
      $header .= 'X-Mailer: PHP v'.phpversion().$eol;
      if (!ValidateEmail($mailfrom))
      {
         $error .= "The specified email address is invalid!\n<br>";
      }

      if (!empty($error))
      {
         $errorcode = file_get_contents($error_url);
         $replace = "##error##";
         $errorcode = str_replace($replace, $error, $errorcode);
         echo $errorcode;
         exit;
      }

      $internalfields = array ("submit", "reset", "send", "captcha_code");
      $message .= $eol;
      $message .= "IP Address : ";
      $message .= $_SERVER['REMOTE_ADDR'];
      $message .= $eol;
      foreach ($_POST as $key => $value)
      {
         if (!in_array(strtolower($key), $internalfields))
         {
            if (!is_array($value))
            {
               $message .= ucwords(str_replace("_", " ", $key)) . " : " . $value . $eol;
            }
            else
            {
               $message .= ucwords(str_replace("_", " ", $key)) . " : " . implode(",", $value) . $eol;
            }
         }
      }

      $body  = 'This is a multi-part message in MIME format.'.$eol.$eol;
      $body .= '--'.$boundary.$eol;
      $body .= 'Content-Type: text/plain; charset=utf-8'.$eol;
      $body .= 'Content-Transfer-Encoding: 8bit'.$eol;
      $body .= $eol.stripslashes($message).$eol;
      if (!empty($_FILES))
      {
          foreach ($_FILES as $key => $value)
          {
             if ($_FILES[$key]['error'] == 0 && $_FILES[$key]['size'] <= $max_filesize)
             {
                $body .= '--'.$boundary.$eol;
                $body .= 'Content-Type: '.$_FILES[$key]['type'].'; name='.$_FILES[$key]['name'].$eol;
                $body .= 'Content-Transfer-Encoding: base64'.$eol;
                $body .= 'Content-Disposition: attachment; filename='.$_FILES[$key]['name'].$eol;
                $body .= $eol.chunk_split(base64_encode(file_get_contents($_FILES[$key]['tmp_name']))).$eol;
             }
         }
      }
      $body .= '--'.$boundary.'--'.$eol;
      mail($mailto, $subject, $body, $header);
      header('Location: '.$success_url);
      exit;
   }
?>



На всякий случай прикрепляю код формы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<form name="contact" method="post" action="<?php echo basename(__FILE__); ?>" enctype="multipart/form-data" id="Form1">
<div id="wb_Text4" style="margin:0;padding:0;position:absolute;left:10px;top:15px;width:48px;height:20px;text-align:left;z-index:0;border:0px #C0C0C0 solid;overflow-y:hidden;background-color:transparent;">
<div style="font-family:Arial;font-size:13px;color:#000000;">
<div style="text-align:left">Имя:</div>
</div>
</div>
<input type="text" id="Editbox1" style="position:absolute;left:63px;top:17px;width:389px;height:21px;line-height:21px;z-index:1;" name="name" value="">
<div id="wb_Text5" style="margin:0;padding:0;position:absolute;left:10px;top:45px;width:48px;height:20px;text-align:left;z-index:2;border:0px #C0C0C0 solid;overflow-y:hidden;background-color:transparent;">
<div style="font-family:Arial;font-size:13px;color:#000000;">
<div style="text-align:left">Email:</div>
</div>
</div>
<input type="text" id="Editbox2" style="position:absolute;left:63px;top:44px;width:389px;height:24px;line-height:24px;z-index:3;" name="email" value="">
<div id="wb_Text6" style="margin:0;padding:0;position:absolute;left:10px;top:75px;width:48px;height:20px;text-align:left;z-index:4;border:0px #C0C0C0 solid;overflow-y:hidden;background-color:transparent;">
<div style="font-family:Arial;font-size:13px;color:#000000;">
<div style="text-align:left">Текст</div>
</div>
</div>
<textarea name="TextArea1" id="TextArea1" style="position:absolute;left:63px;top:75px;width:390px;height:141px;z-index:5;" rows="1" cols="1"></textarea>
<input type="submit" id="Button1" name="" value="Отправить" style="position:absolute;left:66px;top:226px;width:96px;height:25px;z-index:6;">
</form>


Происходит следующая ситуация:
-на локальном сервере все нормально работает. Если закачиваю на хост просто в кодировке utf-8, то русские буквы на кнопках формы отображаются нормально, но при нажатии на кнопку Отправить выводится сообщение об ошибке (или просто предупреждение), фото которого прикреплял в первом посте. При этом письмо на ящик приходит, текст сообщения нормальный.
-пересохраняю страницу в кодировке utf-8 без BOM. После закачки на сервер русский текст на кнопках отображается нормально.
После нажатия на кнопку Отправить как и положено происходит переход на страницу с информацией об успешной отправке сообщения. Но при этом русский текст сообщения на мейл приходит в виде такой кодировки

Код: sql
1.
&#1072;&#1074;&#1087;&#1082;&#1103;&#1077;&#1090;&#1086;&#1072;&#1082;&#1088;&#1090;&#1072;



Не подскажете, что здесь можно сделать? Может в кодировке utf-8 просто отключить сообщение об ошибках? Или еще есть какой-нибудь выход из положения? Спасибо!
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246834
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет в кодировке utf-8 просто отключить сообщение об ошибках?Это все равно что спрятать от родителей дневник с двойкой.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246835
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,

в виде &последовательностей приходит только набранный в форме русский текст, или любой?
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246837
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр, только русский текст.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246839
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321Програмёр, только русский текст.

Извиняюсь. неверно вопрос задал...
В виде последовательностей приходит любой русский текст(даже статически вбитый в скрипте), или только тот, который был введён через форму обратной связи?
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246843
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже статический текст. Сейчас на хосте файл с кодировкой utf-8 без BOM. Там на кнопках русский текст отображается в виде краказябр. Вот скрин сообщения со страницы с такой кодировкой. Причем после отправки такого сообщения на сайте не выдает никаких ошибок: открывается страница с сообщением об успешной отправке. Сейчас изменю кодировку и новым постом скину другой скрин с тем, что будет при кодировке просто utf-8.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246845
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сменил кодировку на просто utf-8. Кнопки с русским текстом отображаются нормально. Сообщение и с русским, и с английским текстом приходит нормально (прилагаю скриншот). Но пользователю выводится сообщение об ошибке.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246847
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,

Проблему понял. Попробуй adddefaultcharset в htaccess. Не помню как точно пишется. Гугл рулит )
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246851
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр,

в htaccess на удаленном хостинге?
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246852
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321Програмёр,

в htaccess на удаленном хостинге?
Да
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246857
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то не могу найти, где этот файл там находится. На хостинге есть папка www, в которой сайт лежит, и папка cgi (пустая). Конечно, можно в техподдержку обратиться. А где там вообще этот файл искать? Как я понимаю, он на web сервере лежит. Думаю, меня к нему не пустят.
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246859
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,

Его там возможно и нет. Тогда надо создать в папке www файл .htaccess
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246866
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понимаю, файл .htaccess нужно расположить в папке www. Обязательно в этом файле все прописывать или достаточно упомянуть AddDefaultCharset utf-8 ??? В таком случае все остальные данные будут браться из файла .htaccess, который лежит на самом сервере? Правильно я все понял?
Спасибо!
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246870
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,

Да. Именно так. Только напиши, помогло ли )
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246876
alexander4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Програмёр Только напиши, помогло ли )

Все работает. Спасибо большое!
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246886
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexander4321,

работает? ура... Был рад помочь
...
Рейтинг: 0 / 0
Форма обратной связи
    #38246982
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что было-то, кто объяснит?
...
Рейтинг: 0 / 0
Форма обратной связи
    #38247004
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAА что было-то, кто объяснит?

Если по последнему вопросу, то как обычно - кодировка (кодировка в бд, кодировка самих файлов и content-type выдаваемый сервером + meta charset должны соответствовать друг другу), а если по первому, то в php буферизация отключена по дефолту (в отличие от .net), то есть первыми идут заголовки, далее содержимое (стандарт http), а тут сначала контент пихается в виде BOM, а затем заголовок редиректа header(), что и вызывает ошибку, как-то так.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Форма обратной связи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]