需要对移动应用程序表单使用验证码验证吗?

时间:2014-06-27 07:41:41

标签: mobile captcha spam intel-xdk

我正在通过XDK制作HTML5移动应用。我有一些表格,我在网站上使用Captcha验证。在我的预测中,移动应用程序的评论垃圾邮件不能制作任何场景。有没有人看到任何针对移动应用的垃圾评论?您认为我需要在移动应用程序表单中使用验证码验证还是不要打扰用户?

2 个答案:

答案 0 :(得分:0)

评论垃圾邮件发生在移动和桌面网站或应用程序上。常用的文本验证码验证有助于解决此问题。

对于移动应用程序,在本机应用程序中自动化数据提交更加困难。原因部分是由于无法编写恶意外部脚本来发现源代码中的元素并调用表单提交。此外,必须购买(免费或付费)移动应用程序并将其安装在物理设备或模拟器中。

更适合移动应用的CAPTCHA:sliderCAPTCHAimageCAPTCHAmotionCAPTCHARingCAPTCHANuCAPTCHA

答案 1 :(得分:0)

防止网站和混合应用中的垃圾评论和垃圾邮件机器人的最佳方法是通过JS或jQuery动态创建表单,而不是直接将表单放在视图中(HTML代码)。通过这种方式,您不需要使用Captcha来保护它免受僵尸程序的侵害。以下是使用jQuery创建表单的示例代码:

// Make THE FORM tag
var $form = $("<form/>", {
  appendTo : $("#contactFormSection"),
  class    : "col-xs-12 col-sm-11",
  id       : "contactForm",
  submit   : AJAXSubmitForm
});

//MAKE A HIDDEN INPUT
$("<input/>",{
  type        : "hidden",
  name        : "flag", // Needed for serialization
  value       : "5",
  appendTo    : $("#nameSection"),
  on          : {        // Yes, the jQuery's on() Method 
    /*
    input : function() {
      console.log( this.value );
    }
    */
  }
});

//Make Name INPUT
$("<input/>",{
  type        : "text",
  class       : "formContact", 
  id          : "exampleInputName2",
  name        : "name", // Needed for serialization
  placeholder : "Your Name",
  appendTo    : $("#nameSection"),
  on          : {        // Yes, the jQuery's on() Method 

  }
});

//MAKE EMAIL INPUT
$("<input/>",{
  type        : "email",
  class       : "formContact", 
  id          : "exampleInputEmail1",
  name        : "email", // Needed for serialization
  placeholder : "Your Email",
  appendTo    : $("#emailSection"),
  on          : {        // Yes, the jQuery's on() Method 

  }
});

//MAKE TEXTAREA 
$("<textarea/>",{
  class       : "formContact-text", 
  rows        : "3",
  name        : "msg", // Needed for serialization
  placeholder : "Your message",
  appendTo    : $("#msgSection"),
});

//submit the form
function AJAXSubmitForm(event) {
  event.preventDefault(); // Prevent Default Form Submission
  // do AJAX instead:
  var serializedData = $(this).serialize();
  $.ajax({
    url: "Your server API URL",
    type: "POST",
    data: serializedData,
    dataType: 'json',
    success: function (data) {
      // log the data sent back from PHP
      if(data.status){
        $('#confirmation').modal('show');
      } else{
        $('#errorMsg').modal('show');
      }
    }
  });
}