На страницу 1, 2, 3 След. |
|
|
Здравствуйте. Есть простой самописный хтмл сайт, интернет магазин. Выложил сайт на хостинг, всё норм только почему то форма приёма заказов не работает. После нажатия на кнопку отправить заказ, появляется белая страница и нечего не происходит, заказ не отправляется. Хотя на локальном сервере всё отправлялось. В чём может быть проблема? |
|
|
|
|
|
Выложи код скрипта-обработчика и код формы, тогда будет больше шансов на решение, а то телепаты все в Амстердам уехали на конференцию, без них не помочь. |
|
|
|
|
|
Форма
<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>";
}
?> |
|
|
|
|
|
У опций выпадающего списка нет значений (<option>)
Раз передается файл, то добавь enctype, здесь пример с file.
Обязательно фильтруй входящие данные ($_POST[])!
*Удобно включить вывод ошибок на период отладки (error_level(-1)) и в скрипте добавить после всех команд что-нибудь вроде "echo "ALL IS OK";", чтобы видеть, что нормально скрипт отработал. |
|
|
|
|
|
Извените я новичёк и плохо во всём этом разбираюсь. Куда именно и в каком виде нужно добавить enctype? Как нужно фильтровать входящие данные ($_POST[])? Как это делается? В конце обработчика добавил "echo "ALL IS OK";" ничего не изменилось. |
|
|
|
|
|
Бакс, в тег <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)). |
|
|
|
|
|
Ок. А почему заказ то не отправляется? Почему белую страницу выдаёт? |
|
|
|
|
|
Попробуй так - создай на хостинге отдельную страницу 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">. |
|
|
|
|
|
|
Бакс, проверь, включена ли функция mail() на хостинге - создай новый php файл с кодом: <?php phpinfo(); ?>.
Запусти в браузере и посмотри в нем:
- фраза sendmail_path - она должна что-то содержать (т.е путь должен быть указан)
- в блоке disable_functions не было функции mail().
Если выключена, пишите в хостинг тикет с просьбой "включите функцию mail()". Если не включат, то останется только менять тариф на тот, где она включена или хостинг.
Если функция включена, значит что-то не так со скриптами. |
|
|
|
|
|
Вот, что нашёл
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 |
|
|
|
|
|
Помогите кто-нибудь с формой. Как сделать чтобы она работала? |
|
|
|
|
|
|
Что бы форма заработала нужно проделать очень много работы? Сколько это будет стоить? Подскажите хотябы, почему сейчас после нажатия на кнопку отправить заявку открывается белая пустая страница и письмо не отправляется. Хотя на локальном сервере всё норм отправлялось. Почему так? В чём может быть проблема? |
|
|
|
|
|
|