如何阻止用户在联系表单文本区域中输入任何网址或链接,我已尝试过此但不起作用 -
if (!isset($_POST['submit']) && preg_match_all('/<a.*>.*<\/a>/', $_POST['query']))
{
echo "<h1 style='color:red;'>HTML Tag Not allowed </h1>";
}
else {
//sendmail
}
请帮帮我
答案 0 :(得分:4)
尝试使用strip_tags。它将允许您删除所有不允许的标记。
手册中的示例:
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
echo strip_tags($text);
echo "\n";
// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>
您可以使用以下内容:
<?php
$text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
// Allow some tags but not <a>
echo strip_tags($text, '<p><strong><li><ul>');
?>
答案 1 :(得分:2)
您的方法不起作用,因为可能在发布链接时没有人会使用正式的HTML标记。要清理输入,可以使用PHP Strip tags函数。
答案 2 :(得分:1)
$regex_pattern = "/<a href=\"(.*)\">(.*)<\/a>/";
if( (strlen($_POST['query']) > 0) && (preg_match_all($regex_pattern, $_POST['query']) )
{ echo“标签发现”; }
答案 3 :(得分:0)
尝试:
if(!empty($_POST['submit']) and preg_match("/<a\shref=\"[a-z]{3,5}:\/{2}(?:w{3}\.)?[^>]+.([^<]+)/i",$_POST['query'])){
//send mail
}