Afficher/ télécharger une image distante

Résolu
Signaler
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008
-
Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
-
Bonjour,
J'essaye d'afficher une image se trouvant sur un site distant.
J'obtiens une erreur 403 (accès refusé).
Je peux pourtant voir cette image avec mon navigateur.
Pourquoi?
function GetImage($sUrlImage) {
        $aData = explode("/", $sUrlImage);
        $sHost = $aData[0];
        $sImage = $aData[sizeof($aData)];
        $sPath = "/";
        for ($i=1;$i < sizeof($aData);$i++) {
            $sPath .=  $aData[$i] . "/";
        }
        $sPath = substr($sPath, 0, strlen($sPath)-1); // enlever le dernier "/"
        echo "
HOST : " . $sHost;
        echo "
GET : " . $sPath;
        echo "
";
               
        $rFp = fsockopen($sHost, 80, $errno, $errstr, 30);
        if (!$rFp) {
            echo "$errstr ($errno)
\n";
        } else {
                   
            fputs($rFp, "GET $sPath HTTP/1.0\r\n");
            fputs($rFp, "Host: $sHost\r\n");
            fputs($rFp, "Referer: http://www.perdu.com\r\n");
            fputs($rFp, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n\r\n");
           
            $iCompteur = 0;
            while (!feof($rFp)) {
                // incrémentation
                $iCompteur++;
               
                // récupération des liens
                $ligne = fgets($rFp, 4096);
               
                // si c'est la première ligne
                if ($iCompteur == 1) {
                    $response = explode(" ", $ligne); // HTTP:1.1 200 OK
                    $code = $response[1];
                   
                    switch ($code) {
                        case 404:
                            echo "" . "Erreur : $code
";
                            break;
                        case 302:
                            echo "" . "Erreur : $code
";
                            break;
                        case 200:
                            // affichage de la page
                            echo "" . htmlentities($ligne) . "
";
                            break;
                    }
                }
               
               
                echo $ligne;
            }
        }
    }

4 réponses

Messages postés
962
Date d'inscription
samedi 19 janvier 2002
Statut
Membre
Dernière intervention
2 août 2010
1
Salut,

Je comprends pas pourquoi tu sors du html sur une page qui devrait afficher une image ? de plus tu ne mets aucun headers, donc même si ça fonctionnait l'image s'afficherait pas. A moin que tu essais de récuperer un lien vers une image a partir d'une page web distante et non pas l'image en tant que telle ?

Sinon je trouve que tu te complique un peu la vie pour rien.

<?php
header('Content-type: image/gif');
readfile('http://www.google.ca/intl/en_ca/images/logo.gif');
?>

Évidement tu dois avoir les fopen wrappers actifs.
Parce que dans l'état des choses ton code ne peut pas fonctionner si son but est d'afficher l'image : tu ne n'isole pas les données reçu, tu echo n'importe quoi, etc.

Sinon donne nous l'adresse de l'image pour qu'on voit qu'est-ce qui cause ton erreur 403, ça peut être beaucoup de choses (le serveur blacklisté, le referer qui est mauvais, il faut être authentifié, etc).
-------------------
Vous cherchez un hebergement Php/MySQL Gratuit et sans publicités ??
Et bien c'est la : www.e3b.org  
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
Salut,

met l'adresse de la page qui contient l'image dans l'atribut src de ta balise
Messages postés
63
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
18 juillet 2008

je veus que ce soit la page php qui demande l'image et qui la copie en local. pour l'afficher à partir de la page php.
je ne veux pas que ce soit mon navigateur qui demande l'image.
Mais merci qd mm.
Messages postés
3472
Date d'inscription
lundi 16 juillet 2007
Statut
Membre
Dernière intervention
28 février 2014
37
ok ba désolé du dérangement, je vais suivre ce sujet, ça m'intéresse de savoir le fin mot de l'histoire !!

Si t'a besoin d'aide, MP !!!