6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
|
|
1 | |
После переезда на другой хостинг не работает форма обратной связи16.01.2011, 20:46. Показов 8731. Ответов 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
|
16.01.2011, 20:46 | |
Ответы с готовыми решениями:
11
Не работает форма обратной связи после переноса на другой хостинг Не работает форма обратной связи Не работает форма обратной связи Не работает форма обратной связи |
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
|
|
17.01.2011, 08:00 | 2 |
проверь пути до файлов которые ты подключаешь функцией include(), в ошибках говорится что неудалось их подключить "Failed opening"
PS возможно ещё дело в правах доступа на папки
0
|
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
|
|
17.01.2011, 19:33 [ТС] | 3 |
Все пути правильные. Пробовал и абсолютные пути и относительные.
Причём, если убрать снизу и просто вставить слова, то сообщение просто не отправляется. И никаких ошибок.
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
0
|
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
|
|
18.01.2011, 20:44 [ТС] | 7 |
Скопировал код, выдаёт ошибку. Вместо <?phph последняя буква лишняя. Причём писало, что ошибка во второй строке, хотя должно было показать первую. Вообщем, такой простой код работает, но обработка кода происходит долго. Около 5-7 секунд.
0
|
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
|
|
19.01.2011, 05:12 | 8 |
0
|
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
|
|
19.01.2011, 20:41 [ТС] | 9 |
Да, письмо отправилось.
Я так понял, что дело в версии 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, сценарий такой -
0
|
84 / 84 / 8
Регистрация: 12.04.2010
Сообщений: 324
|
|||||||||||
20.01.2011, 07:13 | 11 | ||||||||||
inkrom, значит вместо строки "include config.php" нужно вставить содержимое файла config.php.
Вместо "<?" нужно написать "<?php" В общем у меня получилось так: Страница с формой
1
|
6 / 6 / 0
Регистрация: 02.02.2009
Сообщений: 100
|
|
20.01.2011, 20:33 [ТС] | 12 |
Попробуй убрать одинарные кавычки $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 | |
20.01.2011, 20:33 | |
Помогаю со студенческими работами здесь
12
Форма обратной связи не работает Не работает форма обратной связи Форма обратной связи не работает Не работает форма обратной связи Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |