Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Счётчик загрузки файла (без базы данных)

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-42] 

 
 автор: sim5   (24.12.2007 в 16:23)   письмо автору
 
   для: Митя   (24.12.2007 в 15:14)
 

Что значит "переплести"? Считать общиее число загрузок этих файлов? Если да, то потребуется одна переменная, а если нет, то нужно столько переменных, сколько и файлов.

   
 
 автор: Митя   (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. Причём сдесь зависимость от других счётчиков? Помогите пожалуйста разобраться !!!

   
 
 автор: sim5   (02.12.2007 в 20:29)   письмо автору
 
   для: Санька   (02.12.2007 в 19:47)
 

Вот этого я не могу сказать, для этого нужно знать все, что вы задумали. Если она у вас не известна, то у вас никогда и не будет ссылки на загрузку файла 2. Хотите просто проверить саму работу счетчика? Просто без конструкции switch поместите две ссылки $file1и $file2, делайте запросы и проверите, а насчет дальнейшего - думайте.

   
 
 автор: Санька   (02.12.2007 в 19:47)   письмо автору
 
   для: sim5   (02.12.2007 в 19:13)
 

От куда вы берёте $_GET['a']? Я её не могу брать не откуда так как она ещё не известна, но по умолчанию она равна 1. Я так понимаю причина сбоя из за ?a=1 или 2... так как присутствует ?file=1 и 2 тогда как поправить это?

   
 
 автор: sim5   (02.12.2007 в 19:13)   письмо автору
 
   для: Санька   (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, а значит и увеличить значение счетчика. Ищите причину в этом, а не в самом способе изменения счетчика. Кстати, в вашем случае большой выгоды от использования констант не будет.

   
 
 автор: Санька   (02.12.2007 в 18:58)   письмо автору
 
   для: sim5   (02.12.2007 в 18:46)
 

Это условие обозначает что при любом раскладе открывается первая страница case1 если допустим войду по ссылке так z.ru/index.php
Вторая стр. index.php?a=2
Первая стр. index.php и index.php?a=1

   
 
 автор: sim5   (02.12.2007 в 18:46)   письмо автору
 
   для: Санька   (02.12.2007 в 18:30)
 

Что это означает?:

<?
if(!isset($_GET['a'])) $_GET['a']=1;
  switch(
$_GET['a'])
//а если установлена, то чему тогда равна?

Я вообще не понимаю, когда у вас может наступить ситуация, когда будет доступна страница 2.
Я вам упоминал, что числа не обязательно заключать в кавычки, пишите проще, так как позже было указано.

   
 
 автор: Санька   (02.12.2007 в 18:30)   письмо автору
1.3 Кб
 
   для: sim5   (01.12.2007 в 03:34)
 

Работает не стабильно, посмотрите пожалуйста. Первая стр. работает стабильно, а вторая со вторым файлом не стабильно, при обновлении стр. прибавляется число. Не ругайте сильно :) но разобраться вашему ученику не получается!

   
 
 автор: Санька   (01.12.2007 в 05:05)   письмо автору
 
   для: 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 STAT1;
//если запрошен фйл 2, то увеличим константу числа загрузок этого файла на 1
//иначе оставим без изменения
$cnt2 = !empty($_GET['file2']) ? STAT2 STAT2
//запись новых значений
//открываем файл 
$f fopen("stat.php","w");
//блокируем доступ к файлу 
flock($fLOCK_EX); 
//перезаписываем весь файл stat.php заново
fputs($f,"<?php\ndefine('STAT1', $cnt1);\n"); 
fputs($f,"define('STAT2', $cnt2);\n?>");
//разрешаем доступ к файлу 
flock($fLOCK_UN);
//закрываем дескриптор 
fclose($f); 
//Все. Теперь можно выводить 
?>

Замените временно эти строки:

<?
$cnt1 
= !empty($_GET['file1']) ? STAT1 STAT1;
$cnt2 = !empty($_GET['file2']) ? STAT2 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 STAT1;
$cnt2 = !empty($_GET['file2']) ? STAT2 STAT2;
//вот так, например
if ($_GET['file']==1)  {
    
$cnt1 STAT1 1$cnt2 STAT2;
  } else {
    
$cnt2 STAT2 1$cnt1 STAT1;
}
?>

Но можете передавать в переменной и имя файла, и сравнивать по имени.

   

Сообщения:  [1-10]    [11-20]   [21-30]   [31-40]  [41-42] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования