ユーザーが PHP ファイルではないページ/ファイルにアクセスしたときに PHP スクリプトを実行するにはどうすればよいですか?
たとえば、.css ファイルにアクセスした場合、アクセスする前に php コードを実行できるようにするにはどうすればよいでしょうか?
ユーザーが PHP ファイルではないページ/ファイルにアクセスしたときに PHP スクリプトを実行するにはどうすればよいですか?
たとえば、.css ファイルにアクセスした場合、アクセスする前に php コードを実行できるようにするにはどうすればよいでしょうか?
これはより単純なアプローチですが、PHP に CSS を出力させ、CSS ファイルを PHP ファイルとして解析するようにサーバーを構成することができます。
したがって、Apache を使用している場合は、次のようにします。
AddType application/x-httpd-php .css
次に、CSS ファイルで次のようにします。
<?php
// Code to execute because user is accessing CSS file
// Output CSS below here
header("Content-type: text/css");
?>
body {
}
<?xml?>
非 php ファイルにハンドラーを追加する代わりに、apache がそれらを php として解析しようとし、エラー (宣言を含むXML ファイルなど) を見つける可能性があることを意味します。次のようにすることができます。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L] # if URI is not index
RewriteCond %{REQUEST_FILENAME} !-f # and URI is not file on disk
RewriteCond %{REQUEST_FILENAME} !-d # and URI is not directory on disk
RewriteRule . /index.php [L] # redirect to index
</IfModule>
通常、存在しない URI のすべてのトラフィックをメイン アプリケーションのブートストラップにリダイレクトしますindex.php
。
そして、特定の (セットの) ファイルのみが存在する場合でもリダイレクトされるようにルールを追加して、上記を調整します。リダイレクト後、$_SERVER['REQUEST_URI'] を確認し、リクエストが最初にどこから来たのかを調べます。それが css ファイルである場合は、ファイルを fopen し、それを読んで処理し、処理されたコンテンツをユーザーにエコーします。
このアプローチは、ファイルがダウンロードされるのを防ぎます。