如何在PHP中代理另一个页面 [英] How to proxy another page in PHP

查看:170
本文介绍了如何在PHP中代理另一个页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找最快,最简单的方法来代理PHP页面.我不想重定向用户,只希望我的脚本返回与另一个远程URL相同的内容,响应代码和标头.

I'm looking for the fastest and easiest way to proxy a page in PHP. I don't want the user to be redirected, I just want my script to return the same content, response code and headers as another remote URL.

推荐答案

echo file_get_contents('proxypage'); 那行得通吗?

第一个答案很短,我不相信它会按照您的意愿处理标头.

First answer was a bit short, and I don't believe it will handle headers as you would like.

但是您也可以这样做:

function get_proxy_site_page( $url )
{
    $options = [
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => true,     // return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
    ];

    $ch = curl_init($url);
    curl_setopt_array($ch, $options);
    $remoteSite = curl_exec($ch);
    $header = curl_getinfo($ch);
    curl_close($ch);

    $header['content'] = $remoteSite;
    return $header;
}

这将在远程页面上返回一个包含大量信息的数组. $header['content']将同时包含网站的内容和标题,$header[header_size]将包含该标题的长度,因此您可以使用substr进行拆分.

This will return you an array containing lots of information on the remote page. $header['content'] will have both the content of the website and the headers, $header[header_size] will contain the length of that header so you can use substr to split those up.

然后只需使用echoheader代理页面即可.

Then it's just a matter of using echoand header to proxy the page.

这篇关于如何在PHP中代理另一个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