【问题标题】:Not allow a href tags in form textarea不允许在表单 textarea 中使用 href 标签
【发布时间】:2010-06-09 07:44:17
【问题描述】:

如何防止用户在联系表单文本区域中输入任何 url 或链接,我已经尝试过,但它不起作用 -

   if (!isset($_POST['submit']) && preg_match_all('/<a.*>.*<\/a>/', $_POST['query']))
      {
   echo "<h1 style='color:red;'>HTML Tag Not allowed </h1>";
      }
   else {
       //sendmail 
      }

请帮帮我

【问题讨论】:

  • 一般来说,除非您有充分的理由重新发明轮子(并花时间清除所有错误),否则您永远不应该自己尝试这种清洁方式。大多数市长编程语言都具有用于从文本中清理 html 标签的本机和可靠/经过良好测试的功能。在 php 中是 strip_tags()。
  • 也许是一个更重要的问题:如何防止用户输入

标签: php html regex


【解决方案1】:

strip_tags

尝试使用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>');
?>

【讨论】:

    【解决方案2】:

    您的方法行不通,因为大概没有人会在发布链接时使用正式的 HTML 标记。要清理输入,您可以使用PHP Strip tags 函数。

    【讨论】:

    • 我想阻止大部分包含链接或网址的垃圾邮件,有什么办法吗,我是新手,所以请支持谢谢
    【解决方案3】:
    $regex_pattern = "/<a href=\"(.*)\">(.*)<\/a>/";
    
    if( (strlen($_POST['query']) > 0) && (preg_match_all($regex_pattern, $_POST['query']) )
    

    { echo "找到的标签"; }

    【讨论】:

      【解决方案4】:

      试试:

      if(!empty($_POST['submit']) and preg_match("/<a\shref=\"[a-z]{3,5}:\/{2}(?:w{3}\.)?[^>]+.([^<]+)/i",$_POST['query'])){
                  //send mail
          }
      

      【讨论】:

        猜你喜欢
        • 2020-07-07
        • 1970-01-01
        • 2013-12-25
        • 1970-01-01
        • 2020-02-28
        • 2011-11-14
        • 2014-10-18
        • 2014-11-12
        • 2018-04-01
        相关资源
        最近更新 更多