forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   Php + HTML + JavaScript (http://forum.boolean.name/showthread.php?t=15225)

Chibiko 02.08.2011 18:57

Php + HTML + JavaScript
 
Доброго времени суток форумчане.

Столкнулся с проблемой подобного плана:

Есть шаблон сайта на HTML. К нему попросили прикрутить форму отправки письма.

Есть также самописный скрипт который создает капчу (captcha).

При нажатии кнопки "отправить" на форме отправки производится проверка правильности ввода капчи. если она введена правильно то отсылается сообщение.

Заказчик просит сделать так, чтобы в случае неверного ввода картинки (далее дословно): "вылазило окошко с сообщением если введено не правильно, и с сообщением если введено правильно."

заранее скажу, что я в этом всем полный нуб.

код скрипта отправки сообщения и саму форму могу выложить.

ABTOMAT 03.08.2011 03:26

Ответ: Php + HTML + JavaScript
 
Цитата:

код скрипта отправки сообщения и саму форму могу выложить.
Было бы неплохо, а то не очень понятно, от чего плясать.
Цитата:

"вылазило окошко с сообщением
alert('ololololo') не помог?

Жека 03.08.2011 10:38

Ответ: Php + HTML + JavaScript
 
Если нуб, то может боком выйти. Хотя разберёшься и станешь не нуб.:)

Chibiko 03.08.2011 11:27

Ответ: Php + HTML + JavaScript
 
Цитата:

Сообщение от ABTOMAT (Сообщение 197787)
alert('ololololo') не помог?

он должен отображаться на странице с формой отправки.

скрипт отправки сообщения
PHP код:

<?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>";
?>

разметка самой формы
PHP код:

<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"

Жека 03.08.2011 16:54

Ответ: Php + HTML + JavaScript
 
На событие onClick повесить функцию, в которой проверять капчу (я не знаю, может их на сервере проверяют всё же?)
Код:

onClick="jsTryToSend()"
и в теле джава-скрипта
Код:

function jsTryToSend() {
 if(капча_норм)
  form.submit();
 else
  alert("Капчу ввели косячную")
}


baton4ik 03.08.2011 19:33

Ответ: Php + HTML + JavaScript
 
Цитата:

Сообщение от Жека (Сообщение 197884)
На событие onClick повесить функцию, в которой проверять капчу (я не знаю, может их на сервере проверяют всё же?)
Код:

onClick="jsTryToSend()"
и в теле джава-скрипта
Код:

function jsTryToSend() {
 if(капча_норм)
  form.submit();
 else
  alert("Капчу ввели косячную")
}


На сервере, конечно. Иначе сделать обход капчи ничего не стоит.

Chibiko 06.08.2011 11:04

Ответ: Php + HTML + JavaScript
 
Проблема в том, что я не понимаю куда и как засовывать те куски кода которые вы тут написали.

ABTOMAT 06.08.2011 14:00

Ответ: Php + HTML + JavaScript
 
Цитата:

Сообщение от Chibiko (Сообщение 197804)
он должен отображаться на странице с формой отправки.

скрипт отправки сообщения
PHP код:

<?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>";
?>

разметка самой формы
PHP код:

<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 'Отправил письмо!'
Если не как надо, то показать снова форму, и написать сообщение, что именно не понравилось.
Можно и чтобы "вылазило окошечко"
PHP код:

...
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 код:

<?php
          
require_once('recaptchalib.php');
          
$publickey "your_public_key"// you got this from the signup page
          
echo recaptcha_get_html($publickey);
        
?>

При проверке формы используешь этот код:
PHP код:

<?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 нужно заменить на те, что ты получил при регистрации на сайте рекапчи.
В принципе на выходе получишь что хотел. По идее, это самый простой способ, какой я вижу.

Chibiko 07.08.2011 15:23

Ответ: Php + HTML + JavaScript
 
Капча есть своя, только не особо на мой взгляд удачная
Хостинг есть, осталось восстановить доступ а в принципе спасибо за разъяснение=)

ВиНТ 27.02.2012 06:16

Ответ: Php + HTML + JavaScript
 
JS для капчи это садомазохизм для сервера - возможно изменение исходного кода js, благодаря чему легко избежать безопасность...

Randomize 27.02.2012 12:57

Ответ: Php + HTML + JavaScript
 
Цитата:

Сообщение от ВиНТ (Сообщение 220721)
JS для капчи это садомазохизм для сервера - возможно изменение исходного кода js, благодаря чему легко избежать безопасность...

тред не читай - сразу отвечай.
У нас JS тут только перезагружает изображении каптчи.
Если изменить JS, то просто перестанешь получать каптчу и всё.


Часовой пояс GMT +4, время: 13:46.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot