0

私の Web サイトでは、フォーラムで BBCode を有効にしていますが、一部のユーザーはこれを悪用しており、画像のソースをユーザーに「リスペクト ポイント」を与えるページにしています。[ img ] タグ内の URL が Web ページだけでなく、実際の画像であるかどうかを確認する方法があるかどうか疑問に思っていました。ここで「getimagesize」関数が役立つと思っていましたが、実際の画像であるかどうかを確認し、後で正規表現で解析できる適切な方法が見つかりません。私のウェブサイトには一部の画像にファイル拡張子がないため、ファイル拡張子をチェックするだけではありません。これに関する洞察はありますか?

4

1 に答える 1

0

getimagesize()は行く方法です。TIFFだけでなく、ほぼすべての一般的なWeb画像形式をサポートします。私が考えることができる唯一の例外はSVGです。

これに加えて、特定のページにアクセスできないようにブラックリストを設定する必要があります。

<?php
function validURL($url){
    $bad = array("respect.php","website.com","etc");
    /* Check each array element to see if it is in the URL */
    foreach($bad as $fail){
        if(strpos($url,$fail) !== FALSE){
            return false;
        }
    }
    return true;
}

if(validURL($url) && getimagesize($url) !== FALSE){
    // Valid image
} else {
    // Strip url
}
?>

ここで重要なのは、validURL()がfalseを返すと、 ifステートメントがショートすることです。これにより、getimagesize()がいたずらなURLにアクセスできなくなります。

于 2012-03-19T02:31:56.527 に答える