|
|
|
| Нужно чтоб при нажатии ссылки (в которой допустим программа) под ссылкой показывало сколько человек скачало программы, без исползования БД. Если у кого есть, поделитесь плиз! | |
|
|
|
|
|
|
|
для: Санька
(27.11.2007 в 22:46)
| | без бд? на файлах? | |
|
|
|
|
|
|
|
для: bronenos
(27.11.2007 в 23:53)
| | На файлах, ну как, код (после чтоб в файл записывало сколько раз скачали) и выводилось это число в браузере (ну понимаете). | |
|
|
|
|
|
|
|
для: Санька
(27.11.2007 в 22:46)
| | А как происходит учёт? | |
|
|
|
|
|
|
|
для: Саня
(28.11.2007 в 00:02)
| | Как понять? После нажатии на ссылку записывается 1 в файл еще раз нажал еще 1 записывается в файле плюсуется и показывает общее количество 2 и выводится в браузер общее количество скачиваний. | |
|
|
|
|
|
|
|
для: Санька
(28.11.2007 в 00:25)
| | Пример http://wap.siemens-club.ru/?mod=video&file_id=o93p6C | |
|
|
|
|
|
|
|
для: Санька
(28.11.2007 в 00:34)
| | Вы полагаете, там не применяется БД? | |
|
|
|
|
|
|
|
для: Trianon
(28.11.2007 в 00:37)
| | А причем тут применяется там БД или нет, зачем мне база чтоб хранить одну цифру!!! Проще в файл чтоб записывалось. | |
|
|
|
|
|
|
|
для: Санька
(28.11.2007 в 00:44)
| | проще для кого? | |
|
|
|
|
|
|
|
для: Санька
(28.11.2007 в 00:44)
| | А что, количество загрузок будет так мало, что их можно будет выразить одной цифрой? :) | |
|
|
|
|
|
|
|
для: Unkind
(28.11.2007 в 02:05)
| | Гг накосячил :) так и знал что зацепится кто нибудь :) ну не одна а от 0 до бесконечности, мужики ну так стоит мне ждат помощи, или бесполезно? | |
|
|
|
|
|
|
|
для: Санька
(28.11.2007 в 04:07)
| | И какое вы планируете количество файлов использовать?
Как я понимаю для каждой программы свой должен быть файл.
По моему здесь проще использовать БД. | |
|
|
|
|
|
|
|
для: Faraon
(28.11.2007 в 08:51)
| |
file_put_contents('count.dat',(int)file_get_contents('count.dat')+1);
|
| |
|
|
|
|
|
|
|
для: Gemorroj
(28.11.2007 в 09:17)
| | Вы это мне ответили ? | |
|
|
|
|
|
|
|
для: Faraon
(28.11.2007 в 09:50)
| | >Вы это мне ответили ?
Нет, скорее автору темы =) | |
|
|
|
|
|
|
|
для: Gemorroj
(28.11.2007 в 09:17)
| | Как им пользоваться? При обновлении страницы плюсуется 1. | |
|
|
|
|
|
|
|
для: Faraon
(28.11.2007 в 08:51)
| | 1 файл, в нём 2 проги | |
|
|
|
|
|
|
|
для: Санька
(27.11.2007 в 22:46)
| | IMHO лучше юзать MySQL - проблем меньше. Да плюс ко всему готовое решение в книге есть! | |
|
|
|
|
|
|
|
для: mihdan
(28.11.2007 в 10:47)
| | Не, спасибо, мне бы на файлах. | |
|
|
|
|
|
|
|
для: Санька
(30.11.2007 в 18:12)
| | :))))
примерно так
ссылка на файл www.my.com/file.zip?dl=1
пишем
<?
$dl=$_GET['dl'];
if($dl)
{
$f=fopen("otstoi.txt","r+");
$p=fgets($f,10);
$p=intval($p);
$p=$p+1;
rewind($f);
fputs($f,$p);
fclose($f);
}
?>
|
смотрим
<?
$f3=fopen("otstoi.txt","r");
$g3=fgets($f3,10);
echo $g3;
?>
|
| |
|
|
|
|
|
|
|
для: moonfox
(30.11.2007 в 18:42)
| | Работает правильно, только не понятно как на 2 файле будет выводится число загрузок. | |
|
|
|
|
|
|
|
для: moonfox
(30.11.2007 в 18:42)
| | Я имею ввиду чтоб в txt файле было 2 строки, в одной число загрузок от одной проги, в др. строке число загрузок от другой проги. | |
|
|
|
|
|
|
|
для: Санька
(30.11.2007 в 20:12)
| | Создайте файл, например, satics.php. Пропишите в нем:
<?
define('STAT1', 0); //константа, определяющая число загрузок файла 1
define('STAT2', 0); //константа, определяющая число загрузок файла 2
?>
|
Учет загрузок файлов:
<?
//если есть загрузка
require_once("satics.php");
$cnt1 = !empty($_GET['file1']) ? STAT1 + 1 : STAT1; //число загрузок фйла 1
$cnt2 = !empty($_GET['file2']) ? STAT2 + 1 : STAT2; //число загрузок фйла 2
//запись новых значений
$f = fopen("satics.php","w");
flock($f, LOCK_EX);
fputs($f,"<?php\ndefine('STAT1', '".$cnt1."');\n");
fputs($f,"define('STAT2', '".$cnt2."');\n?>");
flock($f, LOCK_UN);
fclose($f);
//теперь можно всегда и в любом месте обратившись к константам, получить число загрузок файлов
echo STAT1;
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(30.11.2007 в 20:46)
| | Всё хорошо, только все забывают про блокировку файла во время записи. (подводный камень при использовании файлов вместо БД)
Гляньте тему: http://softtime.ru/forum/read.php?id_forum=1&id_theme=44056 скипт, я думаю, сможете адаптировать под свои нужды. | |
|
|
|
|
|
|
|
для: Valick
(30.11.2007 в 21:28)
| | Это как бы подразумевается, что надо! ;-) | |
|
|
|
|
|
|
|
для: sim5
(30.11.2007 в 21:32)
| | Так мне ставить этот код? Надежный? | |
|
|
|
|
|
|
|
для: Санька
(30.11.2007 в 21:34)
| | Мы не можем знать куда и что вам ставить, мы можем указать вектор направления , а дальше "прощай земля, в добрый путь")) | |
|
|
|
|
|
|
|
для: Санька
(30.11.2007 в 21:34)
| | Надежный это база, а это простой :) Он ничем не отличается от предложенных выше текстовых файлов. Но это не простой файл, а файл в котором определяются константы, чтобы их получить, вам достаточно в нужном месте сделать подключение этого файла, и обратиться к константам. Константы пишутся в РНР в верхнем регистре, это вам для информации. Подключили и взяли... А что вам лучше подойдет, выбирайте сами.
PS. Если у вас запросы идут через индексный файл, то достаточно такой файл подключить один раз, правда если в нем потребность всегда имеется.
PPS. Подправил, чтобы без лишних вопросов. ) | |
|
|
|
|
|
|
|
для: sim5
(30.11.2007 в 21:39)
| | Не работает, показывает 0, и не понятно куда данные записываются. | |
|
|
|
|
|
|
|
для: Санька
(30.11.2007 в 22:31)
| | Александр, у вас скорее всего не один из предложенных выше вариантов работать не будет. Все работает, если вы только не скопировали "вслепую", и проверяете то, чего у вас не существет, например, $_GET['file1']. Я не знаю как вам объяснить деликатно, но куда и что записывается, видно из кода. | |
|
|
|
|
|
|
|
для: sim5
(01.12.2007 в 02:46)
| | Да я просто не пойму, есть у меня 2 файла (1.rar и 1.zip в ссылках) и что мне делать? Я на $_GET['file1'] смотрю просто тупо и не вкурю пробывал так $file1="1.rar"; без результатно. | |
|
|
|
|
|
|
|
для: Санька
(01.12.2007 в 03:08)
| | >1.rar и 1.zip в ссылках
Что значит в ссылках? | |
|
|
|
|
|
|
|
для: Санька
(01.12.2007 в 03:08)
| | А вы не смотрите так. Как вы узнаете в своем коде, что у вас клиент запросил файл на загрузку и какой? Если вы этого не знаете, то я тем более. Поэтому я и пишу (для примера), предполагая например, что пользователь кликает по ссылке, в которой будет переменная file1 (для первого файла, для второго file2), а вы определяя ее, отдаете файл и записываете показания в счетчик. Повторяю с разъяснениями:
//пусть это файл stat.php
<?
define('STAT1', 0); //константа, определяющая число загрузок файла 1
define('STAT2', 0); //константа, определяющая число загрузок файла 2
?>
|
Учет загрузок файлов, где-то в каком-то месте кода:
<?
//если есть загрузка файла, а на примере (НО не в вашем коде!!!) я это проверяю
//как наличие переменной $_GET['file1'] при запросе на загрузку первого файла
//и $_GET['file2'] при запросе на загрузку второго файла.
//Внимание! Замените эти переменные своими реальными переменными!
//Подключаем файл stat.php. Если в вашем коде, запросы идут через index.php
//и статистика загрузок применяется часто, и во многих местах
//можете сделать это подключение один раз, в индексном файле.
require_once("stat.php");
//если запрошен фйл 1, то увеличим константу числа загрузок этого файла на 1
//иначе оставим без изменения
$cnt1 = !empty($_GET['file1']) ? STAT1 + 1 : STAT1;
//если запрошен фйл 2, то увеличим константу числа загрузок этого файла на 1
//иначе оставим без изменения
$cnt2 = !empty($_GET['file2']) ? STAT2 + 1 : STAT2;
//запись новых значений
//открываем файл
$f = fopen("stat.php","w");
//блокируем доступ к файлу
flock($f, LOCK_EX);
//перезаписываем весь файл stat.php заново
fputs($f,"<?php\ndefine('STAT1', $cnt1);\n");
fputs($f,"define('STAT2', $cnt2);\n?>");
//разрешаем доступ к файлу
flock($f, LOCK_UN);
//закрываем дескриптор
fclose($f);
//Все. Теперь можно выводить
?>
|
Замените временно эти строки:
<?
$cnt1 = !empty($_GET['file1']) ? STAT1 + 1 : STAT1;
$cnt2 = !empty($_GET['file2']) ? STAT2 + 1 : STAT2;
//вот на эти строки
$cnt1 = STAT1 + 1;
$cnt2 = STAT2 + 1;
//и напишите
echo STAT1.'<br>'.STAT2;
//и убедитесь в работоспособности, запустив тест, и повторяя его по F5
|
Все, более я не знаю как еще объяснить. В отличие от первого варианта, здесь укорочено, но это потому, что значения у констант, это числа, и не обязательно их обрамлять в кавычки.
PS. >пробывал так $file1="1.rar"; без результатно
Например, ссылка на запрос загрузки файла, содержит путь к скрипту загрузчика с переменной file и параметром, определяющим файл. Если параметр равен 1, то запрашивают файл 1.rar, если 2, то 2.rar:
<A HREF="path/scriptname.php?file=1">Загрузить файл 1</A>
Вот тогда в скрипте обработчика загрузки (scriptname.php) пишите (после того как определили, что действительно требуют файл):
<?
//вместо
$cnt1 = !empty($_GET['file1']) ? STAT1 + 1 : STAT1;
$cnt2 = !empty($_GET['file2']) ? STAT2 + 1 : STAT2;
//вот так, например
if ($_GET['file']==1) {
$cnt1 = STAT1 + 1; $cnt2 = STAT2;
} else {
$cnt2 = STAT2 + 1; $cnt1 = STAT1;
}
?>
|
Но можете передавать в переменной и имя файла, и сравнивать по имени. | |
|
|
|
|
|
|
|
для: sim5
(01.12.2007 в 03:34)
| | Вот условие поставил и заработало, проверяю на стабильность. | |
|
|
|
|
 1.3 Кб |
