За последние 24 часа нас посетили 56945 программистов и 1795 роботов. Сейчас ищут 949 программистов ...

временные ссылки

Тема в разделе "PHP для новичков", создана пользователем Шаман, 27 окт 2009.

  1. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    Здравствуйте
    Мне нужно вот какую штучку сделать.
    Сайт типа интернет магазина с предоплатной системой расчета. То есть пользователь пополняет свой баланс через wm , после чего данные о его балансе хранятся в мускуле. Это я все могу сделать, просто описываю общую картину.
    Товар в магазине не материальный а просто напросто суть в том, что человек этим балансом должен оплатить скачку файла. Так вот, как сделать так чтобы, файл не был доступен по прямой ссылке на него(хотя его можно и замаскировать заковыристым именем), но при этом, при обращении к файлу должен произойти sql запрос на вычет баланса в зависимости от цены файла, скачка самого файла, и последующая недоступность халявной скачки файла, то есть я так понимаю нужна фишка в временной ссылкой. Выходит запрос и штука с временной ссылкой должна быть в одном скрипте... запрос - это и ежику понятно а вот как зделать временную ссылку и объединить ее с запросом , тут я и в ступоре... с тем и обращаюсь
     
  2. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    файл можешь положить за пределы документ рута и отдавать пхп скриптом ...
    соответственно при оплате формируется ссылка , и при попытке скачать скрипт определяет что ссылка на такой файл и отдает его по кусочку...


    но у тебя есть проблема - как понять что фаил скачан полностью ? а вдруг обрыв ? а если файл качался в несколько потоков ?
     
  3. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    а скажем давать персональную ссылку, которая будет активна втечение суток и только для этого ip, ну или что вроде того. вобщем принцип файлообменников. если это вариант - просвятите пожалуйста как это оформить
     
  4. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    зачем IP ? при неудачном скачивании высока вероятность что человек реконектится ... и в домовых сетях это приводит к смене IP ... в принципе при контролируемой отдачи ты знаешь того кто скачивает (он же залогинился), то есть временная ссылка действительна для данного пользователя в течении суток (вполне тривиальная задача).

    пример:
    1. поместить фаил в корзину
    2. при оплате - снять денег и сгенерировать какой-нибудь хэш и выложить хешь в таблицу (айди пользователя;дата генерации;путь до файла;хеш)
    3. при запросе хеша (проверяем его наличие, доступность файла, время действия хеша), и если все ок зачитываем фаил и скармливаем его браузеру

    вроде все ...
     
  5. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    ок, спасибо, в принципе все ясно, но вот скармливать его как после запросов и т.д. хедером что ли? или как? после хедера в истории ведь останется путь к файлу...
     
  6. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    блин - как скармливать ? принт - и все (естественно сначала правильно указав в хедере тип контента и имя файла - да да там это можно), какой путь ? если ты его отдаешь ручками причем тут путь .. в истории максимально что останется это хеш файла ...


    п.с.: вот вопрос - может тебе пока отложить задачу ? при таких вопросах следующую проблему ты не решишь ... причем объяснить не смогу (слишком большая пропасть в понимании технологии) ....
     
  7. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    ну все равно спасибо. а что хоть за проблема? :) ты намекни, я гранит то погрызу
     
  8. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
     
  9. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    - а суточная ссылка не решение этой проьлемы?
    - если я правильно понял вопрос, то это же не проблема, если ссылка предоставляется одному залогиненному юзеру
     
  10. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    - хз зависит от многих параметров (когда решал подобную задачу - то уже на тестировании отмели решение - "суточные ссылки")
    и что ? а он воспользовался регетеом и выкачал все в несколько потоков (хотя это можно запретить ... ) - в общем обратил внимание, что данные вопросы не рассмотрены, и в последствии можно классно в этом увязнуть ....
     
  11. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    спасибо за помощь
     
  12. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    кормешка файла производится так?
    PHP:
    1. <?
    2. header('Content-type: application/x-download');
    3. header('Content-Disposition: attachment; filename=body.jpg;');
    4. readfile('img/template/body.jpg');
    5. ?>
    работает оно правильно, но может в чем то ошибаюсь
     
  13. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Без докачки примерно так.

    С докачкой, надо разбирать заголовки и отдавать файл кусочками.
     
  14. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    прекрасно... мне докачка в принципе не нужна, файлы небольшие сливать нужно
     
  15. nimistar

    nimistar Активный пользователь

    С нами с:
    30 май 2007
    Сообщения:
    919
    Симпатии:
    0
    ...filename=body.jpg;.... > ....filename="body.jpg";...

    а то можно заморочится при руских названиях для ИЕ
     
  16. Шаман

    Шаман Активный пользователь

    С нами с:
    13 июн 2009
    Сообщения:
    67
    Симпатии:
    0
    Адрес:
    СПб
    ага, усёк