我在这里做了一些搜索,并希望让用户发布的链接确实显示在我的网站上,以增加一层安全性。我在这里找到了一些代码并对其进行了修改,但它似乎没有拾取我数组中设置的单词。
<?php
session_start();
include 'mysql-connection.php';
$comment = $_POST[comment];
$comment = htmlentities($comment);
$comment = mysql_real_escape_string($comment);
$bannedwords = array(".exe",".zip");
$matches = array();
$matchFound = preg_match_all(
"/\b(" . implode($bannedwords,"|") . ")\b/i",
$comment,
$matches
);
if ($matchFound) {
header("Location: http://mydomain/index.php");
}
else
{
mysql_query("INSERT INTO posts (postid, post_content, username)
VALUES ('', '$comment', '$username')");
header("Location: http://mydomain.org/index.php");
}
mysql_close($con);
?>
我正在使用 $_POST[comment]; 获取评论。然后更改它,以便如果他们发布 html 标签,它不会与页面的布局混淆。然后我们这样做,这样 $comment 就不会造成任何 mysql 损坏。
接下来是我遇到问题的地方。$bannedwords 基本上应该设置数组中每个单词的不区分大小写的混合,在这种情况下是 .exe .eXe .Exe 等等。
我被卡住了,因为它仍然可以正常发布,而不是刷新页面。