# url - URL to retrieve # timeout - seconds between each refresh, default 300, or 5 minutes $subject = $HTTP_POST_VARS['url']; function get_remote_file($url, $timeout = 300) { # on Windows, either change the dir name or make /tmp $cached_name = '/tmp/'.sha1($url).'cachedwebfile'; if (!file_exists($cached_name) or ((time() - filemtime($cached_name)) > $timeout)) { $f = fopen($cached_name, "wb"); flock($f, LOCK_EX); $ch = curl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FILE, $f); curl_exec($ch); curl_close($ch); fclose($f); } $f = fopen($cached_name, "rb"); flock($f, LOCK_SH); $retval = fread($f, filesize($cached_name)); fclose($f); return $retval; } if (strlen($url) > 0) { $filename = explode("/", $url); header('Content-type: application/octet-stream'); header('Content-Disposition: attachment; filename="' . urldecode($filename[sizeof($filename) - 1]) . '"'); print_r(get_remote_file($url)); } else { ?>