Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: PHP-cтраничка с числом закачек [2]
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (2): « 1 [2]   

> Описание: под файлы
ETC Администратор
Отправлено: 16 Февраля, 2004 - 15:49:37
Post Id



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 раз". Если надо, то могу сделать...
 
 Top
TvoyWeb Администратор
Отправлено: 16 Февраля, 2004 - 16:09:50
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




ETC
:up::super::super::beer:
 
 Top
TvoyWeb Администратор
Отправлено: 17 Февраля, 2004 - 01:34:48
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




ETC, вот протестил твой скрипт.
1. Не работает при register_globals=Off
2. Одинаковые кавычки в обрамлении и внутри. Вот посмотри
PHP:
<? 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";
?>
Что не есть гуд и PHP ругается.
Должно быть хотябы так
PHP:
<? 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';
?>

3. В этом куске кода и в других ты используешь "n" для перевода строки. Это не работает. Используй просто тег "BR".
4. Для разделения строки из файла ты используешь "n", надо бы заменить на что нибудь оригинальное. Дело в том что из за этого скрипт порезал название файла аж в трех местах.
Ну вроде все.
 
 Top
ETC Администратор
Отправлено: 17 Февраля, 2004 - 06:09:01
Post Id



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 одно скачивание, даже если несколько раз скачивали... хотя, я думаю, сойдёт и этот...
 
 Top
TvoyWeb Администратор
Отправлено: 17 Февраля, 2004 - 08:35:51
Post Id



Главный здесь


Покинул форум
Сообщений всего: 7072
Дата рег-ции: Нояб. 2003  
Откуда: Tashkent Uz

Карма 52




ETC
Не работает при register_globals=Off
Открой свой php.ini и настрой на register_globals=Off
В следующих версиях PHP, скорее всего этого параметра не будет, то есть он по умолчанию будет Off.
 
 Top
ETC Администратор
Отправлено: 17 Февраля, 2004 - 09:07:29
Post Id



Flash-coder


Покинул форум
Сообщений всего: 5275
Дата рег-ции: Дек. 2003  
Откуда: TimeZero

Карма 26




TvoyWeb
Посмотрю\n\n(Добавление)
TvoyWeb
Теперь работает =))). Кстати, метод, пардон, функция extract() тоже не очень безопасна, особенно HTTP_GET_VARS и HTTP_POST_VARS... лучше переписать скрипт попрямее, что я и сделал, заменив пару строк и перенеся часть скрипта в условие (хотя можно было и не делать, но так логичнее). Кстати, TvoyWeb, похоже эту ветку придётся переименовать, так как никто тут по Народу вопросов не задаёт, всё какие-то PHP, денверы Улыбка
Тема закрыта!
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0451]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33