下面的代码包含一些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)
如上所述,你正试图阻止这个滑坡,因为这一点已经被clbuttic reference所引用.即使你得到上面的代码工作,它也很容易被规避,你将不断地打这场战斗,你会无意中造成副作用,比如阻止好话.你可能想重新考虑一下你的策略.
阅读这些有关这方面的一些想法:
http://thedailywtf.com/Articles/The-Clbuttic-Mistake-.aspx
https://blog.codinghorror.com/obscenity-filters-bad-idea-or-incredibly-intercoursing-bad-idea/
请注意,我认为尝试阻止粗俗是令人钦佩的,我很想知道软件世界中更好的技术来解决这个问题...(我确信有人会想出更好的方法).