Afficher/ télécharger une image distante

Résolu
waterw72 Messages postés 63 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 18 juillet 2008 - 2 avril 2008 à 11:27
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 - 2 avril 2008 à 13:32
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

yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
2 avril 2008 à 13:32
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  
3
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
2 avril 2008 à 12:15
Salut,

met l'adresse de la page qui contient l'image dans l'atribut src de ta balise
0
waterw72 Messages postés 63 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 18 juillet 2008
2 avril 2008 à 12:31
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.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
2 avril 2008 à 12:42
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 !!!
0
Rejoignez-nous