Javascript 检查输入值是否不等于整数,然后不';不要提交表格

Javascript 检查输入值是否不等于整数,然后不';不要提交表格,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,我有一个简单的php电子邮件表单,但我收到了垃圾邮件。我已经添加了一个检查输入,用户必须填写输入。如果输入值等于12,则提交表单,否则不要提交带有弹出错误的表单。(请计算。) 6x2= 我正在使用下面的php方法: if(isset($_POST['not_robot']) !== 12 && isset($_POST['not_robot']) !== ''){ echo '<script type="text/javascript">alert("Pl

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


6x2=
我正在使用下面的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
}
if(isset($\u POST['not\u robot'])!==12和&isset($\u POST['not\u robot'])!==“”){
echo“警惕”(如果你是人类,请算算一下);
}否则{
//电子邮件脚本在这里
}
当我提交表单时,错误弹出窗口显示“请做数学,如果你是人类”,但在我关闭弹出窗口后,它还会发送电子邮件。 有什么帮助吗?谢谢


注:如果可以使用javascript或jquery使用check方法,这将是一个很大的帮助。

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

普通JS

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);
  }
}
jQuery:

$(function() {
  $("form").on("submit",function(e) {
    var val = $("[name='not_robot'"].val();
    if (isNaN(val) || !parseInt(Number(val)) == val ||  isNaN(parseInt(val, 10)) e.preventDefault();
  }
}

您需要在客户端上测试:

普通JS

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);
  }
}
jQuery:

$(function() {
  $("form").on("submit",function(e) {
    var val = $("[name='not_robot'"].val();
    if (isNaN(val) || !parseInt(Number(val)) == val ||  isNaN(parseInt(val, 10)) e.preventDefault();
  }
}

不要试图阻止以这种方式发送垃圾邮件。我的建议是应用csrf保护和谷歌验证码。您可以使用csrf保护。使用谷歌验证码时,不要试图阻止以这种方式发送垃圾邮件。我的建议是应用csrf保护和谷歌验证码。您可以使用csrf保护。对于谷歌验证码,请在提交表单时尝试检查。使用下面的代码或链接-

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>

提交表单时请尝试进行检查。使用下面的代码或链接-

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>
HTML:

HTML:


如果你想通过PHP进行验证,下面就是方法

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
}
if(是数字($\u POST['not\u robot'])&!空($\u POST['not\u robot'])){
echo“警惕”(如果你是人类,请算算一下);
}否则{
//电子邮件脚本在这里
}

如果您想通过PHP进行验证。下面是方法

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
}
if(是数字($\u POST['not\u robot'])&!空($\u POST['not\u robot'])){
echo“警惕”(如果你是人类,请算算一下);
}否则{
//电子邮件脚本在这里
}

方法:

if(isset(($_POST['not_robot']) != '12') && (isset($_POST['not_robot']) !== '')){
    /* alert here */
    exit();
}else{
    //email script here
}
  • 使用函数退出当前脚本执行。我们可以在有(或没有)消息的情况下使用此函数

    语法:
    退出(消息)
    退出()

  • 我们也可以使用
    return

    在这里,控件将返回到调用运行该文件的脚本

试试这个:

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

方法:

if(isset(($_POST['not_robot']) != '12') && (isset($_POST['not_robot']) !== '')){
    /* alert here */
    exit();
}else{
    //email script here
}
  • 使用函数退出当前脚本执行。我们可以在有(或没有)消息的情况下使用此函数

    语法:
    退出(消息)
    退出()

  • 我们也可以使用
    return

    在这里,控件将返回到调用运行该文件的脚本

试试这个:

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


这不是所要求的。12只是一个示例-在测试一个boolean@Shubham谢谢,您的代码正在运行,但是如果值不等于12,我可以添加错误消息吗?@SajjadAhmad我已经更新了我的代码,您可以在
其他部分中打印任何警报消息。如果我的答案对你有帮助,请投上一票或将其标记为正确。@ShubhamBaranwal很好,但还有一件事,它只会在我键入错误的号码时发出警报,但如果我不键入任何内容,它不会给我警报。@SajjadAhmad remove
required=“required”
从你的
input
元素中删除,然后它应该会工作。这不是要求的。12只是一个示例-在测试一个boolean@Shubham谢谢,您的代码正在运行,但是如果值不等于12,我可以添加错误消息吗?@SajjadAhmad我已经更新了我的代码,您可以在
其他部分中打印任何警报消息。如果我的答案对你有帮助,请投上一票或将其标记为正确。@ShubhamBaranwal很好,但还有一件事,它只会在我键入错误的号码时发出警报,但如果我不键入任何内容,它不会给我警报。@SajjadAhmad remove
required=“required”
从你的
input
元素中删除,那么它应该会起作用。这取决于目标受众。计算器足以阻止收割机,但不能阻止专门的垃圾邮件发送者,这取决于目标受众。计算器足以阻止Harvester,但不是专门的垃圾邮件发送者她想要在PHP中不是JSI用JSFIDLE测试了代码,它可以工作:如果数学答案错误,表单不会提交。他想要在PHP中不是JSI用JSFIDLE测试了代码,它可以工作:如果数学答案错误,表单不会提交。这不会阻止提交此操作不会停止提交