Как такое реализовать на php

Тема в разделе "PHP", создана пользователем mikki009, 7 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. mikki009

    mikki009 Создатель

    Регистр.:
    3 окт 2008
    Сообщения:
    34
    Симпатии:
    4
    Наткнулся на одном сайте вывод файлов . Т.е название файла, кол-во скачиваний, ссылка на стр. и рейтинг. Возможно ли такое реализовать на php и есть ли уже готовые решения для этого. Спасибо.
     
  2. marader

    marader Создатель

    Регистр.:
    28 окт 2008
    Сообщения:
    25
    Симпатии:
    7
    вы можете взять любую готовую cms например joomla или drupal под них нписанно очень много разных файловых архивов
     
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Или просто взять скрипт любого файлового архива, без всяких CMS.
     
  4. jID

    jID Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    106
    Симпатии:
    31
    Самое простое, что в голову лезет - вместо ссылки на файл делай ссылку на скрипт подсчёта, который увеличивает счётчик:
    Код:
    <a href="download.php?file=1.zip">файл</a>
    ну и сам download.php:
    PHP:
    <?php
    $file
    =$_GET['file'];
    /*
    ...
    код увеличения счётчика скачиваний файла на 1;
    например на SQL:
    UPDATE files SET downloads=downloads+1 WHERE file='$file'");
    ...
    */
    header("Location: $file");
    ?>
    В коде нет никакой защиты от SQL инъектов и подстановки путей. Привожу лишь для примера понятия принципа.
     
  5. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    Готовое решение с подобным подходом - "Fast Click" http://www.ftrain.h1.ru/

    но , есть у него (как и у других с тем же подходом) пара минусов -
    1. Раскрывается путь к файлу. Его можно будет скачать в обход счетчика и ограничений (если они есть).
    2. Если файл недоступен / юзер не стал докачивать, счетчик всеравно плюсанется.

    Это можно обойти если файл выдавать самим скриптом, а инкремент делать после выдачи всего файла.
     
  6. afonya09

    afonya09

    Регистр.:
    31 янв 2009
    Сообщения:
    260
    Симпатии:
    18
    Как определить что файл полность скачен??
     
  7. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    если выдаешь файл скриптом то так
    PHP:
    <?
    function 
    get_extension($file) {
        return 
    strtolower(substr(strrchr($file"."), 1));
    }

    function 
    get_file_name($file) {
        return 
    strtolower(substr(strrchr($file"/"), 1));
    }

    $file "z:/home/localhost/www/test.zip";

    if(!
    file_exists($file))    
            {
            
    header("HTTP/1.0 404 Not found");
            die(
    "<html><body><h1>404 Файл не найден!</h1>запрошенный файл не найден.</body></html>\n");
            }

    $ext get_extension($file);
    switch(
    $ext)
        {
        case 
    "zip":
            
    $type "application/zip";
            break;
        default:
            
    $type "image/unknown";
            break;
        }
    header("Content-transfer-encoding: binary");
    header("Content-disposition: inline; filename=\"".get_file_name($file)."\"");
    header("Content-type: ".$type);
    header("Content-length: ".filesize($file));
        
    $handle=fopen($file,"r");
    if (
    $handle
        while (!
    feof($handle)) {
            
    $buffer fgets($handle4096);
            echo 
    $buffer;
            }
    fclose($handle);     
    // тут передача файла завершена, можно делать инкермент
    ?>

    но у этого метода есть свои недостатки
    1. грузится проц, т.к. вся выдача идет через php
    2. нет докачки файла
    т.е. данный метод непременим для больших фалов.
     
  8. Travolta_2009

    Travolta_2009 Читатель

    Заблокирован
    Регистр.:
    4 апр 2009
    Сообщения:
    5
    Симпатии:
    0
    помнится есть бесплатный скрипт от ManHunter - под файловый обменник. ТАм примерно такой же вывод файлов настраивается
     
  9. aravak

    aravak Создатель

    Регистр.:
    2 апр 2009
    Сообщения:
    17
    Симпатии:
    1
    елси сайт не стоит на какой-лиюо CMS то проще написать самому, быстрее по крайней мере точно
     
  10. Виллен

    Виллен

    Регистр.:
    12 мар 2009
    Сообщения:
    235
    Симпатии:
    60
    Ну не быстрее и не проще.
    С нуля код писать всегда сложнее.
    Надо взять за основу какой нибудь пример, да хоть бы тот скрипт "Fast Click"
    И потом наращивать функционал: добавление баз данных или выдача файлов с докачкой.
    Последнее элементарно гуглится по запросу "php скачивание с докачкой", первая ссылка - оно
     
Статус темы:
Закрыта.