|
|
для: sim5
(01.12.2007 в 03:34)
| | Работает не стабильно, посмотрите пожалуйста. Первая стр. работает стабильно, а вторая со вторым файлом не стабильно, при обновлении стр. прибавляется число. Не ругайте сильно :) но разобраться вашему ученику не получается! | |
|
|
|
|
|
|
|
для: Санька
(02.12.2007 в 18:30)
| | Что это означает?:
<?
if(!isset($_GET['a'])) $_GET['a']=1;
switch($_GET['a'])
//а если установлена, то чему тогда равна?
|
Я вообще не понимаю, когда у вас может наступить ситуация, когда будет доступна страница 2.
Я вам упоминал, что числа не обязательно заключать в кавычки, пишите проще, так как позже было указано. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 18:46)
| | Это условие обозначает что при любом раскладе открывается первая страница case1 если допустим войду по ссылке так z.ru/index.php
Вторая стр. index.php?a=2
Первая стр. index.php и index.php?a=1 | |
|
|
|
|
|
|
|
для: Санька
(02.12.2007 в 18:58)
| | Это я видел, но вот ваша логика кода:
<?
$file1="san.php?file=1";
$file2="san.php?file=2";
if(!isset($_GET['a'])) $_GET['a']=1;
switch($_GET['a'] {
case 1: 'Text... <a href="'.$file1.'">Link 1</a>';
break;
case 2: 'Text... <a href="'.$file2.'">Link 2</a>';
}
|
Откуда вы берете $_GET['a'] мне не известно, но если case 2 будет выполнено, то только в этом случае можно будет закачать файл 2, а значит и увеличить значение счетчика. Ищите причину в этом, а не в самом способе изменения счетчика. Кстати, в вашем случае большой выгоды от использования констант не будет. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 19:13)
| | От куда вы берёте $_GET['a']? Я её не могу брать не откуда так как она ещё не известна, но по умолчанию она равна 1. Я так понимаю причина сбоя из за ?a=1 или 2... так как присутствует ?file=1 и 2 тогда как поправить это? | |
|
|
|
|
|
|
|
для: Санька
(02.12.2007 в 19:47)
| | Вот этого я не могу сказать, для этого нужно знать все, что вы задумали. Если она у вас не известна, то у вас никогда и не будет ссылки на загрузку файла 2. Хотите просто проверить саму работу счетчика? Просто без конструкции switch поместите две ссылки $file1и $file2, делайте запросы и проверите, а насчет дальнейшего - думайте. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 20:29)
| | Я тоже не могу разобраться в счётчиках, и поэтому данная страница меня очень интересует.
Я как понял, выше, Санькин архив 1,3 Кб. работает от обновлений страниц, а не от перекачки файла.
Тут этого я не пойму:
$cnt1 = STAT1 + 1;
$cnt2 = STAT2;
}
else
{
$cnt2 = STAT2 + 1;
$cnt1 = STAT1;
|
А если 20 или 30 ссылок, то как их все переплести между собой ? А если попробовать скрипт каждого счётчика перекачек при условии генерации этого же счётчика увеличивать на 1. Причём сдесь зависимость от других счётчиков? Помогите пожалуйста разобраться !!! | |
|
|
|
|
|
|
|
для: Митя
(24.12.2007 в 15:14)
| | Что значит "переплести"? Считать общиее число загрузок этих файлов? Если да, то потребуется одна переменная, а если нет, то нужно столько переменных, сколько и файлов. | |
|
|
|