PHP用自己服务器代理显示一张网络图片
在自己服务器显示一张别人服务器上的图片的时候,经常会出现跨域问题或者别人服务器设置了防盗链,导致图片不能正常显示,可以用以下函数显示一张网络图片,加上referer防止防盗链。
/**
* 用自己服务器代理显示一张网络图片
* @param string $url 图片的地址,该url是否经过urlcode编码均可
* @return bool|resource 图片的二进制信息
*/
function imageProxy($url)
{
//urlcode解码
$url = urldecode($url);
//验证url
if (!preg_match("/(https?):\/\/[-A-Za-z0-9+&@#\/\%?=~_|!:,.;]+[-A-Za-z0-9+&@#\/\%=~_|]/", $url)) {
echo 'url不合法';
return false;
}
//解析url
$domain = parse_url($url);
if (!$domain || !isset($domain['host']) || !isset($domain['scheme'])) {
echo '未正常解析url';
return false;
}
//加上referer
$header[] = 'referer: ' . $domain['scheme'] . '://' . $domain['host'];
//get请求
$image = Http::get($url);
//输出图片
header('Content-Type: image/jpeg');
echo $image;
}
Http::get()
函数在下一篇博客给出。