below code is copied from my own software for you :)
session_start();
require_once('webapp/lib/globalfunctions/common.function.php');
function ShowFileName($filepath)
{
preg_match('/[^?]*/', $filepath, $matches);
$string = $matches[0];
#split the string by the literal dot in the filename
$pattern = preg_split('/\./', $string, -1, PREG_SPLIT_OFFSET_CAPTURE);
#get the last dot position
$lastdot = $pattern[count($pattern)-1][1];
#now extract the filename using the basename function
$filename = basename(substr($string, 0, $lastdot-1));
#return the filename part
return $filename;
}
$res=Varification();
if($res==false)
{
echo "Authentication failed";
exit;
}
if($_GET['filename']==NULL)
{
echo "Error File name";
exit;
}
$filename=$_GET['filename'];
$rfilename = $filename;
$base=ShowFileName($filename);
$file_extension = substr(strrchr($rfilename,"."),1);
switch( $file_extension )
{
case "pdf": $ctype="application/pdf"; break;
case "exe": $ctype="application/octet-stream"; break;
case "zip": $ctype="application/zip"; break;
case "doc": $ctype="application/msword"; break;
case "xls": $ctype="application/vnd.ms-excel"; break;
case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpe":
case "jpeg":
case "jpg": $ctype="image/jpg"; break;
default: $ctype="application/force-download";
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: $ctype");
header("Content-Disposition: attachment; filename=".$base.".".$file_extension.";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".@filesize($rfilename));
@readfile($rfilename);
unlink($rfilename);
some of the line might have no effect, judge yourself and get proper code from this