Показать сообщение отдельно
Старый 06.08.2011, 14:00   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Php + HTML + JavaScript

Сообщение от 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 нужно заменить на те, что ты получил при регистрации на сайте рекапчи.
В принципе на выходе получишь что хотел. По идее, это самый простой способ, какой я вижу.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием