Fichier proxy.php

Dans notre « Guide complet AJAX« , nous proposons un proxy virtuel en ASP permettant de « faire croire » que les données viennent du serveur qui heberge les sources JS alors qu’elles viennent d’internet. Plus qu’un proxy, c’est juste un miroir…

Des lecteurs m’ont demandé à plusieurs reprises l’equivalent en PHP, voila le code :

L’url suivante le montre en action : https://brico-info.com/proxy.php?url=http://www.google.fr (les images ne sont pas visibles justement parce qu’elles sont en url relative)

Le parametre « nature » permet de renforcer l’entete du content-type, son utilisation est optionnelle.

  1. $_url = $_GET[‘url’];
  2. $_nature = $_GET[‘nature’];
  3.  
  4. $handle = fopen($_url, « rb »);
  5. $contents =  »;
  6. while (!feof($handle)) {
  7.     $contents .= fread($handle, 8192);
  8. }
  9.  
  10. //gestion des entetes
  11. if ($_nature==‘XML’)
  12.         header(« Content-type: text/xml »);
  13. elseif ($_nature==‘HTML’)
  14.         header(« Content-type: text/html »);
  15.  
  16. //on affiche la page
  17. print_r($contents);
  18.  
  19. fclose($handle);
  20. ?>

4 commentaires

  1. En fait readfile permet de faire la même chose dans ce contexte, puisque l’on veut juste afficher le contenu sans le stocker dans une variable, sinon, readfile n’est pas adapté.

  2. Si tu veux stocker le résultat dans une variable, tu peux utiliser "$contents = file_get_contents($_GET[‘url’]); echo $contents;"

    Une autre solution avec readfile:
    ob_start();
    readfile($_GET[‘url’]);
    $contents = ob_get_contents();
    ob_end_clean();
    echo $contents;

Répondre à Tim Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *