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 "<font color=\"blue\"><br />HOST : " . $sHost;
echo "<br />GET : " . $sPath;
echo "<br /></font>";
$rFp = fsockopen($sHost, 80, $errno, $errstr, 30);
if (!$rFp) {
echo "$errstr ($errno)<br />\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 "<font color=\"red\">" . "Erreur : $code <br /></font>";
break;
case 302:
echo "<font color=\"orange\">" . "Erreur : $code <br /></font>";
break;
case 200:
// affichage de la page
echo "<font color=\"green\">" . htmlentities($ligne) . "</font><br />";
break;
}
}
echo $ligne;
}
}
}