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
Форумы портала PHP.SU :: Версия для печати :: Как проверить сумму рандомных чисел налету?
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » Как проверить сумму рандомных чисел налету?

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

1. Andruxa - 08 Мая, 2015 - 22:04:43 - перейти к сообщению
Задача, сделать что то похожее на простою (примитивную капчу) в форме, суть которой является ввод суммы чисел которые генерируются рандомно.


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.  


Вопрос в следующем, как проверить налету сумму двух чисел и при неправильном вводе выдать ошибку ?
2. exlant - 08 Мая, 2015 - 23:51:35 - перейти к сообщению
если просто механизм, то можно так: на php генерируем два числа, записываем их сумму например в сессию(можно в бд, в файл). Пользователь отправляет форму, мы складываем эти числа, что пришли из формы, и сравниваем получившееся число с тем что у нас в сессии!

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

Но, на самом деле такая капча очень легко обходиться! Что на php, что на js!
3. dcc0 - 10 Мая, 2015 - 17:05:44 - перейти к сообщению
Примитивную каптчу можно еще так сделать:
Брать раз в сутки кроном какой-то вопрос из интернета и где-то хранить ответ.
При этом можно менять динамически имя файла с ответом.
4. Andruxa - 12 Мая, 2015 - 22:59:12 - перейти к сообщению
С разновидностью различных капч, в интернете встречался.
Цель есть реализовать именно задуманное не отвлекаясь на другие варианты и виды (пусть она не будет защищенная).
Если честно хотелось бы реальные варианты увидеть как сложить 2 числа на java и как их потом проверить на лету..
5. exlant - 12 Мая, 2015 - 23:57:29 - перейти к сообщению
если не заморачиваться:

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>

 

Powered by ExBB FM 1.0 RC1