Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Веб-программирование > PHP / MySQL

PHP / MySQL Создание динамических Веб-ресурсов

Ответ
 
Опции темы
Старый 02.08.2011, 14:57   #1
Chibiko
AnyKey`щик
 
Регистрация: 25.07.2011
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Печаль Php + HTML + JavaScript

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

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

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

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

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

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

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

код скрипта отправки сообщения и саму форму могу выложить.
(Offline)
 
Ответить с цитированием
Старый 02.08.2011, 23:26   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,452
Написано 5,277 полезных сообщений
(для 15,248 пользователей)
Ответ: Php + HTML + JavaScript

код скрипта отправки сообщения и саму форму могу выложить.
Было бы неплохо, а то не очень понятно, от чего плясать.
"вылазило окошко с сообщением
alert('ololololo') не помог?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

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

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Chibiko (03.08.2011)
Старый 03.08.2011, 06:38   #3
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,374
Написано 489 полезных сообщений
(для 882 пользователей)
Ответ: Php + HTML + JavaScript

Если нуб, то может боком выйти. Хотя разберёшься и станешь не нуб.
(Offline)
 
Ответить с цитированием
Старый 03.08.2011, 07:27   #4
Chibiko
AnyKey`щик
 
Регистрация: 25.07.2011
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Php + HTML + JavaScript

Сообщение от ABTOMAT Посмотреть сообщение
alert('ololololo') не помог?
он должен отображаться на странице с формой отправки.

скрипт отправки сообщения
<?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"
(Offline)
 
Ответить с цитированием
Старый 03.08.2011, 12:54   #5
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,374
Написано 489 полезных сообщений
(для 882 пользователей)
Ответ: Php + HTML + JavaScript

На событие onClick повесить функцию, в которой проверять капчу (я не знаю, может их на сервере проверяют всё же?)
onClick="jsTryToSend()"
и в теле джава-скрипта
function jsTryToSend() {
 if(капча_норм)
  form.submit();
 else
  alert("Капчу ввели косячную")
}

Последний раз редактировалось Жека, 03.08.2011 в 12:55. Причина: добавил тег code
(Offline)
 
Ответить с цитированием
Старый 03.08.2011, 15:33   #6
baton4ik
Дэвелопер
 
Аватар для baton4ik
 
Регистрация: 21.11.2009
Адрес: Киев
Сообщений: 1,699
Написано 657 полезных сообщений
(для 1,962 пользователей)
Ответ: Php + HTML + JavaScript

Сообщение от Жека Посмотреть сообщение
На событие onClick повесить функцию, в которой проверять капчу (я не знаю, может их на сервере проверяют всё же?)
onClick="jsTryToSend()"
и в теле джава-скрипта
function jsTryToSend() {
 if(капча_норм)
  form.submit();
 else
  alert("Капчу ввели косячную")
}
На сервере, конечно. Иначе сделать обход капчи ничего не стоит.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо baton4ik за это полезное сообщение:
ABTOMAT (06.08.2011), Chibiko (06.08.2011)
Старый 06.08.2011, 07:04   #7
Chibiko
AnyKey`щик
 
Регистрация: 25.07.2011
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Php + HTML + JavaScript

Проблема в том, что я не понимаю куда и как засовывать те куски кода которые вы тут написали.
(Offline)
 
Ответить с цитированием
Старый 06.08.2011, 10:00   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 25.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,452
Написано 5,277 полезных сообщений
(для 15,248 пользователей)
Ответ: 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)
 
Ответить с цитированием
Старый 07.08.2011, 11:23   #9
Chibiko
AnyKey`щик
 
Регистрация: 25.07.2011
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Php + HTML + JavaScript

Капча есть своя, только не особо на мой взгляд удачная
Хостинг есть, осталось восстановить доступ а в принципе спасибо за разъяснение=)
(Offline)
 
Ответить с цитированием
Старый 27.02.2012, 02:16   #10
ВиНТ
Оператор ЭВМ
 
Регистрация: 26.02.2012
Сообщений: 26
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Php + HTML + JavaScript

JS для капчи это садомазохизм для сервера - возможно изменение исходного кода js, благодаря чему легко избежать безопасность...
(Offline)
 
Ответить с цитированием
Старый 27.02.2012, 08:57   #11
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: Планета Земля
Сообщений: 4,143
Написано 2,335 полезных сообщений
(для 6,492 пользователей)
Ответ: Php + HTML + JavaScript

Сообщение от ВиНТ Посмотреть сообщение
JS для капчи это садомазохизм для сервера - возможно изменение исходного кода js, благодаря чему легко избежать безопасность...
тред не читай - сразу отвечай.
У нас JS тут только перезагружает изображении каптчи.
Если изменить JS, то просто перестанешь получать каптчу и всё.
__________________
Retry, Abort, Ignore? █
AMD Ryzen 7 1700X x8 3.4Ghz; 16Gb ram; Radeon RX 570
AMD Athlon II x4 2.6Ghz; 8Gb ram; Nvidia Geforce GTX 750 Ti
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 11:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com