私はここでいくつかの検索を行いましたが、ユーザーが自分のサイトに表示されるリンクを投稿して、セキュリティを強化したいと考えています. ここでいくつかのコードを見つけて変更しましたが、配列に設定された単語を取得していないようです。
<?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 などのように、配列内の各単語の大文字と小文字を区別しない混合物を設定する必要があります。
ページを更新する代わりに問題なく投稿されるため、行き詰まっています。