Sample code for 30+ languages & platforms
PHP ActiveX

Bunny Sign URL and then Download using Signed URL

See more Bunny CDN Examples

Shows how to sign a URL for BunnyCDN Token Authentication and then use it to download.

Chilkat PHP ActiveX Downloads

PHP ActiveX
<?php

$success = 0;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$mySecurityKey = 'e7ea8d73-8fa0-44ef-a2cc-91526f7df5ed';

$url = 'https://test.b-cdn.net/sample-pdf-with-images.pdf';

// Extract the URL components.
$urlObj = new COM("Chilkat.Url");
$urlObj->ParseUrl($url);

$url_scheme = 'https';
if ($urlObj->Ssl == 0) {
    $url_scheme = 'http';
}

$url_host = $urlObj->Host;
$url_path = $urlObj->Path;

// Calculate an expiration time 1 hour from the current date/time.
$expTime = new COM("Chilkat.CkDateTime");
$expTime->SetFromCurrentSystemTime();
$expTime->AddSeconds(3600);
$expires = $expTime->getAsUnixTimeStr(0);

print 'Expires = ' . $expires . "\n";

// Create the string to hash
$sbToHash = new COM("Chilkat.StringBuilder");
$sbToHash->Append($mySecurityKey);
$sbToHash->Append($url_path);
$sbToHash->Append($expires);

// Base64Url encoding is the same as base64, except "-" is used instead of "+",
// "_" is used instead of "/", and no "=" padding is added.
$token = $sbToHash->getHash('sha256','base64Url','utf-8');

$sbSignedUrl = new COM("Chilkat.StringBuilder");
$sbSignedUrl->Append($url_scheme);
$sbSignedUrl->Append('://');
$sbSignedUrl->Append($url_host);
$sbSignedUrl->Append($url_path);
$sbSignedUrl->Append('?token=');
$sbSignedUrl->Append($token);
$sbSignedUrl->Append('&expires=');
$sbSignedUrl->Append($expires);

$signedUrl = $sbSignedUrl->getAsString();
print 'Signed URL: ' . $signedUrl . "\n";

// Use the signed URL to download the file.
$http = new COM("Chilkat.Http");
$success = $http->Download($signedUrl,'c:/aaworkarea/sample.pdf');
if ($success == 0) {
    print $http->LastErrorText . "\n";
}
else {
    print 'Success.' . "\n";
}


?>