Jump to content
  • 0

Форма обратной связи


Pasha
 Share

Question

есть форма:

<form method="post" name="sendform" id="sendform">
<input type="text" name="name" class="inputtext" id="name" value="" placeholder="for example John Jonson" />

<input type="tel" name="tel" class="inputtext" id="tel" value="" placeholder="for exapmle 8 123 4567890" />

<input type="text" name="address" class="inputtext" id="adres" value="" placeholder="for example 27 Oak Street Tenafly, NJ, 07670, USA" />

<input type="email" name="email" class="inputtext" id="email" value="" placeholder="for example john.jonson@email.com" />

<select class="country_select" size="1" name="country_select">
<option value="">[Select]</option>
<option value="Russia">Russian Federation</option>
<option value="USA">USA</option>
<option value="England">England</option>
<option value="Germany">Germany</option>
<option value="France">France</option>
</select>

<div class="slider">
<script type="text/javascript">
$(window).load(function () {
$('.RememberMe :checkbox').iphoneStyle({ checkedLabel: 'Yes', uncheckedLabel: 'No' });
});
</script>

<div class="RememberMe">
<input id="first_slider" type="checkbox" checked="checked" ></input>
</div>
</div>

<div class="slider">
<script type="text/javascript">
$(window).load(function () {
$('.RememberMe :checkbox').iphoneStyle({ checkedLabel: 'Yes', uncheckedLabel: 'No' });
});
</script>

<div class="RememberMe">
<input id="second_slider" type="checkbox" ></input>
</div>
</div>

<div class="slider">
<script type="text/javascript">
$(window).load(function () {
$('.RememberMe :checkbox').iphoneStyle({ checkedLabel: 'Yes', uncheckedLabel: 'No' });
});
</script>

<div class="RememberMe">
<input id="third_slider" type="checkbox" disabled="disabled" checked="checked"></input>
</div>
</div>

<div class="slider">
<script type="text/javascript">
$(window).load(function () {
$('.RememberMe :checkbox').iphoneStyle({ checkedLabel: 'Yes', uncheckedLabel: 'No' });
});
</script>

<div class="RememberMe">
<input id="last_slider" type="checkbox" disabled="disabled"></input>
</div>
</div>

<div class="radioandcheckbox">
<input id="first_checkbox" type="checkbox" name="first_checkbox" checked hidden />
<label for="first_checkbox"></label>
</div>

<div class="radioandcheckbox">
<input id="second_checkbox" type="checkbox" name="second_checkbox" hidden />
<label for="second_checkbox"></label>
</div>

<div class="radioandcheckbox">
<input id="third_checkbox" type="checkbox" name="third_checkbox" hidden disabled />
<label for="third_checkbox"></label>
</div>

<div class="radioandcheckbox">
<input id="last_checkbox" type="checkbox" name="last_checkbox" checked hidden disabled />
<label for="last_checkbox"></label>
</div>

<div class="radioandcheckbox">
<input id="first_radio" type="radio" name="radio" checked hidden />
<label for="first_radio"></label>
</div>

<div class="radioandcheckbox">
<input id="second_radio" type="radio" name="radio" hidden />
<label for="second_radio"></label>
</div>

<div class="radioandcheckbox">
<input id="third_radio" type="radio" name="radio" hidden disabled />
<label for="third_radio"></label>
</div>

<textarea name="message" id="message"></textarea>

<div class="tf">
<input type="file" size="26" id="addfile" onchange='document.getElementById("filesource").value=this.value' />
<div class="img"></div>
<input id="filesource" type="text" />
</div>

<input type="submit" class="formbutton" value="Send" name="sendbtn" id="sendbtn" /></td>

</form>

есть js для работы формы:

$(document).ready(function() {

$("#sendform").submit(function(event) {
event.preventDefault();

$.post("send.php",
$("#sendform").serialize(),
function(data) {
if (data == 'capcha')
alert('Вы неправильно ввели проверочное слово!');
if (data == 'sent') {
$('#sendform').trigger( 'reset' );
alert('Заявка отправлена!');
}
if (data == 'unsent')
alert('Ошибка отправления данных!');
});
});
});

И php, чтобы отправлять данные:

<?php

require_once('recaptchalib.php');
$privatekey = '';
$resp = recaptcha_check_answer ($privatekey,$_SERVER['REMOTE_ADDR'],$_POST['recaptcha_challenge_field'],$_POST['recaptcha_response_field']);

$valid = $resp->is_valid;

