在我的网站上,我在论坛上启用了BBCode,然而,我的一些用户一直在利用这一点,并将图片的来源打造成一个给用户"尊重点"的页面。我想知道是否有一种方法可以检查[img]标签中的URL是否是真实的图像,而不仅仅是网页。我认为"getimagesize"函数在这里可能很有用,但我找不到一种正确的方法来检查它是否是真实的图像,并且之后能够用正则表达式解析它。我宁愿不只是检查文件扩展名,因为有些图片在我的网站上没有文件扩展名。对此有什么见解吗?
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。