0

在我的网站上,我在我的论坛上启用了 BBCode,但是,我的一些用户一直在利用它,并且一直在将图像的来源设为一个页面,为用户提供“尊重点”。我想知道是否有办法检查 [img] 标签内的 URL 是否是真实图像,而不仅仅是网页。我在想“getimagesize”函数在这里可能很有用,但我找不到合适的方法来检查它是否是真实图像,并且之后能够用正则表达式解析它。我不希望只检查文件扩展名,因为有些图像在我的网站上没有文件扩展名。对此有何见解?

4

1 回答 1

0

getimagesize() 是要走的路。它确实支持 TIFF 以及几乎所有流行的网络图像格式。我能想到的唯一例外是 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 回答