Intereting Posts
Вставка столбца индекса jquery tablesorter Как получить доступ к переменной memer a с символом как передать пользовательские поля в $ _POST или $ _GET в окне CKEdtior Upload? Карта инициализирует и увеличивает в одном выражении Установить минимальное сообщение об ошибках PHP в Monolog ErrorHandler Резервное копирование базы данных mysql с живого сервера на мой локальный MySQL Regex не работает, когда шаблон включает знак доллара ($) Как получить доступ к N-му элементу массива в PHP PHP SQL: как сохранить данные в несколько баз данных из одной формы html или как автоматически копировать данные из одной базы данных в другую базу данных CakePHP 3.0 не работает без расширения intl Требуется PHP Mailer Form с скриптом File Attachment для отправки информации о форме с или без вложения Глобальная переменная в laravel 4 Как получить имя контроллера, имя действия в Zend Framework 2 Исключить исключение «Google_Auth_Exception» с сообщением «Недопустимый код» PHP – функция раскрывающегося списка, которая удерживает текущую страницу в фокусе

php ограничивает доступ к файлам в каталоге

Я пытаюсь ограничить прямой доступ к файлам в каталоге. Так, например, у меня есть website.com/files/example.flv.

Поэтому, если пользователи идут прямо в файл в URL-адресе, я хочу, чтобы они были перенаправлены на главную страницу.

Я пробовал использовать htaccess

deny from all 

но он не работает отлично. Есть ли способ, которым я мог бы это сделать, используя php, тогда пользователь переходит прямо к файлу в URL-адресе, он будет перенаправлен.

Поэтому, если пользователь переходит к ссылке на файл в URL-адресе, он будет отправлен на главную страницу. Так что это можно сделать только с помощью htaccess

Если вы хотите ограничить доступ к файлам, вам следует рассмотреть возможность их хранения за пределами общедоступного DocumentRoot и с помощью PHP для доставки файла, используя вашу собственную логику доступа. Это означает, что вы не находитесь в папке www или public_html, в зависимости от среды хостинга, с которой вы работаете.

 <?php // Suppose your "public_html" folder is . $file = './../data/test.gif'; $userCanDownloadThisFile = false; // apply your logic here if (file_exists($file) && $userCanDownloadThisFile) { header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=filename.gif'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($file)); ob_clean(); flush(); readfile($file); } 

Да. Вам нужно будет поместить файлы в каталог, который недоступен через Интернет. Затем вам придется создать файл .htaccess в вашей папке public_html / files /, что указывает на ваш php-скрипт.

Что-то вроде этого (примечание: код не проверен):

Состав:

  • корень /
    • realfiles /
    • public_html /
      • файлы /
        • .htaccess
      • filehandler.php

.htaccess:

 RewriteEngine on RewriteRule ^/files/(.+)$ filehandler.php?stuff=$1 [QSA] 

filehandler.php:

 header('Location: /'); 

Конечно, вы хотите, чтобы файлы были доступны, когда вы хотите, чтобы они обращались к ним. Это можно сделать в файлеhandhand.php, проверив, разрешено ли пользователю просматривать файл, а затем возвращать что-то вроде:

 header('Content-type: application/octet-stream'); header('Content-Disposition: inline; filename="'.basename(urlencode($file['name'])).'"'); readfile($dir.basename($file['filename'])); exit;