在将图像链接更新到数据库之前,请验证图像链接是否真的是图像链接


Verify if image link is really a image link before updating it to database

我们如何验证图像链接,如果它真的是一个图像链接使用php?

我有一个网站,用户可以保存图像链接,但我想在将其添加到数据库之前检查该链接,我只想接受jpg和png文件类型。

设:http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash3/65952_491770220880511_1455944784_n.jpg

如何验证?

只是想知道是否有办法:)

Thanks in advance

谢谢大家的帮助

可以使用php的get_headers函数来检查文件的内容类型。

你可以伪造报头(例如php的header()函数),但对于基本的验证,这应该是有效的。

$headers = get_headers("http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash3/65952_491770220880511_1455944784_n.jpg", 1);
if ($headers["Content-Type"] == "image/png" or $headers["Content-Type"] == "image/jpeg") {
    // It is a PNG or JPG
}

也可能是(但我不完全确定)服务器返回的内容类型的变体,如"image/jpg"或"img/png"。你必须不断尝试,直到你涵盖了所有的可能性。

您可以尝试使用CURL检索图片并检查标题以查看Content-Type。如果它与图片匹配,您可以使用imageMagick复制图片,或者直接将链接保存到数据库中。

您可以检查头只看到Content-Type,它可以确保您的文件类型不存在或无错误的文件。我也很想知道,是否有可能验证(存在)一个URL或图像URL ?