Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как проверить сумму рандомных чисел налету?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Andruxa
Отправлено: 08 Мая, 2015 - 22:04:43
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




Задача, сделать что то похожее на простою (примитивную капчу) в форме, суть которой является ввод суммы чисел которые генерируются рандомно.


CODE (html):
скопировать код в буфер обмена
  1. <div class="capcha_text"><?php echo $ch_1; ?> + <?php echo $ch_2; ?></div>


Механизм проверки формы налету в поиске нашел, с проверкой вводимых полей разобрался и подстроил под себя.

Например поле проверки имени и его проверка:
CODE (javascript):
скопировать код в буфер обмена
  1. $(document).ready(function(){
  2. var jVal = {
  3.         'fullName' : function() {      
  4.                 $('body').append('<div id="nameInfo" class="info"></div>');            
  5.                 var nameInfo = $('#nameInfo');
  6.                 var ele = $('#fullname');
  7.                 var pos = ele.offset();
  8.                        
  9.                 nameInfo.css({
  10.                         top: pos.top-1,
  11.                         left: pos.left+ele.width()+3
  12.                 });
  13.                
  14.                 if(ele.val().length < 3) {
  15.                         jVal.errors = true;
  16.                                 nameInfo.removeClass('correct').addClass('error').html('&larr; как минимум 3 символа!').show();
  17.                                 ele.removeClass('normal').addClass('wrong');                           
  18.                 } else {
  19.                                 nameInfo.removeClass('error').addClass('correct').html('&radic;').show();
  20.                                 ele.removeClass('wrong').addClass('normal');
  21.                 }
  22.         }
  23. $('#login').click(function (){
  24.         var obj = $.browser.webkit ? $('body') : $('html');
  25.         obj.animate({ scrollTop: $('#jform').offset().top }, 750, function (){
  26.                 jVal.errors = false;
  27.                 jVal.fullName();
  28.                jVal.pasName();
  29.                jVal.email();
  30.                jVal.capchaInfo();              
  31.                jVal.sendIt();
  32.         });
  33.         return false;
  34. });
  35.  
  36. $('#fullname').change(jVal.fullName);
  37. $('#pass').change(jVal.pasName);
  38. $('#email').change(jVal.email);
  39.  
  40.  
  41. });
  42.  


Вопрос в следующем, как проверить налету сумму двух чисел и при неправильном вводе выдать ошибку ?
 
 Top
exlant
Отправлено: 08 Мая, 2015 - 23:51:35
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




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

Если еще нужно проверить на js, то вставляем числа, которые нужно сложить, в определенной последовательности, что бы мы их могли достать из тега, и разложить на два числа! При отправки функции, суммируем числа, которые мы показали пользователю, и суммируем, то что он отправил, потом просто сравниваем эти числа, если не равно, отменяем отправку формы, и выводим пользователю, что он ввел не те числа!

Но, на самом деле такая капча очень легко обходиться! Что на php, что на js!

(Отредактировано автором: 08 Мая, 2015 - 23:52:15)

 
 Top
dcc0
Отправлено: 10 Мая, 2015 - 17:05:44
Post Id


Участник


Покинул форум
Сообщений всего: 1043
Дата рег-ции: Июль 2014  


Помог: 10 раз(а)




Примитивную каптчу можно еще так сделать:
Брать раз в сутки кроном какой-то вопрос из интернета и где-то хранить ответ.
При этом можно менять динамически имя файла с ответом.


-----
Март 2021. Бросил программирование
 
 Top
Andruxa
Отправлено: 12 Мая, 2015 - 22:59:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 140
Дата рег-ции: Март 2010  


Помог: 0 раз(а)




С разновидностью различных капч, в интернете встречался.
Цель есть реализовать именно задуманное не отвлекаясь на другие варианты и виды (пусть она не будет защищенная).
Если честно хотелось бы реальные варианты увидеть как сложить 2 числа на java и как их потом проверить на лету..
 
 Top
exlant
Отправлено: 12 Мая, 2015 - 23:57:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015  


Помог: 14 раз(а)




если не заморачиваться:

CODE (javascript):
скопировать код в буфер обмена
  1. <script type="text/javascript">
  2.     window.onload = createHtml;
  3.     function random(min,max)
  4.     {
  5.             return Math.floor(Math.random() * (max - min + 1)) + min;
  6.     };
  7.     function check(form)
  8.     {
  9.             if(form.sum.value == num.sum)
  10.                 return true;
  11.             else
  12.                 return false;
  13.     };
  14.     var num = {};
  15.     num.one = random(0,100);
  16.     num.two = random(0,100);
  17.     num.sum = num.one + num.two;
  18.     function createHtml()
  19.     {
  20.         var str = "";
  21.         str = "Введите сумму: <b>"+num.one+"</b> + <b>"+num.two+"</b><br>";
  22.         str += "<form onsubmit='return check(this)' action='' method='post'>";
  23.         str += "<input type='text' name='sum'><br>";
  24.         str += "<input type='submit' value='Check'>";
  25.         str += "</form>";
  26.         document.getElementById("sum").innerHTML = str;
  27.     };
  28.    </script>
  29.    <div id="sum"></div>

(Отредактировано автором: 12 Мая, 2015 - 23:58:57)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB