X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Проблемма с формой обратной связи (send.php)
alexvdv
alexvdv
Topic Starter сообщение 8.12.2012, 10:59; Ответить: alexvdv
Сообщение #1


Частый гость
**

Группа: User
Сообщений: 62
Регистрация: 19.1.2012
Из: Vladivostok
Поблагодарили: 2 раза
Репутация:   0  


Здравствуйте!
помоги разобраться, не могу понять почему не работает форма обратной связи.

код который вставляю в основную страницу(buy.php) , код формы обратной связи:

    <form action="send.php" method="post" onsubmit="return checkForm(this);">
<table width="200" border="1" align="center" cellpadding="1" cellspacing="0" bgcolor="#FFFFCC">

<tr bgcolor="#FFFFCC">
<input type="hidden" value="Заказ биокатализатора топлива MPG BOOST " name="tovar">

Ваше ФИО:
<input name="name" type="text" />
<br />
Номер телефона:<br />
<input name="phone" type="text" />
<br />
E-mail:<br />
<input name="e.mail" type="text" />
<br />

Город/Нас. пункт::<br />
<input name="sity" type="text" />
<br />

Почтовый индекс:<br />
<input name="index" type="text" />
<br />

Адрес доставки:<br />
<TEXTAREA NAME="adress" ROWS=m COLS=n>
текст
</TEXTAREA>
<br />

Ваш комментарий(не обязательно):<br />
<TEXTAREA NAME="komment" ROWS=m COLS=n>
текст
</TEXTAREA>
<br />

<br />
<br />
<input type="submit" value="Заказать" />
</td>
</tr>
</table>
</form>





код который находится в файле send.php:


<?php
if (isset($_POST['name'])) {
    $name = $_POST['name'];
}

if (isset($_POST['phone'])) {
    $email = $_POST['phone'];
}

if (isset($_POST['email'])) {
    $msg = $_POST['email'];
}

if (isset($_POST['sity'])) {
    $name = $_POST['sity'];
}

if (isset($_POST['index'])) {
    $email = $_POST['index'];
}

if (isset($_POST['adress'])) {
    $msg = $_POST['adress'];
}

if (isset($_POST['komment'])) {
    $msg = $_POST['komment'];
}  

if (empty($name)) {
    echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($phone)) {
    echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($email)) {
    echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>';
}
if (empty($sity)) {
    echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($index)) {
    echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($adress)) {
    echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>';
}

else {
    $to = "alex86vdv@list.ru";
    $header = "Content-type: text/plain; charset: windows-1251;";
    $subject = "Заказ в интернет-магазине MPG";
    $message = "Имя пославшего: $name \nП/я: $email \nСообщение: $msg";
    $phone = "номер телефона";    
    $email = "электронный адресс";    
    $sity = "город доставки";    
    $index = "почтовый индекс";    
    $adress = "адрес доставки";    
    $komment = "пожелание клиента";        
    
    
    $send = mail($to, $subject, $message, $headers);
    if ($send == 'true') {
        echo 'Сообщение отправлено!<a href="send.php">Вернитесь и заполните поле!</a>';
    }
    else {
        echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения!";
    }
}
?>



Почему не работает форма? и как это можно исправить??
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
viktorina
viktorina
сообщение 8.12.2012, 13:46; Ответить: viktorina
Сообщение #2


Новичок
*

Группа: User
Сообщений: 39
Регистрация: 2.7.2010
Поблагодарили: 16 раз
Репутация:   -4  


alexvdv,
Всё работает. Я так понял не нравится вывод сообщений о неправильности, когда всё введено?
empty вернёт true , если переменная не задана.
if (!empty($name)){blablabla} - вот так выполнится если $name = нигде не определялось.
isset($_POST[name]) и остальные всегда = true , так как даже если пользователь ничего не введёт, то $_POST[name] будет равен пустому значению "" .

Сообщение отредактировал viktorina - 8.12.2012, 13:53
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
moto-arena
moto-arena
сообщение 8.12.2012, 17:30; Ответить: moto-arena
Сообщение #3


