[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: почтавя форма
ninJo
/изначально не в той теме запостил, перепостиваю/

Вобщем есть почтовая форма.

Все работает прекрасно, кроме одной маленькой вещи.

Когда пользователь нажимает кнопочку отправить, форма отправляется в любом случае.

Надо как-то написать, чтобы если все поля заолнены - отправка, если нет - то нет.

вот мой код

<?php

$name = $_REQUEST['name'] ;
$fam = $_REQUEST['fam'] ;
$email = $_REQUEST['email'] ;
$country = $_REQUEST['country'] ;
$tel = $_REQUEST['tel'] ;
$city = $_REQUEST['city'] ;
$message = $_REQUEST['message'] ;


$message = "
имя:
$name \n
фамилия: $fam \n
mail: $email \n
страна: $country \n
город: $city \n
телефон: $tel \n
сообщение: $message \n";

mail( "мой мейл", "Сообщение с сайта",
$message, "From: $email"
);

if ( ! empty($_POST['contact']))
{
$valid = array
(
'name' => array('/(.+){2,}/', 'Ваше имя введено неверно.'),
'fam' => array('/(.+){2,}/', 'Ваша фамилия введена неверно.'),
'tel' => array('/(.+){5,}/', 'Номер телефона введен неверно'),
'city' => array('/(.+){3,}/', 'Название города введено неверно'),
'email' => array('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', 'Введите правильный e-mail, пожалуйста.'),
'message' => array('/(.+){10,}/', 'Вы не можете отправить пустое сообщение.'),
);


$errors = array();

foreach ($valid as $field => $data)
{
$regex = $data[0];
$message = $data[1];

$input = trim($_POST[$field]);

if (empty($input) OR ! preg_match($regex, $input))
{
$errors += array($field => $message);
}
}


$result = empty($errors) ? 'success' : 'errors';

echo json_encode(array
(
'result' => $result,
'errors' => $errors,
));

exit;
}

?>


Полагаю проблема в этой строке,

mail( "мой мейл", "Сообщение с сайта",
$message, "From: $email"
);

надо дописать буквально полстрочки, а что написать не знаю. Уже все перепробовал, либо отправляется как етсь. Либо вобще не отправляется.

Скрипт от этой формы

Создатель формы любезно не дописал самую важную часть кода, я дописал, но как-то не очень она у меня работает правильно :( Хотя во фронтенде, все ок.

Понимаю что делать надо что-то с переменной $result, а что не знаю :(



Спустя 39 минут, 9 секунд (13.12.2011 - 18:06) Игорь_Vasinsky написал(а):
вот же у тебя проверка

$result = empty($errors) ? 'success' : 'errors';


от неё и пляши.

Спустя 1 час, 27 минут, 8 секунд (13.12.2011 - 19:33) ninJo написал(а):
if ('success') {
mail( "мой мейл", "Сообщение с сайта",
$message, "From: $email"
);
}

пробовал такое, не работает sad.gif

я просто очень-очень слаб в php. По шаблону хоть как-то могу работать, а полстроки написать не могу, пробовал литературу читать по mail, не помогает sad.gif

Спустя 46 минут, 27 секунд (13.12.2011 - 20:20) Игорь_Vasinsky написал(а):
Цитата
if ('success') {

это скока надо выпить чтоб догадаться засунуть значение переменной в условие таким образом???

тебе нужно проверить - действительно ли переменная содержит это значение. wink.gif

Спустя 3 минуты, 9 секунд (13.12.2011 - 20:23) ninJo написал(а):
Васински, я сегодня действительно много выпил! Но чая smile.gif

if ( ! empty('success'))

вот так может?

хотя так тоже пробовал. я часа три сидел все возможные варианты перебирал sad.gif

Спустя 17 минут, 12 секунд (13.12.2011 - 20:40) VolDroN написал(а):
succes это текст а не переменная.
empty проверяет на пустоту переданного аргумента (в данном случае 'succes'), ! - отрицание. Т.е. для выполнения условия аргумент должен быть не пустой (он и так не пустой, и всегда будет не пустой, т.к. это статический текст 'success')
надо писать. И здесь проверка на пустоту не к месту.
как я понял, то нужно это:
if($result == 'success')
{
// отправляем
}

Спустя 47 минут, 23 секунды (13.12.2011 - 21:28) ninJo написал(а):
 if($result == 'success')
{

mail( "мой мейл", "Сообщение с сайта",
$message, "From: $email");

}


Вот так писал, тогда скрипт просто перестает отправлять почту :( Форма работает, а почта не идет.

Событие по succes в js тоже происходит - переход на другую страницу.

В js такой код стоит, я пробовал в него php mail засунуть, но он его не кушает =(

if (data.result == 'success') {
window.location = "http://мой-сайт/спасибо"
}

Спустя 20 часов, 43 минуты, 7 секунд (14.12.2011 - 18:11) ninJo написал(а):
Придется другую форму искать sad.gif

все заново делать.

p.s.

все таки нашел проблему, там два одинаковых значения message использовалось smile.gif


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.