2010-08-26 4 views
2

Я работаю над проектом, в котором пользователь сможет покупать медиафайлы. после обработки платежа, я хотел бы разрешить им загрузить файл. Я думаю, можно с уверенностью сказать, что у меня должна быть временная ссылка на файлы. который связан с IP-адресом пользователя и, возможно, временной меткой? проблема в том, что я не знаю, с чего начать. Прежде всего. это способ сделать это? если это так .. как я могу продолжить использовать php. (я думаю, мне не нужен точный скрипт, который просто подсказывает, как это сделать, хотя, если есть существующий скрипт, я бы не возражал) спасибо.скачать файл с временной ссылкой, используя php

ответ

6

Так как вы собираетесь обрабатывать файл в PHP вы можете как хорошо использовать логин, чтобы проверить, если пользователь приобрел файл, кроме того, что код должен выглядеть немного как это:

header('Content-Type: application/force-download'); 

$file = new File(intval($_GET['id'])); 
$fileLocation = dirname(__FILE__) . "/../../upload/fileArchive/" . $file->id . "." . $file->type; 

header('Content-Length:' . filesize($fileLocation)); 
header("Content-Disposition: inline; filename=\"".$file->name."\""); 

$filePointer = fopen($fileLocation,"rb"); 
fpassthru($filePointer); 

Снято с производства и проверено

2

Я бы не привязал временную ссылку к IP, это не очень удобное решение.

магазин купленные СМИ в таблице, например:

  • Идентификатор носителя (Имеется в виду другую таблицу, в которой детали СМИ описанный)
  • Уникальный маркер (Это identificate покупку)
  • Идентификатор клиента
  • Всего загрузок (Может быть, вы хотите, чтобы разрешить загрузку 5 раз)
  • токен истечение (Если вы хотите, чтобы ограничить доступ на это)

URL-адрес загрузки должен содержать уникальный токен и некоторые другие данные (хэширование электронной почты пользователя и т. Д.), Чтобы сделать URL более уникальным и более безопасным.

Пример URL:http://example.com/purchase/nc9o32ocrn8of4nv348/989934ov9344b

Первый хэш держит саму покупку, а второй один идентифицирует пользователя. При успешной идентификации вы можете использовать файл Kristoffer said.

+0

как насчет самой страницы загрузки. Я не уверен, как настроить его, чтобы файлы были скрыты. не могли бы вы подробнее рассказать об этой части? спасибо – salmane

0
header('Content-Type: application/force-download'); 
$filee = "r.txt"; 
$fileLocation = dirname(__file__).'/the_sub_folder_for_file/'.$filee; 
header('Content-Length:' . filesize($fileLocation)); 
header("Content-Disposition: inline; filename=\"".$filee."\""); 
$filePointer = fopen($fileLocation,"rb"); 
fpassthru($filePointer); 
Смежные вопросы