blogs@DiGiTSS

Geek Programmers’ Blog about Programming, Web, Technology, Database and ummm… lot many things..!

PHP - Downloading a File from Secure website (https) using CURL October 25, 2008

Filed under: PHP, Tools / Plugins / Extenstion, cURL — Dharmavirsinh Jhala @ 10:43 pm

Recently in one of my project I was suppose to download file from a secure website. Actually I have to set the scheduler job for downloading nightly builds/full files from the server and the files are placed on secure website.

Initially I tried that with file_get_contents function but it was just downloading 0KB file. Then it strike me that oh..! I can't use file_get_contents as it can't understand the HTTPS protocol here. So what could help me nothing else then our best friend CURL. file_get_contents and fopen kind of other functions works fine with any http web locations.

Here is the simple CURL file transfer function snippet which will copy file from any secure http location.

 
<php
/**
* Copy File from HTTPS/SSL location
*
* @param string $FromLocation
* @param string $ToLocation
* @return boolean
*/
function copySecureFile($FromLocation,$ToLocation,$VerifyPeer=false,$VerifyHost=true)
{
// Initialize CURL with providing full https URL of the file location
$Channel = curl_init($FromLocation);
 
// Open file handle at the location you want to copy the file: destination path at local drive
$File = fopen ($ToLocation, "w");
 
// Set CURL options
curl_setopt($Channel, CURLOPT_FILE, $File);
 
// We are not sending any headers
curl_setopt($Channel, CURLOPT_HEADER, 0);
 
// Disable PEER SSL Verification: If you are not running with SSL or if you don't have valid SSL
curl_setopt($Channel, CURLOPT_SSL_VERIFYPEER, $VerifyPeer);
 
// Disable HOST (the site you are sending request to) SSL Verification,
// if Host can have certificate which is nvalid / expired / not signed by authorized CA.
curl_setopt($Channel, CURLOPT_SSL_VERIFYHOST, $VerifyHost);
 
// Execute CURL command
curl_exec($Channel);
 
// Close the CURL channel
curl_close($Channel);
 
// Close file handle
fclose($File);
 
// return true if file download is successfull
return file_exists($ToLocation);
}
echo file_get_contents("https://www.verisign.com/hp07/i/vlogo.gif");exit;
// Function Usage
if(copySecureFile("https://www.verisign.com/hp07/i/vlogo.gif","c:/verisign_logo.gif"))
{
echo 'File transferred successfully.';
}
else
{
echo 'File transfer failed.';
}
?>
 

 

Next Page »