如何在PHP联系表单中阻止垃圾邮件URL

时间:2013-11-27 22:40:43

标签: php forms

我创建了一个用户可以添加评论的表单。也许这是非常明显的,但我怎样才能避免用户在文本区域中插入URL。有没有办法检查这个? 我已经放入验证码来检查人类。

<form action="" method="POST" name="form">
  some other input fields

             <span id="sprytextarea1">
             <textarea name="Comments" cols="50" rows="3" ></textarea>
             <span class="textareaRequiredMsg">A value is required.</span></span></p>

  <img id="captcha" src="/securimage/securimage_show.php" alt="CAPTCHA Image" /><input type="text" name="captcha_code" size="10" maxlength="6" />

<a href="#" onclick="document.getElementById('captcha').src = '/securimage/securimage_show.php?' + Math.random(); return false">[ Different Image ]</a>

  <input name="Submit" type="submit" value="Submit your form ">
           <input type="hidden" name="MM_insert" value="form">
           </form>

欢迎任何建议。

3 个答案:

答案 0 :(得分:2)

在插入数据库之前插入if条件。

if(preg_match("/\b(?:(?:https?|ftp|http):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$_POST['comment'])){

echo 'error please remove URLs';

}else
{....

答案 1 :(得分:0)

使用PHP,您可以使用preg_match()和strip_tags()或两者的组合来尝试两件事。下面将清理textarea,也可以将其转义为数据库。

提交表单后,请尝试此操作。

$post = array();

foreach($_POST as $k => $v){

// strip all HTML and escape values for database

$post[$k] = strip_tags(mysql_real_escape_string($v));
}

// check of we have URL in text area

if(preg_match('/www\.|http:|https:/'i,$post['Comments']){

// prevent form from saving code goes here
echo 'error please remove URLs';

}else{
// let form be saved
}

答案 2 :(得分:0)

简单地说,没有任何自动方法来检查输入文本中的URL。您只需对用户输入使用人工检查。

例如:假设您尝试对URL应用正则表达式检查,我想欺骗它,我可能会写出显示为URL的无限字符串:

  • http:example .com
  • h ttp:// ecxampleDOTcom
  • ht-tp:/ / ecample。 COM

因此,任何评论系统都可以实现最终的垃圾邮件防护,它适用于主持人审核,其中一个人检查内容。