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



 

Здравствуйте, гость (

| Вход | Регистрация )

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


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

код который вставляю в основную страницу(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


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


Вы внимательно посмотрите на переменные.
<?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


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


$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


viktorina,


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


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

можно чтото типо такого. Ну всё равно это не совсем правильно. По нормальному нужно переписывать всё. Где вы нашли этот скрипт? или сами писали.
<?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


регулярными выражениями. Не трать время, а сразу займись ими. Обалденная штука.
например 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


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



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


кстати, В 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>";}
                                
?>


Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


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


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) СОЗДАНИЕ : / САЙтЫ / ЛЕНДЫ / БОТЫ ТГ / ВАЙТЫ / КРЕО / СОФТЫ / ДИЗАЙН [PHP, JS, HTML/CSS] и другое
5 CULA 3292 19.12.2023, 18:55
автор: CULA
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1171 24.11.2023, 14:46
автор: alexey
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыВеб-разработка (HTML5, CSS3, JavaScript, jQuery, Ajax, PHP)
56 qpPeW 44767 19.7.2023, 10:03
автор: qpPeW
Открытая тема (нет новых ответов) Есть спецы по php/laravel?
3 Mixatraider 1856 26.5.2023, 20:48
автор: Mixatraider
Открытая тема (нет новых ответов) Опытный PHP\Python разработчик в поиске интересных задач
6 daikzlex 3361 25.5.2023, 13:55
автор: daikzlex


 



RSS Текстовая версия Сейчас: 29.3.2024, 10:13
Дизайн