<?php
$domain         
"(www.mydomain.com)";   // The allowed IP or URL. Build your own regex if you need to.
$download_path  "/download";            // The directory were your download files reside.
$download_files = array ("1.exe",         // List all your download files here.
                         
"2.zip",
                         
"3.rar");
$download_page  "/downloads.php";       // Your download page.
$log            TRUE;                   // Log access from disallowed referers or not.
$log_file_all   "stats/allowed.log";    // The filename of the download log file.
$log_file_dis   "stats/disallowed.log"// The filename of the disallowed log file.

function is_allowed ($ref$file) {
global 
$domain;
global 
$download_files;

    return ((
preg_match ($domain$ref)) && (in_array ($file$download_files)));
}

function 
log_access ($ref$ip$time$file$log_file) {

    
$f fopen ($log_file"a");
    
fwrite ($f"$time, $ip, $ref, $file\n");
    
fclose ($f);
}

if (
is_allowed ($HTTP_REFERER$argv[0])) {
    if (
$log) {
        
log_access ($HTTP_REFERER$HTTP_SERVER_VARS['REMOTE_ADDR'], time(), $argv[0], $log_file_all);
    }
    
header ("Location: $download_path/$argv[0]");
} else {
    if (
$log) {
        
log_access ($HTTP_REFERER$HTTP_SERVER_VARS['REMOTE_ADDR'], time(), $argv[0], $log_file_dis);
    }
    
header ("Location: $download_page");
}
?>