Afficher/ télécharger une image distante [Résolu]

waterw72 63 Messages postés jeudi 30 septembre 2004Date d'inscription 18 juillet 2008 Dernière intervention - 2 avril 2008 à 11:27 - Dernière réponse : yoman64 962 Messages postés samedi 19 janvier 2002Date d'inscription 2 août 2010 Dernière intervention
- 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;
            }
        }
    }
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
yoman64 962 Messages postés samedi 19 janvier 2002Date d'inscription 2 août 2010 Dernière intervention - 2 avril 2008 à 13:32
3
Merci
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  

Merci yoman64 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de yoman64
nicomilville 3498 Messages postés lundi 16 juillet 2007Date d'inscription 28 février 2014 Dernière intervention - 2 avril 2008 à 12:15
0
Merci
Salut,

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.