if (!$valid)
print('capcha');
else {
$name = trim($_POST['name']);
$tel = trim($_POST['tel']);
$adres = trim($_POST['adres']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);

$address = 'user@email.com';
$sub = "Кто-то оставил заявку";
$mes = "Автор назвался: $name \n\n Указал свои контактный номер: $tel \n\n Указал свой адрес: $adres \n\n Указал свой email: $email \n\n Содержание письма: $message";
$verify = mail($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$name");

if($verify)
print('sent');
else
print('unsent');
}

?>

Изначально форма была сделана для другого сайта, а js и php были сделаны моим знакомым, который сейчас в армии. Сейчас я сделал новую форму с новыми плюшками: input type="checkbox", input type="radio", input type="file", select.

реКапчу убрал. Сам я в js и php полный ноль (пока) поэтому хочу спросить совета у вас: что нужно прописать в js и php, чтобы форма работала (сейчас по нажатию на кнопку ничего не происходит)?

Edited by Pasha
Link to comment
Share on other sites

7 answers to this question

Recommended Posts

  • 0

3) нет таких типов данных в природе:

<input type="tel" ... />
<input type="email" ... />

Есть - http://htmlbook.ru/html/input/type

В любом случае, если указан неверный type или не указан вовсе, то это будет обычное текстовое поле.

  • Like 1
Link to comment
Share on other sites

  • 0

к стати, в вэлью сабмита стоит Send, а в js стоит sent ;)

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

Эту форму я взял из того сайта, добавил новое, убрал капчу. Вроде бы должно хоть что-то происходить, сообщение с ошибкой, например, но не происходит ничего(

1) конкретизируйте задачу

2) обособьте проблему

Т.к. я взял старую форму и добавил в неё некоторые новые штучки, а рекапчу убрал, то теперь нужно переделать js и php (или только php, я не знаю точно) так, чтобы все данные из новой формы отправлялись.

Edited by Pasha
Link to comment
Share on other sites

  • 0

да, ссори не туда смотрел, вечно тороплюсь, спешу куда-то...

у вас в php осталась проверка на валидность капчи:


$valid = $resp->is_valid;

if (!$valid)// если не прошла валидацию
print('capcha'); // выдать соотв. предупреждение
else { // иначе обрезаем пробелы с пришедших данных и присваиваем переменным глобальные значения массивов
//и делаем отправку данных
$name = trim($_POST['name']);
$tel = trim($_POST['tel']);
$adres = trim($_POST['adres']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);

$address = 'user@email.com';
$sub = "Кто-то оставил заявку";
$mes = "Автор назвался: $name \n\n Указал свои контактный номер: $tel \n\n Указал свой адрес: $adres \n\n Указал свой email: $email \n\n Содержание письма: $message";
$verify = mail($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$name");

if($verify)
print('sent');
else
print('unsent');
}

можно просто тупо убрать лишнюю проверку на капчу и сделать так:



$name = trim($_POST['name']);
$tel = trim($_POST['tel']);
$adres = trim($_POST['adres']);
$email = trim($_POST['email']);
$message = trim($_POST['message']);

$address = 'user@email.com';
$sub = "Кто-то оставил заявку";
$mes = "Автор назвался: $name \n\n Указал свои контактный номер: $tel \n\n Указал свой адрес: $adres \n\n Указал свой email: $email \n\n Содержание письма: $message";
$verify = mail($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$name");

if($verify)
print('sent');
else
print('unsent');

но лучше так не делать, а сделать доп. проверки для этих полей ну хотя бы на пустоту..., а то будут слать пустые мессаги :D

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

Link to comment
Share on other sites

  • 0

skip

Оооууу Спасибо! :) Но я пока никакой защиты вставлять не буду по некоторым причинам. А как мне теперь запилить всякие новые инпуты и селект в php код? Ну понятно можно создать новые переменные по образцу тех, что есть, но как их добавить в, отправляемое на ящик, сообщение?

Link to comment
Share on other sites

  • 0

в качестве проверки можно вот такое соорудить:


$error = array();
if(empty($_POST['name']) or strlen($name) < 3) {
$error[] = "имя не должно быть короче 3 символов";
}
if(!preg_match("/^[0-9\-\(\)\ ]+$/", $_POST['tel'])) {
$error[] = "некорректный телефон";
}
if(!preg_match("/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i", $_POST['email'])) {
$error[] = "некорректный email";
}
if(empty($_POST['message']) or strlen($message) < 10) {
$error[] = "сообщение не должно быть короче 10 символов";
}
if($error[]) {
foreach($error as $val) {
echo $val.'<br />';
}
} else {
$address = 'user@email.com';
$sub = "Кто-то оставил заявку";
$mes = "Автор назвался: $name \n\n Указал свои контактный номер: $tel \n\n Указал свой адрес: $adres \n\n Указал свой email: $email \n\n Содержание письма: $message";
mail($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$name");
echo "сообщение отправлено";
}

ну это как бэ "на коленке" писалось, так что мож где-то и ошибся...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy