
Сообщение от Chibiko
он должен отображаться на странице с формой отправки.
скрипт отправки сообщения
<?php Session_start(); $name=$_POST['ynm']; $mail=$_POST['rpl']; $mess=$_POST['msg']; $caph=$_POST['captcha']; $sess=$_SESSION['secpic']; echo($caph); echo($sess); if("$sess"==strtolower("$caph")) { $message = "$name"." - "."$mail"." - "."$mess"; mail(*****@******", "******", $message); echo "Thanks."; } if("$sess"!=strtolower("$caph")) { $message=$sess." - ".$caph; mail("*****@******", "******", $message); echo "Fail."; } //echo "<script language='javascript' type='text/javascript'> javascript:history.go(-1); </script>"; ?>
разметка самой формы
<form action="scripts/sendmail.php" method="post" class="uniform get_in_touch"> <div class="i_h"><div class="l"><input type="text" name="ynm" id="ynm" placeholder="Имя" class="validate[required]" /></div></div> <div class="i_h"><div class="r"><input name="rpl" id="rpl" type="text" placeholder="E-mail:" class="validate[required]" /></div></div> <div class="t_h"><textarea name="msg" id="msg" placeholder="Сообщение" class="validate[required]"></textarea> <input type="text" name="captcha" id="captcha" placeholder="Captcha:" class="validate[required]" /></div> <img src="sec_pic.php" alt="капча)"> <a href="#" class="button" title="Submit"><span>Оправить<class="submit"></i></span></a> <a href="#" class="do_clear">Очистить</a> </form>
в принципе я понял, что мне нужен jQuery. только как сделать то, что при нажатии на кнопку отправить не совершался переход на "scripts/sendmail.php"
|
Капча проверяется на сервере и только, иначе её обойти будет как два пальца об асфальт. Самый простой способ - это делать валидацию после отправки формы обычным запросом. Тут можно было бы вообще обойтись без JavaScript'а.
Но твой заказчик явно намекает на ajax-запрос ( "вылазило окошко с сообщением если введено не правильно, и с сообщением если введено правильно."), что с "я не понимаю куда и как засовывать те куски кода которые вы тут написали" будет тебе куда сложнее.
В принципе, можно сделать и без ajax'а, таким вот образом:
Объединить скрипты формы и отправщика.
Тогда action формы будет '' (ссылаться на самого себя).
Если (!$_POST) то есть юзер только зашёл на эту страницу и ничего не отправлял, то показать ему форму.
Если есть что-то в Посте, то проверить его на валидность (все ли необходимые поля !='' ? Капчу пока оставь, нужно отработать саму валидацию).
Если все поля заполнены как надо, то отправить письмо и сделать echo 'Отправил письмо!'
Если не как надо, то показать снова форму, и написать сообщение, что именно не понравилось.
Можно и чтобы "вылазило окошечко"
...
if(ololo){
?>
<script type="text/javascript">
alert('Ты забыл ввести своё имя!');
</script>
<?php
}
...
Удостоверься, что это работает.
Теперь можно и капчу делать. Рикаминдую Recaptcha:
http://www.google.com/recaptcha
Во-первых, никогда не подводила
Во-вторых, уже готовая (у тебя, я так понял, нет ещё своей?)
Регистрируешь свой домен и читаешь доки:
http://code.google.com/intl/ru-RU/ap.../docs/php.html
Вкратце суть такова: подключается php-файл и затем echo'ится сама капча. То есть внутри <form> ты вставляешь
<?php
require_once('recaptchalib.php');
$publickey = "your_public_key"; // you got this from the signup page
echo recaptcha_get_html($publickey);
?>
При проверке формы используешь этот код:
<?php
require_once('recaptchalib.php');
$privatekey = "your_private_key";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
// What happens when the CAPTCHA was entered incorrectly
// Ну собственно сюда пихай alert('введите капчу верно');
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .
"(reCAPTCHA said: " . $resp->error . ")");
} else {
// Your code here to handle a successful verification
}
?>
Тут, думаю, всё понятно. Естественно your_private_key и your_public_key нужно заменить на те, что ты получил при регистрации на сайте рекапчи.
В принципе на выходе получишь что хотел. По идее, это самый простой способ, какой я вижу.