インクルード用の PHP ファイルを直接実行できないように、下記のようなスクリプトを

書いています。他にいい方法はあるでしょうか? include する側で何か定数を決めていて
それがないとはねる方式があるのですが、それだと、他のスクリプト依存になります。できるだけ
単独でも機能するのがいいと思って次のようなコードを書いています。
if (basename($_SERVER['PHP_SELF']) == 'hogehoge.php') {
exit();
}

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/04/07 11:59:29
  • 終了:2008/04/14 12:00:03

回答(3件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332008/04/07 12:58:09

ポイント27pt

質問者さんのコードを少しだけアレンジしてみました。

if (basename($_SERVER['SCRIPT_NAME']) == basename(__FILE__)) {
	exit();
}

参考サイト

id:isogaya

これが正解っぽいですね。

2008/04/07 13:59:22
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402008/04/07 13:02:31

ポイント27pt

単純に、include される側は「関数の定義」だけして、include する側はその関数を呼び出すようにすればよいのでは?

PHP: include - Manual

id:isogaya

何かを実行する場合もあるかもしれません。

2008/04/07 13:59:48
id:pahoo No.3

pahoo回答回数5960ベストアンサー獲得回数6332008/04/07 14:22:31

ポイント26pt

Apacheを使っているという前提ですが、.htaccessでアクセス拒否するという方法もあります。

includeされるファイルを単独実行することがないのであれば、拡張子を ".inc" などに変更し、incファイルがあるディレクトリに下記のような .htaccess を配置し、リモートからのアクセス拒否を設定します。

<Files ~ "\.inc$">
	deny from all
</Files>

参考サイト

id:isogaya

ファイル以外では対応できない状況を考えているので、.htaccess よりはまずファイルで考えています。

本来ならば、DocumentRoot の外に出してしまえばいいのですし、また、クラスや関数のみであれば問題ないともいえます。

2008/04/07 14:50:20
  • id:isogaya
    自分でした質問ですが、ときどき見ています。キーワード付与するとしたら PHP便利 でしょうか?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません