2013-03-10 1 views
1

Я хотел бы запустить PHP-код при доступе к файлу на веб-сервере (например, /../../somefile.pdf).Веб-сервер - Как выполнить скрипт PHP при доступе к файлу?

Мне нужно отобразить отказ от ответственности, когда пользователь впервые обращается к веб-сайту. Я сделал это возможным выполнение PHP-скрипта каждый раз, когда веб-страница доступна, но я не знаю, как запустить скрипт, когда к файлу будет обращен доступ к веб-странице. Возможно ли это?

Спасибо!

+0

Является ли это для эволюции или революции? – okyanet

+0

Для MODx 0.9.6. – Mihai238

ответ

2

Если вы хотите отслеживать загрузки, есть два способа:

  1. Изменения URL загрузки идти через PHP файл т.е. вместо <a href="/../../somefile.pdf">..</a> попробовать <a href="/download.php?file=/../../somefile.pdf">..</a>
  2. Используйте рерайт в .htaccess (Apache Rewrite моды) для перенаправления загрузки URL в РНР файл первой, например: RewriteRule ^download_directory/(.*)$ /download.php?file=$1 [L,QSA]

в файле, download.php у вас есть два варианта снова:

  1. Прочитайте файл с помощью Пути в параметре file и используйте PHP для эхо-вывода. (Этот метод небезопасен, так как пользователь может изменить путь в параметре file и получить файл, к которому он не должен обращаться.)
  2. Поскольку ваши файлы находятся в веб-корте (т.е. они могут быть доступны напрямую), лучше всего перенаправлять пользователя на реальный файл один раз код отслеживания завершает выполнение с помощью header('Location: ' . $_GET['file']);
+0

Если я использую переписать в .htaaccess, я получаю бесконечный цикл? 'header ('Location:'. $ _GET ['file'])' перенаправит меня на тот же URL-адрес, который был переписан. Или я что-то не понимаю. – Mihai238

+0

Да, это возможно. Попробуйте добавить специальный параметр, когда вы перенаправляете из PHP в файл, который не вызывает перезапись. – Birla

1

Может быть немного поздно для оригинального автора, но это то, что MODX Static Resources идеально подходят для.

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

Подробнее: