【问题标题】:PHP check if an input has anything in it.PHP 检查输入是否有任何内容。
【发布时间】:2014-03-18 20:22:26
【问题描述】:

我在联系表单上有一个基本的文本输入。如果文本字段中有任何内容,我希望联系人不要发送。这里有很多类似的问题,但我想不出一种方法来改变人们给出的复杂解释以适应我的简单任务。

    <input type="text" id="check" name="check"/>

【问题讨论】:

  • 这是反垃圾邮件的伎俩吗?
  • 是的。我有 style="display:none" 但我不想通过保留它来混淆任何人。
  • 垃圾邮件机器人可以检测一个元素是否被隐藏(我们已经尝试过这种方法),所以这种方法不会很好用。看我的回答。干杯!

标签: php forms contact


【解决方案1】:
if (isset($_POST['check']) && strlen($_POST['check']) > 0) {
    // something was entered
}

【讨论】:

  • 为什么不直接使用 !empty()?
  • 因为"0" 也是empty。 :)
  • Sidstar - 因为如果您不先检查 isset(),您将触发未定义的索引警告(可能在幕后)。
【解决方案2】:

对于反垃圾邮件:

<form method="post" action="contact">
  <input type="text" id="check" name="check">
  <input type="text" name="name">
  <input type="submit">
</form>

<script>
$(function() {
  $("#check").remove();
});
</script>

在服务器端:

<?php $isSpam = isset($_POST['check']); ?>

更新

为了帮助解决这里的一些细节...您不想立即丢弃基于 $isSpam 的提交,而是要标记它。前端结果不应因提交而异(垃圾邮件提交应显示与合法提交相同的“谢谢”消息)。

其次,您应该使用$isSpam 将电子邮件或数据库行标记为潜在垃圾邮件。它是垃圾邮件的可能性很高,大概在 98% 左右。这种方法对用户来说是不突兀的。

见:http://developer.yahoo.com/blogs/ydn/many-users-javascript-disabled-14121.html

【讨论】:

  • 根据您的评论回复更新了我的答案。我见过的每个垃圾邮件机器人都不会解析 JS,所以这是一种相当可靠的方法,而且并不突兀;)
  • 这种方法的问题是它依赖于jQuery,这对于这个任务来说太多了,也不允许真正的用户禁用JS。
  • 这个概念是垃圾邮件机器人获取 html 代码(特别是表单)的快照/缓存,或者输入/提交表单,但不评估任何 JS 代码。显然,如果该字段存在,并且表单被发布,JS 没有得到评估,您可以安全地确定提交是垃圾邮件的可能性很高。老实说,在这个新时代,没有JS浏览的人并不多。这使我想到了这一点:您不必将$isSpam 视为100% 确定性...相反,标记提交...使用mail()?将“[SPAM]”附加到标题中,以便您稍后查看...等等。
  • 更新了我的答案。干杯。
【解决方案3】:
if(!empty($_POST["check"])) {
 // dont send
}

【讨论】:

  • 会抛出错误。如果$_POST['check'] 不存在。您应该完全使用 error_reporting 进行开发。
  • 如果表单是通过 AJAX 发送的怎么办?那么我确定总是设置检查
猜你喜欢
  • 2021-12-17
  • 2013-12-29
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 2012-02-03
  • 1970-01-01
  • 1970-01-01
  • 2018-05-29
相关资源
最近更新 更多