Php 阻止电子邮件邀请中的粗俗术语

Php 阻止电子邮件邀请中的粗俗术语,php,Php,下面的代码包含一些PHP代码,允许用户向其他人发送电子邮件邀请。它很好用。然而,我正在尝试添加一个名为“检查色情术语”的功能,这样用户就不能输入他们的名字作为“色情”或其他粗俗的术语,然后以该名称发送电子邮件推荐我的网站。变量“$\u POST['sendername']”是用户名 下面的功能不起作用。知道我怎样才能让它工作吗 提前感谢, 约翰 功能检查\u色情\u术语($input){ $porn_terms=数组(“色情”、“性”、“等”); return!preg_match('#\b('

下面的代码包含一些PHP代码,允许用户向其他人发送电子邮件邀请。它很好用。然而,我正在尝试添加一个名为“检查色情术语”的功能,这样用户就不能输入他们的名字作为“色情”或其他粗俗的术语,然后以该名称发送电子邮件推荐我的网站。变量“$\u POST['sendername']”是用户名

下面的功能不起作用。知道我怎样才能让它工作吗

提前感谢,

约翰

功能检查\u色情\u术语($input){
$porn_terms=数组(“色情”、“性”、“等”);
return!preg_match('#\b('.join('|',数组映射('preg_quote',$porn_terms)))\b#i',$input);
}
$sendername=$_POST['sendername'];
$sendername=strtolower($sendername);
如果(!检查色情条款($sendername))
{
会话写入关闭();
标题(“位置:http://www.site.com/friends.htm");
出口
}
$msg=“你好,你的朋友”。htmlspecialchars($\u POST['sendername')。“建议你使用

”; $subject=“Try out Site.com”; $headers='MIME版本:1.0'。“\r\n”; $headers.='内容类型:文本/html;字符集=iso-8859-1'。“\r\n”; $headers.='From:'$_POST['sendername']。“\r\n”; foreach($_POST['email']作为$email){ 邮件($email、$subject、$msg、$headers); }
我想出来了:我必须添加

ob_start();
在代码的顶部,在标题中。我想这是因为我用了这个:

header("Location:http://www.site.com/friends.htm");

我想起来了:我必须加上

ob_start();
在代码的顶部,在标题中。我想这是因为我用了这个:

header("Location:http://www.site.com/friends.htm");

正如clbuttic参考文献中提到的,您试图阻止这一点,这是在走下坡路。即使当你使用上面的代码时,它也很容易被绕过,你会不断地进行这场战斗,你会在不经意间造成一些副作用,比如阻塞好的词语。你可能需要重新考虑你在这方面的策略

阅读以下内容,了解对此的一些想法:


请注意,我认为尝试停止粗俗是令人钦佩的,我很想知道软件世界中解决这个问题的更好的技术。。。(我相信有人想出了更好的办法)。

正如clbuttic参考文献中提到的那样,你试图阻止这一点正在走下坡路。即使当你使用上面的代码时,它也很容易被绕过,你会不断地进行这场战斗,你会在不经意间造成一些副作用,比如阻塞好的词语。你可能需要重新考虑你在这方面的策略

阅读以下内容,了解对此的一些想法:

请注意,我认为尝试停止粗俗是令人钦佩的,我很想知道软件世界中解决这个问题的更好的技术。。。(我肯定有人想出了更好的办法)

通常我不使用
\b
(单词边界)来匹配单词。 是的,可能是
您的位置:
标题

通常我不使用
\b
(单词边界)来匹配单词。
是的,可能是
你的位置:
标题

一个clbuttic引用这样来了…我不得不谷歌“clbuttic”。。。有趣的是,我对在你的网站上放置这个脚本的含义提出了质疑。基本上,按照你的方式,我可以发一个帖子请求,如果我愿意的话,你可以把这封邮件发给成千上万的人。你知道“性”这个词出现在很多姓氏中,对吗?这里只有几个:约翰,你循环浏览$_POST['email'],并向每个条目发送一封电子邮件。通过向你的服务器发送一个包含成千上万封电子邮件的请求,我可以让你发送成千上万封电子邮件。这可能会杀死你的服务器,当然也会让你看起来像个垃圾信息发送者。这样一来,一个clbuttic引用就会出现…我不得不用谷歌搜索“clbuttic”。。。有趣的是,我对在你的网站上放置这个脚本的含义提出了质疑。基本上,按照你的方式,我可以发一个帖子请求,如果我愿意的话,你可以把这封邮件发给成千上万的人。你知道“性”这个词出现在很多姓氏中,对吗?这里只有几个:约翰,你循环浏览$_POST['email'],并向每个条目发送一封电子邮件。通过向你的服务器发送一个包含成千上万封电子邮件的请求,我可以让你发送成千上万封电子邮件。这可能会杀死你的服务器,而且肯定会让你看起来像个垃圾邮件发送者。如何规避该功能?在你的情况下,我知道你将其限制在单词边界和名称字段上,因此它的范围要有限得多。然而,由于不知道sendername领域的可能性,我相信您可能会遇到问题。如果有人用了JoePornoStar怎么办。。。。?如果这是发送电子邮件邀请的人,为什么允许发件人姓名?例如,如果您有用户名全名,请将其设置为用户名全名。。。。这里有一些想法给你:“热s3x”“热六”“热s*x”“热s.x”“热sxe”“热性爱”等等。我只想说,如果我是一个试图用你的表格发送色情垃圾邮件的垃圾邮件发送者,我可以简单地想出你过滤过的任何单词的100个未过滤的变体。而且,如果碰巧有人的名字叫乔·布里斯特,而你又把布里斯特列入了名单,那该怎么办呢?你一定不要读太多试图“用harbal v1agra解除你的魔杖松弛”的垃圾邮件。如何规避该功能?在你的情况下,我知道你将其限制在单词边界和名称字段上,因此它的范围要有限得多。然而,由于不知道sendername领域的可能性,我相信您可能会遇到问题。如果有人用了JoePornoStar怎么办。。。。?如果这是发送电子邮件邀请的人,为什么允许发件人姓名?例如,如果您有用户名全名,请将其设置为用户名全名。。。。只是一些想法…这里有一些给你:“热s3x”“热六”“热s*x”“热s.x”“热sxe”“热性爱”等等。如果我是一个试图发送垃圾邮件的人,我只想说一句