Pergunta

Meu PHP aplicativo usa 404 documentos para gerar arquivos HTML para que várias consultas para o mesmo arquivo HTML única causa a geração para executar uma vez.

Eu gostaria de pedidos de interceptação para os arquivos HTML para que o usuário precisa ter uma sessão PHP estabelecida, a fim de puxar para cima os arquivos.

No melhor dos casos, SESSÃO ID seria usado na URL e forçá-lo poderia ser usado como uma autenticação adicional. Por exemplo, o registo em que emitir um SessionID e fazer arquivos acessível a só certa HTML.

Estou ciente de que mudando meus cookies eu poderia falsificar um pedido, mas isso é bom.

Como eu iria fazer isso?

Foi útil?

Solução

Algo como isso poderia funcionar (eu não testei):

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

Ele assume que você anexar "-$session_id.html" a nomes de arquivos ($session_id é do PHP ID da sessão).

Deve ser seguro, eo benefício é que os arquivos são servidos pelo servidor web diretamente sem invocar PHP em tudo.

Outras dicas

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

Claro usuário pode criar manualmente tais cookies em seu navegador (existem extensões que fazer isso para o Firefox, e você sempre pode editar armazenamento de cookies do seu navegador).

Você pode usar o Apache módulo mod_rewrite para redirecionar as solicitações de URLs .html a um script PHP:

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

O caminho URI solicitado e consulta estará disponível na variável $_SERVER['REQUEST_URI'].

Coloque você em cache arquivos fora de sua raiz web, mas ainda em um lugar onde PHP pode acessá-los.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top