Не работает форма приёма заказов
На страницу 1, 2, 3  След.
Новая тема Написать ответ
# Ср Сен 04, 2013 1:30 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Здравствуйте. Есть простой самописный хтмл сайт, интернет магазин. Выложил сайт на хостинг, всё норм только почему то форма приёма заказов не работает. После нажатия на кнопку отправить заказ, появляется белая страница и нечего не происходит, заказ не отправляется. Хотя на локальном сервере всё отправлялось. В чём может быть проблема?
# Ср Сен 04, 2013 1:37 pmVKtraf Зарег.: 03.02.2012 ; Сообщ.: 969Ответить с цитатой
Выложи код скрипта-обработчика и код формы, тогда будет больше шансов на решение, а то телепаты все в Амстердам уехали на конференцию, без них не помочь.
# Ср Сен 04, 2013 2:14 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Форма

<div id="forma">
<form action="formdata.php" method="POST" name="form1">
<fieldset>
<div id="shapkaform">
<legend class="question tp"><h4>Форма заказа:</h4></legend>
</div>

<p><input class="input" type="text" name="name" style="color: #777;" value="Ваше имя" onfocus="if (this.value == 'Ваше имя')
{this.value = ''; this.style.color = '#000';}" onblur="if (this.value == '')
{this.value = 'Ваше имя'; this.style.color = '#777';}" size="30" maxlength="30"/></p>

<input class="input" type="text" name="email" style="color: #777;" value="Ваш email" onfocus="if (this.value == 'Ваш email')
{this.value = ''; this.style.color = '#000';}" onblur="if (this.value == '')
{this.value = 'Ваш email'; this.style.color = '#777';}" size="30" maxlength="30"></p>

<p class="question">Выберите размер:</p>
<p>

<select class="spisok" name="size">
<option>40х50см</option>
<option>60х80см</option>
<option>80х100см</option>
</select>

</p>
<p class="question">Прикрепить фотографию:</p>

<div class="fileform">
<div id="fileformlabel"></div>
<div class="selectbutton"><h2>Обзор</h2></div>
<input type="file" name="upload" id="upload" onchange="getName(this.files);" multiple />
</div>

<p class="question"><input type="image" src="images/ibutton.png"></p>
</fieldset>

</form>

Обработчик

<?php

$result = mail ("123@mail.ru","Заказ с сайта","Заказ с сайта: \nИмя: $_POST[name] \nПочта: $_POST[email] \nРазмер: $_POST[size] \nФотография: $_POST[foto]");

if ($result) {
echo "<p>Заказ отправлен!</p>";
}

else { "<p>Заказ НЕ отправлен!</p>";
}
?>
# Ср Сен 04, 2013 2:29 pmVKtraf Зарег.: 03.02.2012 ; Сообщ.: 969Ответить с цитатой
У опций выпадающего списка нет значений (<option>)

Раз передается файл, то добавь enctype, здесь пример с file.

Обязательно фильтруй входящие данные ($_POST[])!

*Удобно включить вывод ошибок на период отладки (error_level(-1)) и в скрипте добавить после всех команд что-нибудь вроде "echo "ALL IS OK";", чтобы видеть, что нормально скрипт отработал.
# Ср Сен 04, 2013 2:53 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Извените я новичёк и плохо во всём этом разбираюсь. Куда именно и в каком виде нужно добавить enctype? Как нужно фильтровать входящие данные ($_POST[])? Как это делается? В конце обработчика добавил "echo "ALL IS OK";" ничего не изменилось.
# Ср Сен 04, 2013 3:22 pmVKtraf Зарег.: 03.02.2012 ; Сообщ.: 969Ответить с цитатой
Бакс, в тег <form>, указать тип данных, по образцу:
<form action="formdata.php" enctype="multipart/form-data" method="post">
<input type="file" name="pic">
</form>

Фильтрация входных данных:
$a = preg_replace('/[^a-zA-Z0-9]/i','', $_POST['a']);

Здесь a-zA-Z0-9 - это символы, которые будут пропущены, остальные будут удалены.
Для е-мейла это a-zA-Z@-.0-9.
Для чисел это 0-9.
Для русских и английских букв и цифр это a-zA-Zа-яА-Я0-9.

Можно и просто теги убирать функциями htmlspecialchars(strip_tags($a)).
# Ср Сен 04, 2013 3:49 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Ок. А почему заказ то не отправляется? Почему белую страницу выдаёт?
# Ср Сен 04, 2013 4:25 pmVKtraf Зарег.: 03.02.2012 ; Сообщ.: 969Ответить с цитатой
Попробуй так - создай на хостинге отдельную страницу php с кодом: <?php mail("адрес@доставки.почты", "Test", "Test"); ?> и запусти его через браузер.
Если придет на почту адрес@доставки.почты письмо, то функция mail() работает и дело в обработчике (письмо может быть в папке Спам).

Тогда нужно включить отображение ошибок PHP - создать в корне сайта файл .htaccess с кодом: php_value display_errors 1 и посмотреть, что за ошибки выдает скрипт.
А белый экран после выполнения - это нормально, браузер отправляет данные в formdata.php и открывает содержимое, которое он отдаст на запрос браузера. Там можно написать что-нибудь вроде: "Ваше письмо отправлено. Спасибо" или средиректить на нужную страницу, например, кодом: <META HTTP-EQUIV="REFRESH" CONTENT="0;URL=http://site.com/zayavka-otpravlena.html">.
# Ср Сен 04, 2013 5:21 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Письмо не пришло.
# Ср Сен 04, 2013 6:53 pmVKtraf Зарег.: 03.02.2012 ; Сообщ.: 969Ответить с цитатой
Бакс, проверь, включена ли функция mail() на хостинге - создай новый php файл с кодом: <?php phpinfo(); ?>.
Запусти в браузере и посмотри в нем:
- фраза sendmail_path - она должна что-то содержать (т.е путь должен быть указан)
- в блоке disable_functions не было функции mail().

Если выключена, пишите в хостинг тикет с просьбой "включите функцию mail()". Если не включат, то останется только менять тариф на тот, где она включена или хостинг.

Если функция включена, значит что-то не так со скриптами.
# Чт Сен 05, 2013 11:30 amБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Вот, что нашёл

Path to sendmail /usr/sbin/sendmail -t -i

sendmail_path /usr/sbin/sendmail -t -i /usr/sbin/sendmail -t -i

sendmail_from no value no value

disable_functions no value no value
# Пт Сен 06, 2013 12:42 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Помогите кто-нибудь с формой. Как сделать чтобы она работала?
# Пт Сен 06, 2013 12:50 pmexolon Зарег.: 22.11.2007 ; Сообщ.: 2397Ответить с цитатой
Закажи на фрилансе.
# Пт Сен 06, 2013 1:54 pmБакс Зарег.: 02.10.2010 ; Сообщ.: 191Ответить с цитатой
Что бы форма заработала нужно проделать очень много работы? Сколько это будет стоить? Подскажите хотябы, почему сейчас после нажатия на кнопку отправить заявку открывается белая пустая страница и письмо не отправляется. Хотя на локальном сервере всё норм отправлялось. Почему так? В чём может быть проблема?
# Пт Сен 06, 2013 3:06 pmexolon Зарег.: 22.11.2007 ; Сообщ.: 2397Ответить с цитатой
http://www.weblancer.net/
http://freelancego.ru/

10-30 баксов думаю.
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ
 На страницу 1, 2, 3  След.
Любое использование материалов, размещенных на ArmadaBoard.com, без разрешения владельцев ArmadaBoard.com запрещено.