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

Joh*_*ohn 0 php

下面的代码包含一些PHP代码,允许用户向其他人发送电子邮件邀请.它工作正常.但是,我正在尝试添加一个名为"check_porn_terms"的函数,以便没有用户可以输入他们的名字作为"色情"或其他粗俗的术语,然后以该名称发送一封推荐我的网站的电子邮件.变量"$ _POST ['sendername']"是用户的名字.

以下功能不起作用.知道我怎么能让它工作?

提前致谢,

约翰

function check_porn_terms($input) {
    $porn_terms = array("porn", "sex", "etc.");

    return !preg_match('#\b(' . join('|', array_map('preg_quote', $porn_terms)) . ')\b#i', $input);
}


$sendername = $_POST['sendername'];
$sendername = strtolower($sendername);

if(!check_porn_terms($sendername))
{

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

}

$msg = "<html><body>Hello, your friend ".htmlspecialchars($_POST['sendername'])." recommends that you use <a href='http://www.site.com/'>Site.com</a><br><br><img src='http://site.com/images/blacklogo.PNG'></body></html>";
$subject = "Try out Site.com";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: ' . $_POST['sendername'] . "\r\n";
foreach($_POST['email'] as $email){
mail($email, $subject,$msg,$headers);
}
Run Code Online (Sandbox Code Playgroud)

Kev*_*che 5

如上所述,你正试图阻止这个滑坡,因为这一点已经被clbuttic reference所引用.即使你得到上面的代码工作,它也很容易被规避,你将不断地打这场战斗,你会无意中造成副作用,比如阻止好话.你可能想重新考虑一下你的策略.

阅读这些有关这方面的一些想法:

http://thedailywtf.com/Articles/The-Clbuttic-Mistake-.aspx

https://blog.codinghorror.com/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea/

请注意,我认为尝试阻止粗俗是令人钦佩的,我很想知道软件世界中更好的技术来解决这个问题...(我确信有人会想出更好的方法).