3

XHTMLを別のファイルに入れ、include()PHPスクリプト内でPHPの関数を使用することにより、一部のXHTMLをPHPから分離しています。

これは完全に正常に機能しますが、ユーザーは.htmlアドレスを知っていればファイルに直接アクセスできます。彼らはそれで本当に多くをすることができません、しかし私はむしろそれを見せたくありません。

過去にいくつかのスクリプトが何らかの形式のリファラーチェックを使用しているのを見たことがありますが、これは、直接アクセスして表示されないようにするための基本的な( 「基本」と言ったことに注意してください)制限を追加するために行うことですか?

ありがとう!

明確化:PHP内でこれを実行したいので、Webサーバーの構成(document-rootからのファイルの移動、アクセスを許可しないようにWebサーバーの構成など)を行わないことを忘れました。ここで最も論理的な選択は、define()定数チェックを使用することだと思います。これは、投稿で概説したように、実際には忘れていた他のスクリプトで見たものです。これはおそらく最善の解決策ではないことは理解していますが、アクセスできるhtmlファイルに特別な価値がないことを考えると、define()定数で十分です。

4

6 に答える 6

3

ドキュメントルートの外に移動するだけです。ただし、PHP がセーフ モードの場合、これは機能しません。

于 2010-01-15T03:33:15.517 に答える
3

Web サーバーの構成を変更して、そのファイルへのアクセスを禁止しますか?

于 2010-01-15T03:34:21.600 に答える
3

いいえ、次のようにしてください。

index.php:

<?php

define('ALLOW_INCLUDE', true);

include('other.php');

?>

other.php:

<?php

if (defined('ALLOW_INCLUDE') === false) die('no direct access!');

// your code

?>
于 2010-01-15T03:35:00.900 に答える
3

現在すべてのファイル (index.php など) を に配置している/something/public_html/場合は、ファイルを/something/. そうすれば、ユーザーはファイルにアクセスできなくなります。

これ/public_html/はドキュメント ルートと呼ばれます。そのフォルダは にマップされexample.com、基本的に Web サイトはそこから始まります。ファイルを Web サイトの開始位置より上に移動すると、誰もブラウザー経由でそれらのファイルにアクセスできなくなります。

イグナシオが言ったように、includeセーフモードがオンになっていると、これは機能しません。

他の方法は、ファイルの先頭に何かを配置することです

if(!defined("RUNNING_SCRIPT"))
    die("No Direct Access Allowed");

次に、PHPファイルに入れます

 define("RUNNING_SCRIPT", true);

が定義されていない場合RUNNING_SCRIPTは、直接アクセスしていることを意味し、ページの読み込みが停止します。これは、PHP が.htmlファイルで実行されている場合にのみ機能します。

.htaccessファイルを使用して、そのフォルダーへのアクセスを禁止することもできます。

于 2010-01-15T03:35:16.637 に答える
1

これを最初の行として配置することをお勧めします。

フォールバックとして .htaccess を使用するか、index.html ページをドロップすることもできます。

<?php defined('SOME_CONSTANT_GLOBAL_TO_YOUR_APP') or die('Access denied.'); ?>
于 2010-01-15T03:43:10.447 に答える
0

Apacheのアクセス制御かもしれませんか? http://httpd.apache.org/docs/2.2/howto/access.html

于 2010-01-15T03:48:53.307 に答える