PHP用自己服务器代理显示一张网络图片

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()函数在下一篇博客给出。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值