|
|
|
|
|
для: Митя
(24.12.2007 в 15:14)
| | Что значит "переплести"? Считать общиее число загрузок этих файлов? Если да, то потребуется одна переменная, а если нет, то нужно столько переменных, сколько и файлов. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 20:29)
| | Я тоже не могу разобраться в счётчиках, и поэтому данная страница меня очень интересует.
Я как понял, выше, Санькин архив 1,3 Кб. работает от обновлений страниц, а не от перекачки файла.
Тут этого я не пойму:
$cnt1 = STAT1 + 1;
$cnt2 = STAT2;
}
else
{
$cnt2 = STAT2 + 1;
$cnt1 = STAT1;
|
А если 20 или 30 ссылок, то как их все переплести между собой ? А если попробовать скрипт каждого счётчика перекачек при условии генерации этого же счётчика увеличивать на 1. Причём сдесь зависимость от других счётчиков? Помогите пожалуйста разобраться !!! | |
|
|
|
|
|
|
|
для: Санька
(02.12.2007 в 19:47)
| | Вот этого я не могу сказать, для этого нужно знать все, что вы задумали. Если она у вас не известна, то у вас никогда и не будет ссылки на загрузку файла 2. Хотите просто проверить саму работу счетчика? Просто без конструкции switch поместите две ссылки $file1и $file2, делайте запросы и проверите, а насчет дальнейшего - думайте. | |
|
|
|
|
|
|
|
для: sim5
(02.12.2007 в 19:13)
| | От куда вы берёте $_GET['a']? Я её не могу брать не откуда так как она ещё не известна, но по умолчанию она равна 1. Я так понимаю причина сбоя из за ?a=1 или 2... так как присутствует ?file=1 и 2 тогда как поправить это? | |
|
|
|
|
|
|
|
для: Санька
(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 в 18:46)
| | Это условие обозначает что при любом раскладе открывается первая страница case1 если допустим войду по ссылке так z.ru/index.php
Вторая стр. index.php?a=2
Первая стр. index.php и index.php?a=1 | |
|
|
|
|
|
|
|
для: Санька
(02.12.2007 в 18:30)
| | Что это означает?:
<?
if(!isset($_GET['a'])) $_GET['a']=1;
switch($_GET['a'])
//а если установлена, то чему тогда равна?
|
Я вообще не понимаю, когда у вас может наступить ситуация, когда будет доступна страница 2.
Я вам упоминал, что числа не обязательно заключать в кавычки, пишите проще, так как позже было указано. | |
|
|
|
|
 1.3 Кб |
|
|
для: sim5
(01.12.2007 в 03:34)
| | Работает не стабильно, посмотрите пожалуйста. Первая стр. работает стабильно, а вторая со вторым файлом не стабильно, при обновлении стр. прибавляется число. Не ругайте сильно :) но разобраться вашему ученику не получается! | |
|
|
|
|
|
|
|
для: sim5
(01.12.2007 в 03:34)
| | Вот условие поставил и заработало, проверяю на стабильность. | |
|
|
|
|
|
|
|
для: Санька
(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;
}
?>
|
Но можете передавать в переменной и имя файла, и сравнивать по имени. | |
|
|
|
|