防止链接以HTML / PHP输入形式发送

时间:2017-09-29 15:47:49

标签: php preg-match

我在html文件中有以下输入表单

 <form action="contact.php" method="post" autocomplete="on">
                                <input type="text" name="Name">
                                <input type="text" name="Email">
                                <textarea name="Message"></textarea>

和以下contact.php文件发送消息:

if (preg_match('(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*', $_POST['Message'])) {
// it's SPAM
die();
}

if(isset($_POST['Email'])){...

我正在寻找的结果是阻止在textarea中插入链接。

如果在textarea中插入了一个链接,我仍会收到该电子邮件,但我不知道我的代码中有什么问题。

1 个答案:

答案 0 :(得分:0)

使用正则表达式或xpath查找锚标记。它会更容易,您可以提醒用户有关锚标记的信息,也可以使表单禁用以提交表单。

正则表达式: -

\<a.*(\s*)href+\=[\"\'].*[\"\'][.\s\w]*>[.\s\w\d]*\<\/a\>

的xpath: -

var anchorCount = document.evaluate( 'count(//a)', document, null, XPathResult.ANY_TYPE, null );
alert( 'This document contains ' + anchorCount.numberValue + ' anchor elements' );