Подсчет количества скачиваний файла

Brezee

Новичок
Подсчет количества скачиваний файла

Подскажите плз. как можно подсчитать количество раз скачиваний файла с сайта.
есть мысль делать следующим образом:
делать ссылку на скачивание, потом открывать окно, скажем всплывающее и приоткрытии окошка писать в файл еще одно скачивание., но не факт что все-таки скачивание было, и не хочется открывать дополнительное окно :-(
Хотелось бы сразу при открытии диалога броузера на скачивание каким то образом вызывать скрипт подсчета!
Если кто имеет по этому поводу мысли, подскажите ! :)
 

Varg

Guest
Хм.... getfile.php :
// проверка на правильность.
$file = file($ID);
echo "headers....";
echo implode("",$file);
// счётчик ++
exit;

getfile.php?ID=neededfile
 

Brezee

Новичок
Есть файл в котором ссылка
<a href=index.php?down=true class=main></a>
в index
if (@$down==true){
header("Content-type: application/force-download");
header("Content-Disposition: filename="."./dir/file.zip". "%20");
}

открывается диалог загрузки но путь к файлу не на зип файл а моя ссылка на index и естественно ничего не грузится!

В чем дело не пойму!
 

Eugene Bond

sudo rm - rf /
Brezee:
в поиск. за тебя никто искать не будет. обсуждалось 1,5 миллиона раз уже...
 

Brezee

Новичок
Попробовал вот так, тоже не работает

header("Content-type: application/zip");
readfile("./file/cyr.zip");

Ребята помогите, ну не сталкивался я пока с этим.
 

Brezee

Новичок
Автор оригинала: Varg
echo readfile(".......");
Ну и что, проблемма то в том что эксплорер пытается скачивать сам скрипт, а не нужный файл!!
Т.е. в открывшемся меню закачки указанна ссылка вызывающая скрипт который должен скачивать файл, а нужно естественно ссылка на файл.

Приведу мою схему еще раз:
(т.е. есть ссылка на файл, я на ней кликаю, начинается закачка, но я хочу посчитать эти закачки), поэтому делаю следующее:
first.php
<a href=index.php?down=true class=main>

index.php

if (@$down==true){

header("Content-type: application/zip");
echo readfile("./price/cyr.zip");
}
Повторюсь - открылось окно и ie пишет не могу скачать
"index.php?down=true class=main"- почему эта сслка а не указанная мной ./price/cyr.zip

Что не так?

Я понимаю, что вопрос не интересен, но подскажите плз, в чем дело, а код я сам напишу!
 

Larson

Новичок
Зайди телнетом на какой нибудь zip файл на своем сервере и посмотри какие заголовки тебе отдает сервер.
 

tony2001

TeaM PHPClub
header('Content-Disposition: inline; filename="'.$filename.'"');
можно было уже 25 раз посмотреть как это делает phpMyAdmin.
 

Brezee

Новичок
Автор оригинала: tony2001
header('Content-Disposition: inline; filename="'.$filename.'"');
можно было уже 25 раз посмотреть как это делает phpMyAdmin.
не работает!
вообще ничего не происходит
 

Brezee

Новичок
В мане есть такой пример, не орбайтен , хм...

header("Content-type: application/force-download");
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
header("Content-Disposition: filename=$myfile" . "%20"); // For IE
else
header("Content-Disposition: attachment; filename=$myfile"); // For Other browsers
 

Verk

Guest
вот мой кусок кода, может заодно поругает кто

PHP:
function FileDownload (&$tpl,$languageid,&$lang,$fid,$FileStorage)
{
GLOBAL $debug;
$error_level=0;

$query="SELECT folder,filename FROM files_main,files_cats WHERE files_main.fid=".$fid." AND files_main.cid=files_cats.cid LIMIT 1";
$result=@mysql_query($query);
if (!mysql_num_rows($result))
    exit_error_tpl(&$tpl,6,$languageid);
$row=mysql_fetch_array($result);


# Find the real ip adress and host of downloader 			#

if (getenv('HTTP_X_FORWARDED_FOR'))
{
    $ip = getenv('HTTP_X_FORWARDED_FOR');
}else {
	$ip = getenv('REMOTE_ADDR');
}
$host = isset($GLOBALS[REMOTE_HOST]) ? $GLOBALS[REMOTE_HOST] : @gethostbyaddr($ip);

# увеличение счетчика
@mysql_query("UPDATE files_main SET downloads_num=downloads_num+1, crtime=crtime WHERE
 fid=".$fid);


# Send the file to the downloaders browser								#

$size = $FileStorage.$row[folder]."/".$row[filename];
if(!file_exists($size))
{
$error_level++;
echo_tpl(&$tpl,$lang['The file is temporary not available.']);
}
$browser=detect_browser($GLOBALS[HTTP_USER_AGENT]);


#пишем лог
@mysql_query("Insert Into files_logs values(
		  NULL,
		  '".$fid."',
		  '".$ip."',
		  '".$host."',
		  '".addslashes($GLOBALS[HTTP_USER_AGENT])."',
		  ".$error_level.",
		  NULL
		  )") or die(mysql_error());


	if ($browser == "ie")
	{
		Header("Content-type: application/force-download");
	}else{
		Header("Content-Type: application/octet-stream");
	}
		Header("Content-Length: ".filesize($size));
		Header("Content-Disposition: attachment; filename=$row[filename]");
		readfile($size);
}

function detect_browser($var)
{
		if(eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})", $var))
		{
			$c = "ie";
		}else{
			$c = "nn";
		}
	return $c;
}
 

Verk

Guest
кхм, в полевых условиях особо не тестировал, но по локалке вайлы отдает нормально как линуксовым браузерам так и эксплореру. Логи со счетчиком пишет.
 
Сверху