Одесса: 6°С (вода 9°С)
Киев: 1°С
Львов: 6°С

Тема: Счетчик закачек на пхп

Ответить в теме
Показано с 1 по 8 из 8
  1. Вверх #1
    Посетитель Аватар для Tyler Durden
    Пол
    Мужской
    Адрес
    От-т-туда
    Возраст
    34
    Сообщений
    267
    Репутация
    15

    По умолчанию Счетчик закачек на пхп

    Написал вот простейший счетчик закачек:
    Код:
    <?
    $counter_file="counter/".$file.".txt";
    if&#40;[email protected]&#40;$counter_file&#41;&#41;&#123;
    $count=$contents&#91;0&#93;+1;
    &#125;else&#123;
    $count=1;
    &#125;
    $f=fopen&#40;$counter_file,"w"&#41;;
    fwrite&#40;$f,$count&#41;;
    fclose&#40;$f&#41;;
    header&#40;"location&#58; /$file"&#41;;
    ?>
    Файл-то он отдает, закачки считает, только имя у файла "download.zip" (если пользуешься Opera) или "download.php" (если IE)... Менеджеры закачек все нормально обрабатывают, чего делать ?

    П.С. Если не трудно, кто хорошо знает кросс-браузерный хтмл, можете посмотреть
    http://tylerdurden.net.ru/guestbook.php почему в IE "разъезжаются рамочки от input'ов (в Opera все ок-об)
    Спасибо.
    Let the chips fall where they may


  2. Вверх #2
    Не покидает форум Аватар для iFog
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    36
    Сообщений
    5,809
    Репутация
    396
    header("Content-Disposition: attachment; filename=myfile.zip");
    Вы хотите поставить нас в тупик своими вопросами?
    Так мы поставим Вас в тупик своими ответами!

  3. Вверх #3
    Не покидает форум Аватар для iFog
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    36
    Сообщений
    5,809
    Репутация
    396
    А, не посмотрел на твой код, т.е. ты просто считаешь количество переходов.

    Ну, если так он подставляет не корректное имя файла, то попробуй редиректить пользователя не заголовком (это вообще не очень хорошо), а таким способом

    Код:
    echo '<META HTTP-EQUIV="refresh" CONTENT="0; URL=/files/file.zip">';
    Вы хотите поставить нас в тупик своими вопросами?
    Так мы поставим Вас в тупик своими ответами!

  4. Вверх #4
    Не покидает форум Аватар для iFog
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    36
    Сообщений
    5,809
    Репутация
    396
    Вообще, так как ты редиректишь пользователя туда, где файл лежит физически, то твою "считалку" легко обойти. Отдавай файл скриптом...

    Код:
    <?
    
    $file_name = './who.zip'; 
    
    if &#40;!file_exists&#40;$file_name&#41;&#41; &#123;
    	header &#40;"HTTP/1.0 404 Not Found"&#41;; 
    	exit; 
    &#125;
    
    $fsize = filesize&#40;$file_name&#41;; 
    $ftime = date&#40;"D, d M Y H&#58;i&#58;s T", filemtime&#40;$file_name&#41;&#41;; 
    
    $file_handler = @fopen&#40;$file_name, "rb"&#41;; 
    
    if &#40;!$file_handler&#41; &#123;
    	header &#40;"HTTP/1.0 403 Forbidden"&#41;; 
    	exit; 
    &#125;
    
    if &#40;$HTTP_SERVER_VARS&#91;"HTTP_RANGE"&#93;&#41; &#123;
    
    	$range = $HTTP_SERVER_VARS&#91;"HTTP_RANGE"&#93;; 
    	$range = str_replace&#40;"bytes=", "", $range&#41;; 
    	$range = str_replace&#40;"-", "", $range&#41;; 
    	
    	if &#40;$range&#41; &#123;
    		fseek&#40;$file_handler, $range&#41;;
    	&#125;
    &#125;
    
    
    if &#40;$range&#41; &#123;
    	header&#40;"HTTP/1.1 206 Partial Content"&#41;; 
    &#125; else &#123;
    	header&#40;"HTTP/1.1 200 OK"&#41;; 
    &#125;
    
    header&#40;"Content-Disposition&#58; attachment; filename=myfile.zip"&#41;; 
    header&#40;"Last-Modified&#58; $ftime"&#41;; 
    header&#40;"Accept-Ranges&#58; bytes"&#41;; 
    header&#40;"Content-Length&#58; ".&#40;$fsize-$range&#41;&#41;; 
    header&#40;"Content-Range&#58; bytes $range-".&#40;$fsize-1&#41;."/".$fsize&#41;; 
    header&#40;"Content-type&#58; application/octet-stream"&#41;; 
    
    while &#40;!feof &#40;$file_handler&#41;&#41; &#123;
    	echo fread&#40;$file_handler, 100&#41;;
    
    &#125;
    
    
    fclose&#40;$file_handler&#41;; 
    exit; 
    
    ?>
    Осталось добавить считалку. К стати теперь можнос читать, какой объем выкачал пользователь.
    Простенький, но для начала может хватить.

  5. Вверх #5
    Постоялец форума Аватар для Lord of rings
    Пол
    Мужской
    Адрес
    Одесса, типа украина...
    Сообщений
    2,509
    Репутация
    148
    Я бы делал счетчик с учетом хостов, сливал бы всю информацию в MYSQL. Тогда была бы полная статистика
    Per rectum ad astrum!

  6. Вверх #6
    Посетитель Аватар для Tyler Durden
    Пол
    Мужской
    Адрес
    От-т-туда
    Возраст
    34
    Сообщений
    267
    Репутация
    15
    Спасибо... Правда сейчас еще не имею возможности проверить в полном объеме (чет на работе доступ тормозит ) Вариант с meta-тэгом не пашет, менеджеры качают его как html (именно ту страницу де прописан meta). MySQL для хомпаги ?! Я ж не microsoft с их гигантоманией.
    Let the chips fall where they may

  7. Вверх #7
    Делаешь линк на файл в пустую папку. Там помещаешь файл .htacсess, в котором на 404 ошибку прописываешь переадресацию на пхп скрипт. В скрипте выдашь нужный файл и инкрементируешь счетчик.

  8. Вверх #8
    Не покидает форум Аватар для iFog
    Пол
    Мужской
    Адрес
    Одесса
    Возраст
    36
    Сообщений
    5,809
    Репутация
    396
    Лучше mod_rewrite, или forceType, иначе лог загадится =)
    Вы хотите поставить нас в тупик своими вопросами?
    Так мы поставим Вас в тупик своими ответами!


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения