//обработка данных от хакеров
$mass = spliti("[/\]+", $_GET['name']);
$_GET['name'] = $mass[count($mass)-1];
if (isset($_GET['name']) AND $_GET['name'] != null AND file_exists('download/'.$_GET['name']))
{
//connect to base
include 'admin/config.inc.php';
//выборка имени из БД
$query = "SELECT id, kol FROM download WHERE name='".$_GET['name']."'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
$ldate = date("d.m.Y");
if (mysql_num_rows($result) == 0)
{
//новый файл, заносим в БД
$query_ins = "INSERT INTO download (name, kol, lastdate) VALUES ('$_GET[name]', '1', '$ldate')";
$result_ins = mysql_query($query_ins) or die("Query failed : " . mysql_error());
}
else
{
//файл есть, + 1
$line = mysql_fetch_assoc($result);
$query = "UPDATE download SET kol='".($line['kol']+1)."', lastdate='".$ldate."' WHERE id='".$line['id']."'";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
}
// отдаваемое файло
$filename = 'download/'.$_GET['name'];
$proxy= getenv(HTTP_X_FORWARDED_FOR);
$referer = htmlspecialchars($_SERVER["HTTP_REFERER"]);
$qry="INSERT INTO load_lesson (VISITDATE,IP,REFERER,FILENAME,PROXY) VALUES ('".date('y.m.d', strtotime("+8 hours"))."','".$_SERVER["REMOTE_ADDR"]."',' ".$referer." ','".$_GET['name']."','".$proxy." ')";
//$qry="INSERT INTO `galion-it_com_m`.`visitors` (`VISITDATE`) values ('".date('d.m.Y H:i:s')."')";
$res1= mysql_query($qry);
// mysql_free_result($res1);
//echo "".$qry;
// получим размер файла
$fsize = filesize($filename);
// дата модификации файла для кеширования
$ftime = date("D, d M Y H:i:s T", filemtime($filename));
// смещение от начала файла
$range = 0;
// пробуем открыть
$handle = @fopen($filename, "rb");
// если не удалось
if (!$handle){
header ("HTTP/1.0 403 Forbidden");
exit;
}
// Если запрашивающий агент поддерживает докачку
if ($_SERVER["HTTP_RANGE"]) {
$range = $_SERVER["HTTP_RANGE"];
$range = str_replace("bytes=", "", $range);
$range = str_replace("-", "", $range);
// смещаемся по файлу на нужное смещение
if ($range) {
fseek($handle, $range);
}
}
// если есть смещение
if ($range) {
header("HTTP/1.1 206 Partial Content");
} else {
header("HTTP/1.1 200 OK");
}
header("Content-Disposition: attachment; filename=\"$_GET[name]\"");
header("Last-Modified: {$ftime}");
header("Content-Length: ".($fsize-$range));
header("Accept-Ranges: bytes");
header("Content-Range: bytes {$range}-".($fsize - 1)."/".$fsize);
// подправляем под IE что б не умничал
if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
Header('Content-Type: application/force-download');
else
Header('Content-Type: application/octet-stream');
while(!feof($handle)) {
$buf = fread($handle,512);
print($buf);
}
fclose($handle);
}
else
{
header ("HTTP/1.0 404 Not Found");
echo '