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

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

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

Author24 — интернет-сервис помощи студентам
Всем привет.
Возникла небольшая проблема. 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.01.2011, 20:46
Ответы с готовыми решениями:

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

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

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

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

11
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
17.01.2011, 08:00 2
Цитата Сообщение от 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  [ТС] 3
Цитата Сообщение от xand Посмотреть сообщение
проверь пути до файлов которые ты подключаешь функцией include(), в ошибках говорится что неудалось их подключить "Failed opening"
PS возможно ещё дело в правах доступа на папки
Все пути правильные. Пробовал и абсолютные пути и относительные.
Причём, если убрать снизу и просто вставить слова, то сообщение просто не отправляется. И никаких ошибок.
0
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
17.01.2011, 19:41 4
нужно узнать включена ли функция mail() на твоём хостинге... phpinfo() - покажет это
0
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
17.01.2011, 21:45  [ТС] 5
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 6
напиши хостеру, скажи чтобы включили

Добавлено через 17 минут
Помоему когда функция отключена то там написано так:
Код
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  [ТС] 7
Цитата Сообщение от 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 8
Цитата Сообщение от Close Посмотреть сообщение
такой простой код работает
письмо отправилось?
0
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
19.01.2011, 20:41  [ТС] 9
Цитата Сообщение от 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 10
Кстати, по данной теме вопрос. У меня немного другая проблема - почта с сайта отправляется без
проблем, но приходит на ящик сплошная кадабра... ящик на 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 11
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  [ТС] 12
Цитата Сообщение от 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
20.01.2011, 20:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.01.2011, 20:33
Помогаю со студенческими работами здесь

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

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

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

Не работает форма обратной связи
Добрый день! Перестала работать форма обратной связи. Пишет, что сообщение отправлено, но письма не...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru