С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/46: Рейтинг темы: голосов - 46, средняя оценка - 4.52
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100

После переезда на другой хостинг не работает форма обратной связи

16.01.2011, 20:46. Показов 9207. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Возникла небольшая проблема. PHP я не знаю, но форму обратной связи делал для своего сайта сам по примерам и методом проб и ошибок.
После того, как закрылся тот хостинг на котором находился сайт, пришлось разместить его на другом хостинге. Через довольно длительное время решил проверить работоспособность формы обратной связи. Оказалось что она не работает.
Вообщем, есть страница на которой находится форма обратной связи
contacts.htm
Там такой код:
<form action="sendmail.php" method="POST">
<input name="f_nazvanie" type="hidden">
<tr>
<td>
Ваш e-mail, на который хотите получить ответ<br><br>
</td>
<td>
<input type="text" name="f_mail">
</td>
</tr>
<tr>
<td>
Ваше имя<br><br>
</td>
<td>
<input type="text" name="f_name">
</td>
</tr>
<tr>
<td valign="top">
Сообщение
</td>
<td>
<textarea name="f_message" cols="30" rows="10"></textarea>
</td>
</td>
</tr>
</table><br>
<input type="submit" value="Отправить">
</form>

Далее есть ещё два файла
config.php

<?
#####
# Edit me
$email = "мыло@мыло.ru";
$subject = "Тема 1";
$subject2 = "Тема 2";
?>


И второй файл
sendmail.php

<?
include "config.php";

$headers.= "Content-Type: text/html; charset=windows-1251\r\n";
$headers.= "From: ".$email." <".$email.">\r\n";

if ($f_mail <> "" and $f_name <> "")
{
mail("$email", "Сообщение от посетителя сайта", "СООБЩЕНИЕ ОТ ПОСЕТИТЕЛЯ САЙТА<br><br><br> E-mail:> <a href='mailto:$f_mail'>$f_mail</a><br><br><br> [Имя]:> $f_name<br> [Сообщение]:> $f_message", "$headers");

$msg = include "/form_good.htm";
} else {

$msg = include "/form_error.htm";
}
?>
<p><? echo $msg; ?></p>


После нажатия отправки появляется ошибка:
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/******/public_html/sendmail_c.php on line 14

Warning: include(/form_error.htm) [function.include]: failed to open stream: no suitable wrapper could be found in /home/******/public_html/sendmail.php on line 14

Warning: include() [function.include]: Failed opening '/form_error.htm' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/******/public_html/sendmail.php on line 14


На старом хостинге это всё работало очень хорошо и без ошибок.
В поисковиках я нашёл только объяснение, что это связано с тем, что в PHP отключили одну из функций. Но и включение нежелательно из-за атак на сайт. Вариант - позвонить тому, кто предоставляет хостинг и попросить включить, отпадает.
Подскажите, что и как тут можно исправить, чтобы всё заработало. Если кто знает, то отвечайте подробно, так как в PHP я почти ничего не понимаю.
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.01.2011, 20:46
Ответы с готовыми решениями:

Не работает форма обратной связи после переноса на другой хостинг
Всем привет. После перемещения сайта на другой хостинг перестала работать форма обратной связи. На старом хостинге всё отправлялось и...

