Intereting Posts
Im только получение одного набора результатов при попытке использовать mysql_fetch_array () pecl_http не удалось загрузить Разделить массив на основе данных массива PHP. Рекурсивно перечислять все каталоги и подкаталоги в выпадающем меню Woocommerce – php для получения информации о заказе Не удается получить доступ к сохраненному идентификатору связанного объекта напрямую, не получая целую сущность Не удается получить доступ к защищенному свойству -laravel 4 Пожалуйста, я хочу получить значение месяца и года из этого кода javascript как переменная PHP $ mm =? && $ yy =? Symfony2, Dynamic DB Connection / Раннее переопределение службы Doctrine Service Внедрить процесс оплаты с помощью Quickbook (Intuit Payment) Переназначение URL-адреса IIS + PHP Как отправить переменную javascript на PHP-сервер как $ _FILE .htaccess в подкаталоге 'overriding' parent htaccess Смущает проблема PHP-сессии (Rackspace) MySQL GROUP_CONCAT: форматирование вывода

Контроль доступа к файловой системе с помощью PHP

Я ранее размещал здесь:

Контроль доступа для пробной подписки

Поскольку это новый вопрос, основанный на предложениях, я думал, что должен начать новую должность. Если это должно было быть редактирование, пожалуйста, дайте мне знать в будущем.

Я думаю, что решение, с которым я собираюсь контролировать доступ, – загрузить файл и хеш-имя. Файл будет в формате:

/uploads/#############.pdf

Ссылка будет отправлена ​​подписчикам. В первый раз, когда они приходят на сайт, им будет предложено создать «булавку» и «подсказку», чтобы помнить. Затем можно получить доступ к целевой странице, чтобы перечислить их элементы через адрес электронной почты / контактный комбо.

Мой вопрос: я знаю, что могу контролировать доступ к странице, которая показывает, какие элементы они могут просматривать, но есть ли способ контролировать / uploads / [файл] только для загрузки после какой-либо программной проверки? Я не могу придумать, как это сделать …

Еще раз спасибо. D.

Solutions Collecting From Web of "Контроль доступа к файловой системе с помощью PHP"

Ваши pdf-файлы не обязательно должны находиться в каталоге, который можно просмотреть. Они могут быть вне вашего веб-корня. Таким образом, никто не может реально перейти на сайт www.yoursite.ext/uploads/2395wrfhgt.pdf чтобы загрузить его самостоятельно или поделиться ссылкой с другими.

Чтобы загрузить pdf-файл, вы получите специальный скрипт, который будет выполнять все проверки доступа к пользователю, запрашивающему его, и если все в порядке, он установит соответствующие заголовки, прочитает файл из файловой системы и распечатает его до Пользователь.

Итак, скажем, ваш сайт находится в /var/www/site/htdocs/ и вы загружаете каждый PDF в /var/www/site/uploads/ . Вам даже не нужно хэшировать имена файлов, но вместо этого можно сохранить их красиво названными для упрощения организации.

Затем все ссылки для загрузки файла будут сделаны, чтобы указать на www.yoursite.ext/download.php?id={fileid}

Ваш файл download.php выполнит все проверки доступа (правильно зарегистрировался, имеет разрешения на загрузку файла и т. Д.), А затем выполните следующие действия:

 $pathToPdf = '/var/www/site/uploads/some.pdf' ; header('Content-Type: application/pdf'); header('Content-Length: ' . filesize($pathToPdf)); header('Content-Disposition: attachment; filename=' . 'some.pdf'); readfile($pathToPdf) ; 

И это в значительной степени. Как только вы получите эту работу, вы сможете изучить несколько вещей:

  • используйте mod_rewrite или аналогичный, чтобы иметь фактическое имя файла pdf в ссылке, что помогает некоторым браузерам понять, что они должны скачать его: http://www.yoursite.ext / download / {fileid} .pdf
  • рассмотрите возможность использования веб-сервера вместо php для обслуживания файлов, например, заголовок X-Sendfile