Описание: под файлы |
Поиск в теме | Версия для печати |
ETC |
Отправлено: 16 Февраля, 2004 - 15:49:37
|
Flash-coder
Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003
Откуда: TimeZero
Карма 26
|
Вот тут я накатал. Особо не тестил, но, вроде работает. Считает закачки файлов и пишет в файл counter.data. Сам файл скрипт нужно обозвать как out.php. Ссылка на файл должны выглядеть след. образом: http://mysite.ru/out.php?file=download/file.zip , где download/file.zip - полный путь от начала сайта, т.е. реально это http://mysite.ru/download/file.zip . Файл out.php необходимо положить в корневую директорию. Можно вывести статистику по файлам след. образом: открыть файл так: http://mysite.ru/out.php?list . Файл counter.data создаёт автоматически. Ну а вот и мои двухнедельные познания в PHP:
PHP:<?
// Written by ETC [http://etc2002.narod.ru]
$exfile = "counter.data";
if (!file_exists($exfile)) {
$fp = fopen($exfile,"w");
fclose($fp);
}
if (isset($file)) {
$direcory = ".";
$filename = basename($file);
$directory = dirname($file);
if (strpos($directory,"..")>0) die("Hack attempt...");
if (!is_dir($directory)) die("Directory not found: ".$directory);
if (!file_exists($file)) die("File not found: ".$filename);
} else if (isset($list)) {
echo "<HTML>
<HEAD>
<TITLE>Статистика</TITLE>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">
<meta http-equiv=\"pragma\" content=\"no-cache\">
</HEAD>
<BODY BGCOLOR=\"#FFFFFF\">
<H3>Статистика обращений к файлам</H3>\n";
$fp = fopen($exfile,"a+");
$fr = fread($fp,filesize($exfile));
$files = explode("\n",$fr);
while (list($key,$value) = each($files)) {
$cfile = explode(":",$value);
echo "Файл <b>".$cfile[0]."</b> = <font color=\"#ff0000\"><b>".$cfile[1]."</b></font> закачек
\n";
}
echo "</BODY>\n</HTML>";
fclose($fp);
exit;
} else {
die("Bad request");
}
$fp = fopen($exfile,"a+");
$fr = fread($fp,filesize($exfile));
$files = explode("\n",$fr);
$akey = -1;
while (list($key,$value) = each($files)) {
$cfile = explode(":",$value);
$ccfile = $cfile[0];
if ($ccfile==$file) {
$akey = $key;
break;
}
}
if ($akey==-1) {
$fw = fwrite($fp,((filesize($exfile)>0)?"\n":"").$file.":1");
} else {
$count = substr($files[$akey],strpos($files[$akey],":")+1);
$count++;
$files[$akey] = $file.":".$count;
fclose($fp);
$fp = fopen($exfile,"w");
$fw = fwrite($fp,join("\n",$files));
}
fclose($fp);
header ("Location: ".$file);
?> \n\n(Добавление)
Одно "НО": этот скрипт не выводит показаний типа: "этот файл скачан N раз". Если надо, то могу сделать... |
|
|
ETC |
Отправлено: 17 Февраля, 2004 - 06:09:01
|
Flash-coder
Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003
Откуда: TimeZero
Карма 26
|
TvoyWeb
Форум потёр мои обратные слеши, блин! Я не заметил... ещё бы ругаться будет! У меня обратные понатыканы, и n с обратным слешем и проч.. Т.е. где n, должно быть n и обратный слеш вначале. Короче сливайте отсюда: http://etc.newmail.ru/counter.zip\n\n(Добавление)
В след. раз я буду выкладывать файл, а не в виде кода... ошибок много. "n" с обратным слешем - это перевод строки и каждый файл записывается как новая строка. Щас напишу скрипт для выдачи "файл скачивался N раз"... выложу в том же архиве, что и выше. Пока этот качать можно, но в нём только один файл на данный момент...\n\n(Добавление)
Всё, добавил. Файл ftest.php - просто как тест, в нём описано, как подключить PHP-счётчик к основной странице и как выводить показания. out.php - собственно сам счётчик, как пользоваться - указано выше. fcounter.php - файл, подключаемый к основной странице, содержит функцию вывода значений скачиваний. А вообще можно всё усложнить, привязав к каждому IP одно скачивание, даже если несколько раз скачивали... хотя, я думаю, сойдёт и этот... |
|
|
ETC |
Отправлено: 17 Февраля, 2004 - 09:07:29
|
Flash-coder
Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003
Откуда: TimeZero
Карма 26
|
TvoyWeb
Посмотрю\n\n(Добавление)
TvoyWeb
Теперь работает =))). Кстати, метод, пардон, функция extract() тоже не очень безопасна, особенно HTTP_GET_VARS и HTTP_POST_VARS... лучше переписать скрипт попрямее, что я и сделал, заменив пару строк и перенеся часть скрипта в условие (хотя можно было и не делать, но так логичнее). Кстати, TvoyWeb, похоже эту ветку придётся переименовать, так как никто тут по Народу вопросов не задаёт, всё какие-то PHP, денверы
|
|
|
|
Поиск в теме | Версия для печати |
Страниц (2): « 1 [2] |
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0) |
« PHP/Perl » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|