Необходимо было создать что-то наподобие формы обратной связи, где пользователь вводил бы некоторые данные, которые затем бы отсылались на почту. Так как я далек от веб-программирования, то нашел вот тут http://www.seomark.ru/forma.html подходящий скрипт и немного его "допилил" под свои нужды. Добавил всего две формы для ввода данных и скрипт стал неверно отправлять данные (см. ниже)
Вот код самой формы для заполнения :
<form method="post" action="mail.php">
<strong>Имя:</strong><br />
<input type="text" name="name" size="30"/>
<br />
<strong>Телефон:</strong><br />
<input name="phone" type="text" size="30" />
<br />
<strong>Проживаете в:</strong><br />
<input name="city" type="text" size="30" />
<br />
<strong>Ваше сообщение:</strong><br />
<textarea name="mess" rows="3" cols="25"></textarea>
<p>
<input type="submit" value="Отправить сообщение"/>
</p>
</form>
А вот сам скрипт :
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$city = $_POST['phone'];}
if (isset($_POST['city'])) {$mess = $_POST['city'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
$to = "my@mail.ru"; /*Укажите ваш адрес электоронной почты*/
$headers = "Content-type: text/plain; charset = UTF-8";
$subject = "Сообщение с вашего сайта";
$message = "Имя: $name \nТелефон: $phone \nГород: $city \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Ваше сообщение отправлено ! Мы свяжемся с вам в ближайшее время.<p>";
echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
Результат исполнения скрипта при заполнении всех полей выглядит так :
Имя: Олег
Телефон:
Город: 0998787654
Сообщение: Текст
На самом деле поля заполнялись так :
Имя: Олег
Телефон: 0998787654
Город: Киев
Сообщение: Текст
Проблема с формой обратной связи
Модераторы: dobs, ArniXXX, hostess, bj
Re: Проблема с формой обратной связи
На этом участке кода, была ошибка
Замените свой код на этот.
Код: Выделить всё
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
if (isset($_POST['city'])) {$city = $_POST['city'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
В жизни не все так просто, а гораздо проще
Re: Проблема с формой обратной связи
Дабы не плодить однородных тем:
Есть форма:
Есть JS-скрипт для проверки правильности заполнения полей:
Проблема в том, что первые три поля (имя, е-mail и тема) валидацию проходят. Но после этого, при незаполненном поле "сообщение" появляется модальное окно "Спасибо, мы вскоре с Вами свяжемся!" (конец обработки данных) и происходит отправка данных.
Что не так, подскажите пожалуйста!
Заранее благодарен!
Есть форма:
Код: Выделить всё
<form method="post" action="send.php">
<label for="name">Имя*:</label>
<input name="name" class="required input_field" />
<div class="cleaner_h10">
</div>
<label for="email">Email*:</label>
<input name="email" class="validate-email required input_field" />
<div class="cleaner_h10">
</div>
<label for="theme">Тема*:</label>
<input name="theme" class="validate-email required input_field" />
<div class="cleaner_h10">
</div>
<label for="message">Сообщение*:</label>
<textarea name="message" class="required" maxlength="3600" value="">
</textarea>
<div class="cleaner_h10">
</div>
<input type="submit" class="submit_btn" name="submit" onclick="return checkAll()" value="Отправить" />
<input type="reset" class="reset_btn" name="reset" value="Очистить" />
</form>
Код: Выделить всё
//validate 0//
function isValidName ( str ) {
if (str == "") {
alert ("Укажите Ваше имя");
return false;
}
return true;
}
//validate 1//
function isValidEmailAddress ( str ) {
if (str == "") {
alert ('Укажите корректный e-mail адрес');
return false;
}
else if ( str.indexOf ( " " , 0) != -1 || str. indexOf ( "@" ,3 ) == -1 || str. indexOf ( "." , 6) == -1 ) {
alert("Ошибка: " + str + ". Вы уверены, что это действительно Ваш адрес?" );
return false;
}
return true;
}
//validate 2//
function isValidTheme ( str ) {
if (str == "") {
alert ("Укажите тему сообщения");
return false;
}
return true;
}
//validate 3//
function isValidNotes ( str ) {
if (str == "") {
alert ("Введите текст сообщения");
return false;
}
return true;
}
function checkAll () {
form = document.forms[0];
//check for 0//
if (!isValidName(form.elements[0].value)) {form.elements[0].focus(); return false;
}
//check for 1//
if (!isValidEmailAddress(form.elements[1].value)) {form.elements[1].focus(); return false;
}
//check for 2//
if (!isValidTheme(form.elements[2].value)) {form.elements[2].focus(); return false;
}
//check for 3//
if (!isValidNotes(form.elements[3].value)) {form.elements[3].focus(); return false;
}
alert ("Спасибо, мы вскоре с Вами свяжемся!");
}
Что не так, подскажите пожалуйста!
Заранее благодарен!
Re: Проблема с формой обратной связи
У Вас сообщение ""Спасибо, мы вскоре с Вами свяжемся!"" выводится безусловно.
Как вариант - создать переменную-флаг, в которую можно будет записывать результаты работы функций проверки состояния полей. При отрицательном результате проверки, присвоить флагу значение "ложно", прекратить дальнейшую проверку (т.к. все поля обязательны к заполнению, и если хоть одно не проходит валидацию, остальные проверять нет смысла), передать работу функции по выводу сообщений и вывести соответствующее сообщение.
Плюс к тому, можно сделать проверку не создавая такое кол-во функций.
Если нет других условий, то можно проверять значения полей в цикле. Если применить цикл, то получим расширяемую форму, т.к. не придется для каждого нового элемента формы писать функцию проверки.
Как вариант - создать переменную-флаг, в которую можно будет записывать результаты работы функций проверки состояния полей. При отрицательном результате проверки, присвоить флагу значение "ложно", прекратить дальнейшую проверку (т.к. все поля обязательны к заполнению, и если хоть одно не проходит валидацию, остальные проверять нет смысла), передать работу функции по выводу сообщений и вывести соответствующее сообщение.
Плюс к тому, можно сделать проверку не создавая такое кол-во функций.
Если нет других условий, то можно проверять значения полей в цикле. Если применить цикл, то получим расширяемую форму, т.к. не придется для каждого нового элемента формы писать функцию проверки.
В жизни не все так просто, а гораздо проще