Бывалый
****

Группа: User
Сообщений: 441
Регистрация: 10.11.2009
Из: Снежное
Поблагодарили: 96 раз
Репутация:   28  


Вы внимательно посмотрите на переменные.
<?php
if (isset($_POST['name'])) {
    $name = $_POST['name'];
}

if (isset($_POST['phone'])) {
    $email = $_POST['phone'];
}

if (isset($_POST['email'])) {
    $msg = $_POST['email'];
}

if (isset($_POST['sity'])) {
//переменная повторяется
    $name = $_POST['sity'];
}

if (isset($_POST['index'])) {
    $email = $_POST['index'];
}

if (isset($_POST['adress'])) {
//переменная повторяется
    $msg = $_POST['adress'];
}

if (isset($_POST['komment'])) {
//переменная повторяется
    $msg = $_POST['komment'];
}


и которые пытаетесь проверить

if (empty($name)) {
    echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($phone)) {
    echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($email)) {
    echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>';
}
if (empty($sity)) {
    echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($index)) {
    echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($adress)) {
    echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>';
}


Сообщение отредактировал moto-arena - 8.12.2012, 17:31


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexvdv
alexvdv
Topic Starter сообщение 8.12.2012, 17:45; Ответить: alexvdv
Сообщение #4


Частый гость
**

Группа: User
Сообщений: 62
Регистрация: 19.1.2012
Из: Vladivostok
Поблагодарили: 2 раза
Репутация:   0  


moto-arena,

Спасибо большое теперь все работает и вправду не доглядел, спасибо всем кто помог))

Помогите не могу разобраться еще с кодировкой при отправлении сообщения адабракадабра показывается (после того как выполняется скрипт в файле send.php) и на почтовый ящик приходят тоже каракули:

редактирую через notepad++++ пробовал сохранять в utf-8 без bum, все равно не помогает

<?php
if (isset($_POST['name'])) {
$name = $_POST['name'];
}

if (isset($_POST['phone'])) {
$phone = $_POST['phone'];
}

if (isset($_POST['email'])) {
$email = $_POST['email'];
}

if (isset($_POST['sity'])) {
$sity = $_POST['sity'];
}

if (isset($_POST['index'])) {
$index = $_POST['index'];
}

if (isset($_POST['adress'])) {
$adress = $_POST['adress'];
}

if (isset($_POST['komment'])) {
$komment = $_POST['komment'];
}

if (empty($name)) {
echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($phone)) {
echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($email)) {
echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>';
}
if (empty($sity)) {
echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($index)) {
echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($adress)) {
echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>';
}

else {
$to = "alex86vdv@list.ru";
$header = "Content-type: text/plain; charset: windows-1251;";
$subject = "Заказ в интернет-магазине MPG";
$message = "Имя пославшего: $name \Электронный адресс: $email \Номер телефона: $phone\Город доставки: $sity\Почтовый индекс: $index\Адресс доставки: $adress\Пожелание клиента: $komment";
$send = mail($to, $subject, $message, $headers);
if ($send) {
echo 'Сообщение отправлено!<a href="send.php">Вернитесь и заполните поле!</a>';
}
else {
echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения!";
}
}
?>
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
moto-arena
moto-arena
сообщение 8.12.2012, 18:54; Ответить: moto-arena
Сообщение #5


Бывалый
****

Группа: User
Сообщений: 441
Регистрация: 10.11.2009
Из: Снежное
Поблагодарили: 96 раз
Репутация:   28  


$header = "Content-type: text/plain; charset: windows-1251;"; Здесь проблема.))

а в $send = mail($to, $subject, $message, $headers);

Сообщение отредактировал moto-arena - 8.12.2012, 18:58


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexvdv
alexvdv
Topic Starter сообщение 8.12.2012, 18:56; Ответить: alexvdv
Сообщение #6


Частый гость
**

Группа: User
Сообщений: 62
Регистрация: 19.1.2012
Из: Vladivostok
Поблагодарили: 2 раза
Репутация:   0  


viktorina,


