检查输入值是否不等于整数然后不提交表单

时间:2017-04-06 11:20:25

标签: javascript php jquery html forms

我有一个简单的php电子邮件表单,但我收到了垃圾邮件。我添加了一个检查输入,用户必须填写输入。如果输入值等于12则提交表单,否则不提交弹出错误的表单。(请做数学运算。)

<form action="" method="post">
<input type="text" name="name" placeholder="name" required>
<input type="text" name="email" placeholder="email" required>
<input type="text" name="phone" placeholder="phone" required>

<div class="check">
   <label>6 x 2 =</label>
   <input type="text" name="not_robot" required="required">
</div>

<input type="submit" value="submit">
</form>

我正在使用下面的php方法:

if(isset($_POST['not_robot']) !== 12 && isset($_POST['not_robot']) !== ''){
    echo '<script type="text/javascript">alert("Please do the math, if you are human.");</script>';
}else{
    //email script here
}

当我提交表单时,错误弹出窗口显示“请做数学,如果你是人”,但在我关闭弹出窗口后,它也会发送电子邮件。 任何帮助appreaciated谢谢

P.S:如果使用javascript或jquery可以检查方法,那将是一个很好的帮助。

6 个答案:

答案 0 :(得分:1)

您需要在客户端上进行测试:

普通JS

TestCls

jQuery的:

window.onload=function() {
  document.querySelector("form").onsubmit=function(e) {
    var val = this.elements["not_robot"].value;
    return !isNaN(val) && parseInt(Number(val)) == val &&  !isNaN(parseInt(val, 10);
  }
}

答案 1 :(得分:0)

请勿尝试以这种方式阻止发送垃圾邮件。我的建议是应用csrf保护和谷歌验证码。您可以使用documentation进行csrf保护。对于Google验证码,请使用this library

答案 2 :(得分:0)

尝试检查提交表单的时间。使用以下代码或链接 -

JSFiddle

HTML代码 -

<form action="" method="post">
  <input type="text" name="name" placeholder="name" required>
  <input type="text" name="email" placeholder="email" required>
  <input type="text" name="phone" placeholder="phone" required>

  <div class="check">
    <label>6 x 2 =</label>
    <input type="text" name="not_robot" required="required">
  </div>

  <input type="submit" value="submit">
</form>

JAVASCRIPT代码 -

$('form').submit(function() {
      if (parseInt($('input[name="not_robot"]').val()) == 12) {
        return true;
      }
      else{
        alert('You not enterd the correct value');
        return false;
      }
    });

答案 3 :(得分:0)

如果你想通过PHP验证..Below就是这样

if(is_numeric($_POST['not_robot']) && !empty($_POST['not_robot'])){
    echo '<script type="text/javascript">alert("Please do the math, if you are human.");</script>';
}else{
    //email script here
}

答案 4 :(得分:0)

方式:

  • 使用PHP exit()函数退出当前脚本执行。我们可以使用此功能(或不使用)。

    语法: exit(message) OR exit()

  • 我们也可以使用return;

    此处,控件将返回调用该文件运行的脚本。

试试这个:

if(isset(($_POST['not_robot']) != '12') && (isset($_POST['not_robot']) !== '')){
    /* alert here */
    exit();
}else{
    //email script here
}

答案 5 :(得分:-1)

HTML:

<form action="" method="post" name="form1">
<input type="text" name="name" placeholder="name" required>
<input type="text" name="email" placeholder="email" required>
<input type="text" name="phone" placeholder="phone" required>

<div class="check">
   <label>6 x 2 =</label>
   <input type="text" name="not_robot" id="not_robot" required="required" />
</div>

<input type="button" value="submit" onClick="checkForm()">
</form>

javascipt的:

function checkForm()
{

  if(document.getElementById('not_robot').value == "12" && document.getElementById('not_robot').value != "")
  {
    alert('ok');
    document.forms['form1'].submit();
  }else{
        alert('not ok');
      }

}