|
|
|
| Господа! Прошу помощи. Я совсем отчаялся.
Есть задача: нужно, чтобы количество скачиваний файла с сайта фиксировалось в отдельном файле на сервере. Просто количество скачиваний.
Я плохо разбираюсь в пхп, по-этому скажите плз. куда нужно этот скрипт поместить на сервере. И где он должен находиться в коде страницы.
Заранее благодарен. С уважением. | |
|
|
|
|
|
|
|
для: Илья
(29.03.2006 в 16:07)
| | У вас имеется готовый скрипт скрипт-счётчик тоже нужен? | |
|
|
|
|
|
|
|
для: cheops
(29.03.2006 в 18:41)
| | Да, у меня есть два. Но наладить их работу мне пока не удается. Оба скачены из интернета.
Первый:
<?
$cfile = "counter-data.inc";
$localip = "127.0.0.1";
$serverip = "127.0.0.1";
# Enter information on the next line, but only after you read the "c-readme.txt" file.
$browser_id = "";
if (file_exists ($cfile)) {
$fp = fopen ($cfile,"r+");
$data = fgets ($fp,25);
$ip = chop (substr($data,0,15));
$count = substr($data,15);
# Unremark the second "if" statement and remark the first one if your site is on a hosted
# server and you have a dynamic IP, but only after you read the "c-readme.txt" file.
if ($REMOTE_ADDR == $localip or $REMOTE_ADDR == $serverip)
# if ($REMOTE_ADDR == substr_count($HTTP_USER_AGENT,$browser_id) > 0)
$np = $ip;
else
$np = $REMOTE_ADDR;
if ($np != $ip)
$count += 1;
rewind ($fp);
fputs ($fp,substr($np." ",0,15).$count);
fclose ($fp);
echo $count;
}
else {
$fp = fopen($cfile,"w");
$np = $REMOTE_ADDR;
$count = "1";
fputs ($fp,substr($np." ",0,15).$count);
fclose ($fp);
echo $count;
}
?> | |
|
|
|
|
|
|
|
для: Илья
(30.03.2006 в 16:38)
| | А каков формат файла counter-data.inc - что в нём находится? | |
|
|
|
|
|
|
|
для: cheops
(30.03.2006 в 21:46)
| | Пишет: 127.0.0.1 1 | |
|
|
|
|
|
|
|
для: Илья
(31.03.2006 в 12:39)
| | Вот у меня есть скрипт:
<?php
$ip=getenv("REMOTE_ADDR");
$date=date('d.m.Y',time());
$fo = fopen ("ip.txt", 'r');
flock($fo,1);
$data = fread ($fo, filesize("ip.txt"));
flock($fo,3);
fclose ($fo);
$f = fopen ("counter.txt", 'r''r');
flock($f,1);
$counts = fread ($f, filesize("counter.txt"));
flock($f,3);
fclose ($f);
list($d,$total,$hits,$hosts)=explode("|",$counts);
if ($d!=$date)
{
$d=$date;
$hits=0;
$hosts=0;
$erase=fopen("ip.txt",'w+');
flock($erase,2);
fputs($erase,"");
flock($erase,3);
fclose($erase);
}
if (!stristr($data,$ip))
{
$file=fopen("ip.txt",'a');
flock($file,2);
fputs($file,$ip."rn");
flock($file,3);
fclose($file);
$total++;
$hits++;
$hosts++;
}
else
{
$total++;
$hits++;
}
$wfile=fopen("counter.txt",'w+');
flock($wfile,2);
fputs($wfile,$d."|".$total."|".$hits."|".$hosts);
flock($wfile,3);
fclose($wfile);
include ("straz.html");
?>
Пожалуйста напишите руководство для ламеров. Куда counter.php нужно положить, что вписать в код страницы. И как должна выглядеть ссылка на файл для скачивания с учетом счетчика?
Зарание благодарен, с уважением, Илья. | |
|
|
|
|
|
|
|
для: Илья
(03.04.2006 в 19:35)
| | А у вас структура сайта какая - все файлы в одной куче, или имеются вложенные папки? | |
|
|
|
|
|
|
|
для: cheops
(03.04.2006 в 23:26)
| | Вложенные папки имеются. Речь идет о скачивании одного файла. И счетчик должен обсчитывать 1 линьк. | |
|
|
|
|
|
|
|
для: Илья
(05.04.2006 в 11:17)
| | Если у вас один файл давайте просто сами создадим счётчик (count.php):
<?php
// Имя файла для загрузки
$file = "glava15.zip";
// Имя файла, где хранится значение счётчика
$filename = "count.txt";
$num = 0;
// Подсчитываем обращение
if(file_exists($filename))
{
// Получаем текущее значение счётчика
$num = file_get_contents($filename);
// Увеличиваем счётчик на единицу
$num = $num + 1;
}
// Перезаписываем значение счётчика
$fd = fopen($filename,"w");
fwrite($fd,$num);
fclose($fd);
// В заголовке отправляем ссылку на загружаемый файл.
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=$file'>";
?>
|
Здесь переменная $file - содержит имя скачиваемого файла, $filename - имя файла, где будет хранится число загрузок. Просто дайте ссылку на скрипт count.php - он будет подсчитывать обращения и выдавать посетителям файл. Количество загрузок можно будет получить из файла $filename при помощи незамысловатого кода
<?php
echo file_get_contents($filename);
?>
|
PS Если что-то не заладится - пишите, будем разбираться дальше. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2006 в 14:27)
| | Спасибо!
У меня стоит Денвер. И что делать с прокси-сервером(У меня включен)? Нужно ли закачивать на сервер(Денвер) содержимое сайта?
В скрипте, написанном вами, кроме имени файла для загрузки, я что-либо еще должен изменить?
Заранее благодарен, с уважением. | |
|
|
|
|
|
|
|
для: Илья
(05.04.2006 в 15:09)
| | >У меня стоит Денвер. И что делать с прокси-сервером(У меня
>включен)?
А что вы хотите с ним сделать?
> Нужно ли закачивать на сервер(Денвер) содержимое
>сайта?
Для каких целей?
>В скрипте, написанном вами, кроме имени файла для загрузки,
>я что-либо еще должен изменить?
В принципе нет, больше ничего менять не нужно. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2006 в 23:18)
| | Хм мне надо тоже самое только файлов 20+
И надо это проделать через mysql.
Как быть? | |
|
|
|
|
|
|
|
для: Бамси
(06.04.2006 в 05:57)
| | Вы можете воспользоваться для эти целей скриптом FileCounter, который рассматривается в "PHP 5. Практика создания Web-сайтов" http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=7063. | |
|
|
|
|
|
|
|
для: cheops
(06.04.2006 в 13:18)
| | эм... понятно. А куда нужно вставить незамысловатый код?
И как сделать чтобы на странице со ссылкой на файл отображалось это самое количество скачиваний? | |
|
|
|
|
|
|
|
для: Илья
(06.04.2006 в 17:02)
| | Скрипт работает. Только в файл count.txt ничего не пишется... | |
|
|
|
|
|
|
|
для: Илья
(06.04.2006 в 17:22)
| | FileCounter работает с использованием базы данных. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2006 в 14:27)
| | есть такой код:
<?php
$list = file("папка/1.txt");
for ($i=(sizeof($list)-1);$i>=0;$i=$i-1) {
$part=explode("[n]",$list[$i]);
echo '<a href="'.$part[0].'"><img border="0" align="top" height="16" width="16" src="skin/'.$skin_name.'/disk.gif"> '.$part[1].'</a>'.$part[2].'<br>';
};
?>
|
выводит он ссылки на файлы из текстового файла, как можно скрипт счетчика применить к этому коду?
в файле 1.txt следующее:
download/720.NES[n]720[n]128 Кб[n]Игрушка
download/T2.NES[n]T2[n]256 Кб[n]Игрушка | |
|
|
|
|
|
|
|
для: sway
(07.04.2006 в 12:02)
| | Уважаемый г-н Хеопс, скажите пожалуйста где нужно разместить этот код, что вы привели:
<?php
echo file_get_contents($filename);
?>
и еще такой вопрос. после нажатия на ссылку происходит автоматическое включение даунлоудера (DownloadMaster), т.е. открывается его главное окно, но (!)скачать(!) он не предлагает.
+ вышеописанное происходит только в том случае если даунлоадер не загружен.
P.S. так всё-таки на моей машине Апач должен стоять?
Заранее благодарен. | |
|
|
|
|
|
|
|
для: Илья
(07.04.2006 в 13:09)
| | >Уважаемый г-н Хеопс, скажите пожалуйста где нужно разместить
>этот код, что вы привели:
><?php
> echo file_get_contents($filename);
>?>
Там, где вам требуется вывести число загрузок... если не требуется - код можно никуда не вставлять.
>и еще такой вопрос. после нажатия на ссылку происходит
>автоматическое включение даунлоудера (DownloadMaster), т.е.
>открывается его главное окно, но (!)скачать(!) он не
>предлагает.
>+ вышеописанное происходит только в том случае если
>даунлоадер не загружен.
Это какой браузер имеется ввиду?
>P.S. так всё-таки на моей машине Апач должен стоять?
>Заранее благодарен.
Если на вашей машине не распалогается Web-сервер или вы не тестируете скрипты, то Apache не требуется. | |
|
|
|
|
|
|
|
для: cheops
(07.04.2006 в 23:28)
| | Спасибо за терпение! =)
Более или менее разъясняется...но..:
А как должна выглядть ссылка около надписи "Download"?
Где на сервере должны лежать файлы count.php и count.txt?
Пробовал разместить ваш код для вывода информации из лог-файла на странице рядом с "Download"... ничего не видно...
Заранее благодарен, с уважением. | |
|
|
|
|
|
|
|
для: Илья
(10.04.2006 в 18:08)
| | 1) Файл count.txt должен лежать в той же директории, что и count.php.
2) Ссылка на загрузку файла - это просто ссылка на скрипт count.php.
3) В коде
<?php
echo file_get_contents($filename);
?>
|
$filename - это путь к файлу count.txt. | |
|
|
|
|
|
|
|
для: cheops
(10.04.2006 в 22:55)
| | . | |
|
|
|
|
|
|
|
для: Илья
(13.04.2006 в 17:09)
| |
$num = 0;
if(file_exists($filename))
$num = file_get_contents($filename) ;
$num = $num + 1;
|
| |
|
|
|
|
|
|
|
для: cheops
(10.04.2006 в 22:55)
| | Ураа! Заработало.
А как сделать, чтобы рядом со ссылкой показывалось кол-во скачиваний? в скобочках, к примеру? | |
|
|
|
|
|
|
|
для: Илья
(13.04.2006 в 18:20)
| | с echo скриптом что-то не фурычит... может дело в правах доступа..? Так как вписать в скрипт скобки?
<?
echo file_get_contents ("/home/my_site/www/html/folder1/count.txt");
?>
Спасибо. | |
|
|
|
|
|
|
|
для: Илья
(17.04.2006 в 15:23)
| | Можно поступить следующим образом
<?
echo "(".file_get_contents ("/home/my_site/www/html/folder1/count.txt").")";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(17.04.2006 в 18:38)
| | Ооо! Комрад! Спасибо! Всё. Всё заработало!
Выручил. | |
|
|
|
|
|
|
|
для: cheops
(05.04.2006 в 14:27)
| | А если файлов много? | |
|
|
|
|
|
|
|
для: Mookapek
(01.05.2006 в 14:39)
| | Вы можете воспользоваться для эти целей скриптом FileCounter, который рассматривается в "PHP 5. Практика создания Web-сайтов" http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=7063. | |
|
|
|