у меня получается, что форма в любом случае отсылает данные не зависимо от того все введено или нет, как это можно исправить?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
moto-arena
moto-arena
сообщение 8.12.2012, 19:14; Ответить: moto-arena
Сообщение #7


Бывалый
****

Группа: User
Сообщений: 441
Регистрация: 10.11.2009
Из: Снежное
Поблагодарили: 96 раз
Репутация:   28  


У вас нет проверки заполненых полей при отправки.

можно чтото типо такого. Ну всё равно это не совсем правильно. По нормальному нужно переписывать всё. Где вы нашли этот скрипт? или сами писали.
<?php
if (isset($_POST['name'])) {
$name = $_POST['name'];
}

if (isset($_POST['phone'])) {
$phone = $_POST['phone'];
}

if (isset($_POST['email'])) {
$email = $_POST['email'];
}

if (isset($_POST['sity'])) {
$sity = $_POST['sity'];
}

if (isset($_POST['index'])) {
$index = $_POST['index'];
}

if (isset($_POST['adress'])) {
$adress = $_POST['adress'];
}

if (isset($_POST['komment'])) {
$komment = $_POST['komment'];
}

if (empty($name)) {
echo 'Вы не указали имя! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($phone)) {
echo 'Вы не указали номер телефона! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($email)) {
echo 'Вы не указали е-майл! <a href="send.php">Вернитесь и заполните поле!</a>';
}
if (empty($sity)) {
echo 'Вы не указали город! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($index)) {
echo 'Вы не указали почтовый индекс! <a href="send.php">Вернитесь и заполните поле!</a>';
}

if (empty($adress)) {
echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a>';
}

//проверка заполненых полей
elseif(!empty($name) and !empty($phone) and !empty($email) and !empty($sity) and !empty($index) and !empty($adress)) {
$to = "alex86vdv@list.ru";
$header = "Content-type: text/plain; charset: utf8;
$subject = "Заказ в интернет-магазине MPG";
$message = "Имя пославшего: $name \Электронный адресс: $email \Номер телефона: $phone\Город доставки: $sity\Почтовый индекс: $index\Адресс доставки: $adress\Пожелание клиента: $komment";
$send = mail($to, $subject, $message, $headers);
if ($send) {
echo 'Сообщение отправлено!<a href="send.php">Вернитесь и заполните поле!</a>';
}
else {
echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения!";
}
}
?>


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
viktorina
viktorina
сообщение 8.12.2012, 22:27; Ответить: viktorina
Сообщение #8


Новичок
*

Группа: User
Сообщений: 39
Регистрация: 2.7.2010
Поблагодарили: 16 раз
Репутация:   -4  


регулярными выражениями. Не трать время, а сразу займись ими. Обалденная штука.
например preg_match('/[a-z]{6,30}/',$name)==true;
preg_match посмотри. Если хочешь работать с формами, то это самая крутая штука.
empty там вообще ни к чему.

if(isset($_POST['name']) && preg_match("/^[a-z]{6,30}$/",$_POST['name'])){бла бла бла} else {echo "Ошибка в поле Name";}
Запись выше проверит существование поля в массиве, а потом проверит регулярным выражением. Если слово будет состоять из латинских букв размером 6-30 символов, то выполнится то, что в скобках.
Я так понимаю ты только начал php изучать, всё верно делаешь, только всё равно потом прийдёш к regexp. Проверка нужна очень строгая.

Сообщение отредактировал viktorina - 8.12.2012, 22:38


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexvdv
alexvdv
Topic Starter сообщение 9.12.2012, 6:25; Ответить: alexvdv
Сообщение #9


Частый гость
**

Группа: User
Сообщений: 62
Регистрация: 19.1.2012
Из: Vladivostok
Поблагодарили: 2 раза
Репутация:   0  


(moto-arena @ 9.12.2012, 1:14) *
Где вы нашли этот скрипт? или сами писали.



и нашел, и дописывал сам
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
moto-arena
moto-arena
сообщение 9.12.2012, 8:49; Ответить: moto-arena
Сообщение #10


Бывалый
****