Не работает форма обратной связи
Здравствуйте! Очень прошу помочь разобраться с формой обратной связи на сайте. Проблема заключается в том (по словам тех. поддержки...

Не работает форма обратной связи
при обработке формы обратной связи почему-то выводится диалоговое окно с предложением загрузить файл- обработчик формы, что это? Может...

11
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
17.01.2011, 08:00
Цитата Сообщение от Close Посмотреть сообщение
Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/******/public_html/sendmail_c.php on line 14
Warning: include(/form_error.htm) [function.include]: failed to open stream: no suitable wrapper could be found in /home/******/public_html/sendmail.php on line 14
Warning: include() [function.include]: Failed opening '/form_error.htm' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/******/public_html/sendmail.php on line 14
проверь пути до файлов которые ты подключаешь функцией include(), в ошибках говорится что неудалось их подключить "Failed opening"
PS возможно ещё дело в правах доступа на папки
0
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
17.01.2011, 19:33  [ТС]
Цитата Сообщение от xand Посмотреть сообщение
проверь пути до файлов которые ты подключаешь функцией include(), в ошибках говорится что неудалось их подключить "Failed opening"
PS возможно ещё дело в правах доступа на папки
Все пути правильные. Пробовал и абсолютные пути и относительные.
Причём, если убрать снизу и просто вставить слова, то сообщение просто не отправляется. И никаких ошибок.
0
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
17.01.2011, 19:41
нужно узнать включена ли функция mail() на твоём хостинге... phpinfo() - покажет это
0
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
17.01.2011, 21:45  [ТС]
PHP Version 5.2.15

Configuration
PHP Core

mail.force_extra_parameters no value no value
safe_mode Off Off
safe_mode_exec_dir /usr/local/apache-php5/php/bin /usr/local/apache-php5/php/bin
safe_mode_gid Off Off
safe_mode_include_dir no value no value
sendmail_from me@localhost.com me@localhost.com
sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i

Вот это я нашёл в конфигурации. Что тут не правильно?
0
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
18.01.2011, 06:08
напиши хостеру, скажи чтобы включили

Добавлено через 17 минут
Помоему когда функция отключена то там написано так:
Code
1
2
3
4
mail.force_extra_parameters no value no value
sendmail_from no value no value
sendmail_path no value no value
path to sendmail no value
Попробуйте запустить скрипт с таким содержимым
PHP
1
2
3
4
<?phph
if(!mail("куда отправляем", "я письмо", "я сообщение"))
echo 'не пашет :(';
?>
ps замените на свой адрес почты "куда отправляем"
0
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
18.01.2011, 20:44  [ТС]
Цитата Сообщение от xand Посмотреть сообщение
1
2
3
4
5
6
<?phph
if(!mail("куда отправляем", "я письмо", "я сообщение"))
echo 'не пашет ';
?>

Скопировал код, выдаёт ошибку.
Вместо <?phph последняя буква лишняя.
Причём писало, что ошибка во второй строке, хотя должно было показать первую.
Вообщем, такой простой код работает, но обработка кода происходит долго. Около 5-7 секунд.
0
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
19.01.2011, 05:12
Цитата Сообщение от Close Посмотреть сообщение
такой простой код работает
письмо отправилось?
0
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
19.01.2011, 20:41  [ТС]
Цитата Сообщение от xand Посмотреть сообщение
письмо отправилось?
Да, письмо отправилось.
Я так понял, что дело в версии php.
Если упростить код, который я писал в самом начале темы, то письмо отправляется, но приходит пустым. То есть данные, которые вводятся в поля форму просто не отправляются и не вставляются в функцию.
Если я делаю проверку на заполнение формы, то ответ всегда один - "не заполнено одно из полей". Хотя все поля заполняются.
Вроде на старом хостинге версия php была 4, а на новом php5. И тут метод POST не работает. В интернете нашёл, что в php5 немного другой синтаксис. И данные формы должны передаваться так - $POST('message')
Инклюды хостером запрещены, но тут тоже по другому, допустим - header('Location: /error.htm')
Header работает, а передачу данных ещё не попробовал.
0
4 / 4 / 0
Регистрация: 21.02.2010
Сообщений: 43
19.01.2011, 23:11
Кстати, по данной теме вопрос. У меня немного другая проблема - почта с сайта отправляется без
проблем, но приходит на ящик сплошная кадабра... ящик на meta.ua
Пробовал в разных кодировках, на хосте ничего не настраивал. На локалке при кодировке в конфиг-
файле 1251(в денвере), было нормально. Сайт сделан на utf-8,
сценарий такой -
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 $theme = "Сообщение с сайта";
       $theme = convert_cyr_string ($theme,'w', 'k');
       $message = "<html>
                  <head></head>
                  <body>
                  Письмо отправлено - ".date ("d.m.Y H:i:s")."<br>
                  от пользователя ".$login." <br>
                  адрес - ".$mailers."<br>
                  ".$mess."<br>
                  </body>
                  </html>";
       $message = convert_cyr_string ($message, 'w', 'k');
       $headers = "Content-Type: text/html; charset='windows-1251'\r\n";
       if (mail($to, $subjekt, $message, $headers))
0
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
20.01.2011, 07:13
inkrom, значит вместо строки "include config.php" нужно вставить содержимое файла config.php.
Вместо "<?" нужно написать "<?php"
В общем у меня получилось так:
Страница с формой
HTML5
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
<form action="sendmail.php" method="post">
<input name="f_nazvanie" type="hidden"> 
<table>
<tr>
<td>
Ваш e-mail, на который хотите получить ответ<br><br>
</td>
<td>
<input type="text" name="f_mail">
</td>
</tr>
<tr>
<td>
Ваше имя<br><br>
</td>
<td>
<input type="text" name="f_name">
</td>
</tr>
<tr>
<td valign="top">
Сообщение
</td>
<td>
<textarea name="f_message" cols="30" rows="10"></textarea>
</td>
</td>
</tr>
</table><br>
<input type="submit" name="send_btn" value="Отправить">
</form>
файл-обработчик sendmail.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(isset($_POST['send_btn']) and $_POST['f_mail'] != '' and $_POST['f_name'] != '')
{
    $f_mail = $_POST['f_mail'];
    $f_name = $_POST['f_name'];
    $f_message = $_POST['f_message'];
    
    $email = 'admin@site.ru';
    $subject = 'Сообщение с сайта';
    
    $headers.= 'Content-Type: text/html; charset: windows-1251';
    $headers.= 'From: '.$email;
    
    $mail_content = 'Сообшение от посетителя сайта:<br/> E-mail: '.$f_mail.'<br/>Имя: '.$f_name.'<br/> Сообщение: '.$f_message;
    
    mail($mail, $subject, $mail_content, $headers);
    echo 'работает'; //можно  заменить на header('Location: нужная страница');
}
else
{
    echo 'не работает'; //можно  заменить на header('Location: нужная страница');
}
?>
1
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
20.01.2011, 20:33  [ТС]
Цитата Сообщение от inkrom Посмотреть сообщение
$headers = "Content-Type: text/html; charset='windows-1251'\r\n";
Попробуй убрать одинарные кавычки $headers = "Content-Type: text/html; charset=windows-1251\r\n";
Мне кажется что из-за них кодировка 1251 не работает.

Добавлено через 4 минуты
xand, Всё получилось, всё работает.
Без разницы <?php или <?
include config.php - это тоже работает.
Но инклюд не работает при переходе на другую страницу, надо header. С ним работает.
Ну, и $f_name = $_POST['f_name']; обязательно надо прописывать, иначе отправляет пустую форму.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.01.2011, 20:33
Помогаю со студенческими работами здесь

Не работает форма обратной связи
Вроде делаю всё по шаблону, но при нажатии на кнопку &quot;Отправить&quot; ничего не происходит &lt;form method=&quot;post&quot;...

Форма обратной связи не работает
Привет! помогите понять в чем беда? есть index.php в котором: &lt;form action=&quot;index1.php&quot; method=&quot;Post&quot;&gt; &lt;input...

Не работает форма обратной связи
У меня есть сайт createfashion. ru - не реклама, написал для тех кто захочет помочь (писал сайт не сам, с php не дружил), и его...

Форма обратной связи не работает
Доброго времени суток! Делал сайт на платном конструкторе сайтов в течение бесплатного пробного периода, по оканчанию этого периода я...

Не работает форма обратной связи
Добрый день! Перестала работать форма обратной связи. Пишет, что сообщение отправлено, но письма не доходят &lt;?php if (isset($_POST))...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Old Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru