0

ユーザーがログインしていない場合、javascript ページ (.js) の表示をブロックしようとしています。index.php ページから 404 または 403 ヘッダーを書きたいのですが、どうすればよいですか?
注:chmodはファイルのアクセス許可をグローバルに変更し、訪問者に対してではなく変更するため、chmodを使用したくありません

header("HTTP/1.0 404 Not Found", "js.js"); 

js.js は false パラメーターです。私がそれをどのように望んでいるか、または何かが同様のことを行うサンプルにすぎません。

4

5 に答える 5

2

これには別のスクリプトが必要になります。そのような

file.php

$file = $_GET['file'];
//whitelist files
$filelist = array('js.js');
if(in_array($file, $filelist))
{
    header('Cache Control: No-store');
    header('Content-Disposition:inline;filename="' . $file . '"');
    include "../files/$file";

}

それを使用するには

<script src="files.php?file=js.js"></script>

Webにアクセスできない場所にファイルを置きます

于 2012-06-30T00:33:09.997 に答える
0

人々はこれを行う方法を提案しています。ここに 1 つの実用的な解決策があります。

前述のように、セッション チェックを行い、必要なエラー処理ソリューションに header() 呼び出しでリダイレクトするスクリプトを作成します。

スクリプトを js.js.php と呼ぶことはお勧めしません。一般に、apache に固有の問題があるため、somename.somename.ext を持つファイルを許可したくありません。

代わりに、スクリプトに js.js という名前を付けます。ただし、js.js のソースは、セッション チェックを行う php コードである必要があり、OK の場合は、適切な MIME タイプ ヘッダーを含む JavaScript ソースを返します。

次に、ディレクトリの htaccess で、カスタム Files ルールを追加できます。

<Files js.js>
SetHandler application/x-httpd-php
</Files>

Apache は js.js を php ファイルとして扱いますが、この機能は他の方法では見えません。

于 2012-06-30T00:29:32.113 に答える
0

別の php スクリプトを使用して *.js を配布する以外に、安全な方法はありません。このスクリプトでは、ユーザーの Cookie/セッション データを確認してから、保護する js を readfile() します。

これは本当にハックな方法です...なぜそれが必要なのですか?

于 2012-06-30T00:18:12.007 に答える
0

これは質問への回答にはなりませんが、ユーザーが必要な権限を持っていない場合に JS スクリプトを要求しないようにするだけで済みます。あなたがやろうとしていることは、付加価値のないやり過ぎです。

<?php if ($isUserLoggedIn): ?>
    <script src="js.js" type="text/javascript"></script>
<?php endif; ?>
于 2012-06-30T12:29:40.730 に答える
-1

独自の 404 ページを作成し、必要なファイルの一部で include 関数を使用することができます。

于 2012-06-30T00:17:04.393 に答える