Группа: User
Сообщений: 441
Регистрация: 10.11.2009
Из: Снежное
Поблагодарили: 96 раз
Репутация:   28  


кстати, В php уже есть некоторые фильтры валидации данных.
например FILTER_VALIDATE_EMAIL - проверка валидации email

function e_email($email){
   $mails=filter_var($email, FILTER_VALIDATE_EMAIL);
   return $mails;
}


//здесь валидный Email
if(e_email("mail@mail.ru"))
{echo "email валидный";}
else
{echo "email невалидный";}

echo "<br>";

//здесь не валидный Email
if(e_email("mailmail.ru"))
{echo "email валидный";}
else
{echo "email невалидный";}
?>


как уже писали выше, для проверки пользуйтесь регулярными выражениями.

Немного поправил ваш скрипт. Регулярные выражение не добавлял.
<?php
if (isset($_POST['name']))                     {$name = trim($_POST['name']);}
if (isset($_POST['phone']))                 {$phone = trim($_POST['phone']);}
if (isset($_POST['email']))                 {$email = trim($_POST['email']);}
if (isset($_POST['sity']))                     {$sity = trim($_POST['sity']);}
if (isset($_POST['index']))                 {$index = trim($_POST['index']);}
if (isset($_POST['adress']))                 {$adress = trim($_POST['adress']);}
if (isset($_POST['komment']))                 {$komment = trim(htmlspecialchars($_POST['komment']));}

            function e_email($em){
                   $mails=filter_var($em, FILTER_VALIDATE_EMAIL);
                   return $mails;}

if (empty($name))                             {echo 'Вы не указали имя!<br>'; $error=true;}
if (empty($phone))                             {echo 'Вы не указали номер телефона!<br>'; $error=true;}
if (empty($email))                             {echo 'Вы не указали е-майл!<br>'; $error=true;} elseif(!e_email($email)) {echo 'email указан неверно! <br>'; $error=true;}
if (empty($sity))                             {echo 'Вы не указали город!<br>'; $error=true;}
if (empty($index))                             {echo 'Вы не указали почтовый индекс!<br>'; $error=true;}
if (empty($adress))                         {echo 'Вы не указали адрес доставки! <a href="send.php">Вернитесь и заполните поле!</a><br>'; $error=true;}

    if(!isset($error))             {
                        $to = "alex86vdv@list.ru";
                        $header = "Content-type: text/plain; charset: windows-1251;";
                        $subject = "Заказ в интернет-магазине MPG";
                        $message = "Имя пославшего: $name \Электронный адресс: $email \Номер телефона: $phone\Город доставки: $sity\Почтовый индекс: $index\Адресс доставки: $adress\Пожелание клиента: $komment";
                        $send = mail($to, $subject, $message, $headers);
        
        if ($send)                        {echo "Сообщения не отправлено, повторите позднее. Приносим свои извинения! <a href='buy.php'>Попробуйте снова!</a><br>";}
            else                             {echo "Сообщение отправлено!<a href='send.php'>Вернитесь и заполните поле!</a><br>";}
        }
            else
                                {echo "<a href='send.php'>Попробуйте снова!</a><br>";}
                                
?>


Сообщение отредактировал moto-arena - 9.12.2012, 7:29


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Недорогие услуги - php/js/mysql/jquery/bootstrap
2 vlads 642 Вчера, 21:01
автор: vlads
Открытая тема (нет новых ответов) Веб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
18 qpPeW 3375 12.12.2017, 13:32
автор: qpPeW
Открытая тема (нет новых ответов) Продается сайт о Крымском операторе связи
4 Cunningfox 632 12.12.2017, 11:30
автор: Cunningfox
Открытая тема (нет новых ответов) php скрипты любой сложности / диз+верстка (адаптивно)
любые задачи на php - автоматизация, парсинг, работа с БД
1 affrodita 496 8.12.2017, 17:40
автор: affrodita
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыImage Optimizer (PHP)
6 bars96 908 17.11.2017, 0:47
автор: bars96


 



RSS Текстовая версия Сейчас: 14.12.2017, 1:24
Дизайн