我创建了一个用户可以添加评论的表单。也许这是非常明显的,但我怎样才能避免用户在文本区域中插入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>
欢迎任何建议。
答案 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的无限字符串:
因此,任何评论系统都可以实现最终的垃圾邮件防护,它适用于主持人审核,其中一个人检查内容。