cvs: phpweb / do_download.php

From: Date: Tue, 14 May 2002 21:46:19 +0000
Subject: cvs: phpweb / do_download.php
Groups: php.mirrors 
Request: Send a blank email to php-mirrors+get-10179@lists.php.net to get a copy of this message
goba Tue May 14 17:46:19 2002 EDT Modified files: /phpweb do_download.php Log: Reorganize download stuff, put log thing to a shutdown function Index: phpweb/do_download.php diff -u phpweb/do_download.php:1.7 phpweb/do_download.php:1.8 --- phpweb/do_download.php:1.7 Wed Nov 7 02:47:42 2001 +++ phpweb/do_download.php Tue May 14 17:46:17 2002 @@ -1,29 +1,47 @@ <?php -if (!isset($HTTP_REFERER)) { - $HTTP_REFERER="-"; -} - +// If there is no file, then drop out an invalid file error message if (!isset($download_file) || !file_exists("distributions/$download_file")) { exit("Invalid file requested for download!"); } +// Redirect to the particular file header("Location: http://$SERVER_NAME/distributions/$download_file"); -$remote_addr = $HTTP_X_FORWARDED_FOR ? $HTTP_X_FORWARDED_FOR : $REMOTE_ADDR; +// Register the log function as a shutdown function to let the +// download starts before the log activates. This way if the +// "log server" does not work, downloads are still working +register_shutdown_function("log_download"); + +// Log downloads in a shutdown function (do not disturb download) +function log_download () +{ + global $HTTP_REFERER, $HTTP_X_FORWARDED_FOR, + $REMOTE_ADDR, $SERVER_NAME; -$remote_log = - @fopen("http://www.php.net/log_download.php". - "?download_file=" . urlencode($download_file). - "&mirror=" . urlencode($SERVER_NAME). - "&user_referer=" . urlencode($HTTP_REFERER). - "&user_ip=" . urlencode($remote_addr), - 'r'); + // Default referer + if (!isset($HTTP_REFERER)) { + $HTTP_REFERER = "-"; + } -if ($remote_log) { - fread($remote_log, 1024); - fclose($remote_log); + // Figure out true remote address + $remote_addr = $HTTP_X_FORWARDED_FOR ? $HTTP_X_FORWARDED_FOR : $REMOTE_ADDR; + + // Try to open remote log on php.net + $remote_log = + @fopen("http://www.php.net/log_download.php". + "?download_file=" . urlencode($download_file). + "&mirror=" . urlencode($SERVER_NAME). + "&user_referer=" . urlencode($HTTP_REFERER). + "&user_ip=" . urlencode($remote_addr), + 'r'); + + // If we can open it, read from it, and close (jut to make sure it runs) + if ($remote_log) { + fread($remote_log, 1024); + fclose($remote_log); + } } ?>

« previous php.mirrors (#10179) next »