|
Posted by matt on 11/10/06 16:44
I have used some free code for listing files for download, but I want to
send an email to the administrator when the file has been downloaded. I
have got some code in here that does it, but it will not print in the
username or email amddress of the person doing the download - which I am
collecting from a form on the previous page. I can get the name and
email address to print out normally, just not into the email sending
body. I have attached code below:
<?php
//## snip
//### http://www.tbmnet.de/tbmnet.php?content=php_downloader
//### Copyright (c) 2004 Till Biedermann <tillbiedermann@yahoo.de> ####
//################################################################################
//### ####
//### CONFIGURATION - edit these variables for your needs. ####
//### ####
//### !!! pay attention to the syntax !!! ####
//### ####
//################################################################################
// main configuration------------------------------------
$standalone = "true";
$custom_script_name = "downloader.php";
$enable_stats = "true";
$download_stats_file = "./download_stats";
$download_folder = "./downloads/";
$auto_create_filelist = "true";
$email_notify = 1; // Would you like to get get an email when
someone downloads file? 1 = yes 0 = no
$admin_email = "webmaster@-.com.au"; // if so enter email address here
// define download filelist when auto_create_filelist is set to
"false"-----------------
$download_filelist = array( "name1" => array( "file1.zip",
"application/octet-stream",
"description1"),
"name2" => array( "subfolder1/file2.zip",
"application/octet-stream",
"description2"),
"name3" => array( "subfolder2/file1.zip",
"application/octet-stream",
"description3"));
// standalone modus configuration--------------------------
$headline_string = "List of avalible downloads";
$css_code = <<<CSS_CODE
/* here you can edit the css code */
body { font-family: Tahoma, sans-serif; }
img { border: 0px;
margin-top: 6px; }
h2 { margin-bottom: 30px;
background-color: #eeeeee;
color: #c0c0c0;
letter-spacing: .2em;
padding: .2em;
text-align: center;
border-top: solid #aaaaaa 1px;
border-bottom: solid #aaaaaa 1px; }
table { border-collapse: collapse;
width: 80%;
margin-left: auto;
margin-right: auto;
margin-bottom: 10px;
border: solid #dddddd 1px; }
th { background-color: #dddddd; }
td { padding: 8px 10px 8px 10px;
background-color: #ffffff;
border: solid #dddddd 1px; }
a { text-decoration: none;
font-weight: bold; }
/* css code editing ends here */
CSS_CODE;
// !!! dont't change the position of the operator CSS_CODE and don't
write anything behind, it must be alone at the beginning of the line
//################################################################################
//### ####
//### CONFIGURATION - ends here ####
//### ####
//### !!! don't edit anything above, except you know what you are
doing !!! ####
//### ####
//################################################################################
$download = $_GET["download"];
$SCRIPT_NAME = getenv("SCRIPT_NAME");
$usrname = $_POST["usrname"];
$usremail = $_POST["usremail"];
// initialize global
variables-----------------------------------------------------------
$GLOBALS["SCRIPT_NAME"] = getenv("SCRIPT_NAME");
$GLOBALS["enable_stats"] = $enable_stats;
$GLOBALS["download_stats_file"] = $download_stats_file;
$GLOBALS["download_folder"] = $download_folder;
$GLOBALS["auto_create_filelist"] = $auto_create_filelist;
$GLOBALS["download_filelist"] = $download_filelist;
$GLOBALS["download"] = $download;
$GLOBALS["usrname"] = $usrname;
$GLOBALS["usremail"] = $usremail;
// auto create download filelist----------------------------
if ($auto_create_filelist=="true") {
unset($download_filelist);
$current_dir=getcwd();
chdir($download_folder);
$directory=dir("./");
while ($file = $directory->read()) {
if (is_file($file) and $file!=basename($SCRIPT_NAME) and
$file!=basename($download_stats_file) and $file!=$custom_script_name) {
$download_filelist[$file][0]=$file;
$download_filelist[$file][1]="application/octet-stream";
}
}
$directory->close();
chdir($current_dir);
}
// download handling----------------------------
if (isset($download)) {
if (isset($download_filelist[$download])) {
$filename=$download_folder.$download_filelist[$download][0];
if (file_exists($filename)) {
if ($enable_stats=="true")
{
if (file_exists($download_stats_file) and
is_writable($download_stats_file)) {
foreach (file($download_stats_file) as $line)
{
$array=explode("|",$line);
$download_stats_file_array[$array[0]]=$array[1];
}
$download_stats_file_array[$download]++;
$handle=fopen($download_stats_file,"w");
foreach ($download_stats_file_array as $value) {
fputs($handle,key($download_stats_file_array)."|".$value."|\n");
next($download_stats_file_array);
}
fclose($handle);
email_admin($usrname, $usremail);
}
else { die("Sorry, no downloads avalible."); }
}
header("Content-Type: ".$download_filelist[$download][1]);
header("Content-Disposition: attachment;
filename=\"".basename($filename)."\"");
readfile($filename);
exit;
}
else { die("Sorry, but the requested file could not be found."); }
}
else { die("Sorry, but the requested download does not exist."); }
}
// functions---------------------------
function manage_download_stats()
{
$download_stats_file = $GLOBALS["download_stats_file"];
$download_filelist = $GLOBALS["download_filelist"];
// create download stats file if missing--------------
if (!file_exists($download_stats_file)) {
$handle=fopen($download_stats_file,"w");
foreach($download_filelist as $array) {
fputs($handle,key($download_filelist)."|0|\n");
next($download_filelist);
}
fclose($handle);
}
// read download stats file----------------------
foreach (file($download_stats_file) as $line) {
$array=explode("|",$line);
$download_stats_file_array[$array[0]]=$array[1];
}
return $download_stats_file_array;
}
function print_download_table()
{
$enable_stats = $GLOBALS["enable_stats"];
$download_folder = $GLOBALS["download_folder"];
$auto_create_filelist = $GLOBALS["auto_create_filelist"];
$download_filelist = $GLOBALS["download_filelist"];
$SCRIPT_NAME = $GLOBALS["SCRIPT_NAME"];
$usrname = $GLOBALS["usrname"];
$usremail = $GLOBALS["usremail"];
// get download stats---------------------------
if ($enable_stats=="true") {
$download_stats_file_array=manage_download_stats(); }
// create download table from download file list-------
echo "<table><tr><th>file</th>";
if ($auto_create_filelist!="true") { echo "<th>description</th>"; }
echo "<th>filesize</th>";
if ($enable_stats=="true") { echo "<th>downloads</th>"; }
echo "</tr>";
foreach($download_filelist as $download_filelist_array) {
if (!isset($download_stats_file_array[key($download_filelist)])) {
$download_stats_file_array[key($download_filelist)]=0; };
echo "<tr><td><a href
=\"$SCRIPT_NAME?download=".urlencode(key($download_filelist))."\"
title=\"click to download\">".key($download_filelist)."</a></td>";
if ($auto_create_filelist!="true") { echo
"<td>$download_filelist_array[2]</td>"; }
echo
"<td>".sprintf("%.1f",@filesize($download_folder.$download_filelist_array[0])/1024)."K</td>";
if ($enable_stats=="true") { echo
"<td>".$download_stats_file_array[key($download_filelist)]."</td>"; }
echo "</tr>";
next($download_filelist);
}
echo "</table>";
}
function email_admin($usrname, $usremail)
{
$usrname = $GLOBALS["usrname"];
$usremail = $GLOBALS["usremail"];
$download = $GLOBALS["download"];
global $admin_email, $email_notify, $HTTP_USER_AGENT, $REMOTE_ADDR,
$HTTP_REFERER, $strname, $stremail;
// email admin if it's enabled
if($email_notify) {
if($final_result != "7") {
// get the downloader's info
$date = date("Y-m-d H:i:s");
$ip = $REMOTE_ADDR;
$browser_info = $HTTP_USER_AGENT;
$host = gethostbyaddr($ip);
$referer = $HTTP_REFERER;
$strname = $name;
$stremail = $email;
// Email body text info
$from_info = "The following file has been downloaded:
File: $download
User Details
================
Name: $usrname
Email: $usremail
IP: $ip
HOST: $host
Browser: $browser_info
Time: $date
Referred by: $referer
";
$subject = "File Downloaded: $download";
// echo "in footer, trying to send mail: $admin_email, $final_result,
$from_info, $subject";
mail($admin_email, $subject, $from_info, "From: downloads@--.com.au");
} // end of if final result is not empty
} // end of if
}
// standalone output----------------------------------
if ($standalone=="true") {
// header-----------------------------------------------
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" >";
echo "<head><meta http-equiv=\"Content-Type\" content=\"text/html;
charset=iso-8859-1\" />";
echo "<meta name=\"author\" content=\"Till Biedermann\" />";
echo "<meta name=\"description\" content=\"download system\" />";
echo "<title>Downloads</title>";
echo "<style type=\"text/css\">".$css_code."</style></head><body>";
// body--------------------------------------------------------
echo "<h2>".$headline_string."</h2>";
echo "Downloads available for: $usrname ($usremail)<br><br>";
print_download_table();
// footer--------------------------------------------------
echo "---!";
echo "</body></html>";
}
?>
Navigation:
[Reply to this message]
|