Вопрос

Моё приложение PHP использует 404 Документа для генерации HTML-файлов, поэтому несколько запросов к одному и тому же HTML-файлу вызывают генерацию только один раз.

Я бы хотел перехватывать запросы к файлам HTML, чтобы у пользователя был установлен установленный PHP-сеанс, чтобы получить файлы.

В лучшем случае идентификатор SESSION будет использоваться в URL-адресе, и его можно будет использовать в качестве дополнительной аутентификации. Например, вход в систему выдаст вам SessionID и сделает доступными только определенные HTML-файлы.

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

Как бы я поступил так?

Это было полезно?

Решение

Нечто подобное может работать (я не проверял):

RewriteCond %{HTTP_COOKIE} PHPSESSID=([a-zA-Z0-9]+)
RewriteCond %{REQUEST_FILENAME} %{REQUEST_FILENAME}-%1.html
RewriteRule ^ %{REQUEST_FILENAME}-%1.html

Предполагается, что вы добавляете " - $ session_id.html " к именам файлов ( $ session_id - это идентификатор сеанса PHP).

Это должно быть безопасно, и выгода в том, что файлы обслуживаются веб-сервером напрямую, вообще не вызывая PHP.

Другие советы

SetEnvIf HTTP_COOKIE "PHPSESSID" let_me_in
<Directory /www/static/htmls>
  Order Deny,Allow
  Deny from all
  Allow from env=let_me_in
</Directory>  

Конечно, пользователь может вручную создать такой файл cookie в своем браузере (существуют расширения, которые делают это для Firefox, и вы всегда можете отредактировать хранилище файлов cookie своего браузера).

Вы можете использовать модуль Apache mod_rewrite для перенаправления запросов .html URL-адреса скрипта PHP:

RewriteEngine on
RewriteRule \.html$ script.php [L]

Запрошенный путь и запрос URI будут доступны в переменной $ _ SERVER ['REQUEST_URI'] .

Поместите кэшированные файлы в корневой каталог, но в таком месте, где PHP может получить к ним доступ.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top