11
votes

Comment proxy une autre page dans PHP

Je recherche le moyen le plus rapide et le plus simple de proxy une page dans PHP. Je ne veux pas que l'utilisateur soit redirigé, je veux juste que mon script ramène le même contenu, le même contenu, le même code de réponse et les en-têtes comme une autre URL distante.


2 commentaires

Pouvons-nous avoir plus de détails, je veux dire, que si le code de réponse réel de l'URL distante doit être consulté est 302? Si le script gère la redirection ou simplement passer le code d'état avec la nouvelle URL?


Idéalement, cela rendrait quelque chose de 100% identique comme si vous vous rendiez à l'URL d'origine. Pour mon projet, je n'ai pas vraiment besoin de beaucoup de détails et que le fichier_get_contents semble faire le travail. Mais je pense toujours que c'est une question intéressante


3 Réponses :


14
votes

écho fichier_get_contents ("proxype"); code> Cela fonctionnerait-il?

EDIT: strong> P>

La première réponse était un peu courte, et je ne crois pas que cela gérera des en-têtes comme vous le souhaitez. P> Cependant, vous pouvez aussi faire cela: p>

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;
}


1 commentaires

Utilisez tous les jours mais pas curl. Il sux dans la mise en œuvre actuellement



0
votes

Vous pouvez obtenir le code HTML de la page suivante avec CURL, puis echo la réponse.


0 commentaires

5
votes

Vous pouvez utiliser les fonctions PHP Curl pour atteindre cette fonctionnalité:

http: //www.php. net / curl p> xxx pré>

à partir de ce point, vous saisiriez les informations d'en-tête de réponse à l'aide de http://www.php.net/curl-getinfo . (Il y a plusieurs valeurs que vous pouvez saisir, tous répertoriés dans la documentation). P> xxx pré>

Assurez-vous de fermer la poignée de courbure. P>

// close cURL resource, and free up system resources
curl_close($ch);


2 commentaires

Typo pour curlopt_returnTransfert. Cependant, cela semble imprimer les en-têtes HTTP dans le corps de la réponse.


Essayez de changer de curlopt_header vers 0 (j'ai édité le code) pour empêcher les en-têtes d'être émis.