【问题标题】:PHP Comparison not workingPHP比较不起作用
【发布时间】:2018-05-18 15:52:02
【问题描述】:

我正在尝试阻止机器人发布到网站。我们运行 Googles reCaptcha (v2) 和 Honeypot,但这些都无效。我怀疑他们正在使用 xRumer。

无论如何,在我设置 Google reCaptcha Beta 3 之前,我想做一个简单的检查,如果电子邮件文本字段包含“@mail.ru”,则不允许提交,因为大多数提交都与电子邮件字段中的此值匹配.

足够简单,但它不起作用。我查看了另一个 StackOverflow 帖子,但 !== 也不起作用。

一定很简单,但我看不到。

首先我们检查表单是否已提交。然后查看最后 8 个字符,看它们是否匹配“@mail.ru”。我们还回显该值以确认比较是否正确,但它仍然允许“做某事”区域。

<?php if ($_SERVER["REQUEST_METHOD"] == "POST")  { 
    // post so do check
    $emailCheck = substr($_POST['email'], -8);
    if ($emailCheck !== '@mail.ru'); {  
?>

做某事 - 只有在 $emailCheck 不匹配时才插入

关闭检查

<?php } } ?>

HTML

<form name="form1" method="post" action="">
    <p>&nbsp;</p>
    <p><input name="email" type="text" id="email"></p>
    <p>&nbsp;</p>
    <p>
        <input type="submit" name="submit" id="submit" value="Submit">
    </p>
    <p>Email Check: <?php echo $emailCheck; ?></p>
</form>

【问题讨论】:

  • if ($emailCheck !== '@mail.ru'); { 那个分号 ; 是导致您出现问题的原因。删除它。
  • 奇瑞尔,你是 100% 正确的。谢谢!

标签: php spam-prevention


【解决方案1】:

正如@Qirel 所指出的,代码中有一个错误,它是一个结束分号

 if ($emailCheck !== '@mail.ru'); { 

在开始大括号之前。

Xrumer 仍然阻止我们阻止垃圾邮件的尝试,但至少这个问题得到了准确的回答。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2013-11-28
    相关资源
    最近更新 更多