АРМАДА
Не работает форма приёма заказов
На страницу 1, 2, 3  След.
Новая тема Написать ответ Advanced Hosters - профессиональный хостинг

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 1:30 pmДобавить в избранноеОтветить с цитатой
Здравствуйте. Есть простой самописный хтмл сайт, интернет магазин. Выложил сайт на хостинг, всё норм только почему то форма приёма заказов не работает. После нажатия на кнопку отправить заказ, появляется белая страница и нечего не происходит, заказ не отправляется. Хотя на локальном сервере всё отправлялось. В чём может быть проблема?

VKtraf
Профессионал
Зарегистрирован: 03.02.2012
Сообщений: 969
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 1:37 pmОтветить с цитатой
Выложи код скрипта-обработчика и код формы, тогда будет больше шансов на решение, а то телепаты все в Амстердам уехали на конференцию, без них не помочь.
Взять кредит вебмани

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 2:14 pmОтветить с цитатой
Форма

<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>";
}
?>

VKtraf
Профессионал
Зарегистрирован: 03.02.2012
Сообщений: 969
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 2:29 pmОтветить с цитатой
У опций выпадающего списка нет значений (<option>)

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

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

*Удобно включить вывод ошибок на период отладки (error_level(-1)) и в скрипте добавить после всех команд что-нибудь вроде "echo "ALL IS OK";", чтобы видеть, что нормально скрипт отработал.
Взять кредит вебмани

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 2:53 pmОтветить с цитатой
Извените я новичёк и плохо во всём этом разбираюсь. Куда именно и в каком виде нужно добавить enctype? Как нужно фильтровать входящие данные ($_POST[])? Как это делается? В конце обработчика добавил "echo "ALL IS OK";" ничего не изменилось.

VKtraf
Профессионал
Зарегистрирован: 03.02.2012
Сообщений: 969
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 3:22 pmОтветить с цитатой
Бакс, в тег <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)).
Взять кредит вебмани

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 3:49 pmОтветить с цитатой
Ок. А почему заказ то не отправляется? Почему белую страницу выдаёт?

VKtraf
Профессионал
Зарегистрирован: 03.02.2012
Сообщений: 969
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 4:25 pmОтветить с цитатой
Попробуй так - создай на хостинге отдельную страницу 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?quot;>.
Взять кредит вебмани

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 5:21 pmОтветить с цитатой
Письмо не пришло.

VKtraf
Профессионал
Зарегистрирован: 03.02.2012
Сообщений: 969
Обратиться по нику
# Добавлено:Ср Сен 04, 2013 6:53 pmОтветить с цитатой
Бакс, проверь, включена ли функция mail() на хостинге - создай новый php файл с кодом: <?php phpinfo(); ?>.
Запусти в браузере и посмотри в нем:
- фраза sendmail_path - она должна что-то содержать (т.е путь должен быть указан)
- в блоке disable_functions не было функции mail().

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

Если функция включена, значит что-то не так со скриптами.
Взять кредит вебмани

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Чт Сен 05, 2013 11:30 amОтветить с цитатой
Вот, что нашёл

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

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Пт Сен 06, 2013 12:42 pmОтветить с цитатой
Помогите кто-нибудь с формой. Как сделать чтобы она работала?

exolon
V.I.P.
Зарегистрирован: 22.11.2007
Сообщений: 2397
Обратиться по нику
# Добавлено:Пт Сен 06, 2013 12:50 pmОтветить с цитатой
Закажи на фрилансе.

Бакс + +
Опытный
Зарегистрирован: 02.10.2010
Сообщений: 191
Обратиться по нику
# Добавлено:Пт Сен 06, 2013 1:54 pmОтветить с цитатой
Что бы форма заработала нужно проделать очень много работы? Сколько это будет стоить? Подскажите хотябы, почему сейчас после нажатия на кнопку отправить заявку открывается белая пустая страница и письмо не отправляется. Хотя на локальном сервере всё норм отправлялось. Почему так? В чём может быть проблема?

exolon
V.I.P.
Зарегистрирован: 22.11.2007
Сообщений: 2397
Обратиться по нику
# Добавлено:Пт Сен 06, 2013 3:06 pmОтветить с цитатой
http://www.weblancer.net/
http://freelancego.ru/

10-30 баксов думаю.
Новая тема Написать ответ    ГЛАВНАЯ ~ ТЕХНИЧЕСКИЕ ВОПРОСЫ

Перейти:  





Генеральный спонсор



Партнеры