沃梦达 / 编程问答 / php问题 / 正文

如何在 PHP 中代理另一个页面

How to proxy another page in PHP(如何在 PHP 中代理另一个页面)

本文介绍了如何在 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 中代理另一个页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:如何在 PHP 中代理另一个页面

基础教程推荐