2013-09-02 3 views
0

Hy! J'essaie d'obtenir une image par https en PHP.Obtenir une image via https and php

Ce que j'ai trouvé est quelque chose comme ce code qui me montre une image vierge avec une largeur correcte, mais mal hauteur:

function getSslPage($url) { 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_HEADER, false); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_REFERER, $url); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     $result = curl_exec($ch); 
     curl_close($ch); 
     return $result; 
    } 

    echo getSslPage("https://www..."); 

Je suis reconnaissant pour toute aide. :)

+0

Utiliser 'curl_error()' voir ce que va mal –

+0

'curl' ne modifie pas les dimensions de l'image, c'est probablement quelque chose en rapport avec l'image! – undone

+0

Vous avez certainement quelque chose d'autre que des données d'image (par exemple un message d'erreur PHP ou un espace avant l'ouverture de la balise ' DaveRandom

Répondre

0

Il devrait fonctionner,

essayez d'exécuter ce code,

function getSslPage($url) { 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_HEADER, false); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_REFERER, $url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch); 
$ctype="image/png"; 
header('Content-type: ' . $ctype); 
    curl_close($ch); 
    return $result; 
} 

echo getSslPage("https://ssl.gstatic.com/accounts/services/mail/phone.png"); 
2

Cela devrait le faire dans toutes les situations:

$ch = curl_init ($source_url); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_BINARYTRANSFER,true); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$rawdata=curl_exec($ch); 
curl_close ($ch); 

$fp = fopen($local_file,'w'); 
fwrite($fp, $rawdata); 
fclose($fp)