プロが教える店舗&オフィスのセキュリティ対策術

PHPに関しては先週から勉強し始めている初心者です。

先日、簡単なパンくずリストを自動生成するスクリプトを作ろうと思いました。その際このスクリプトは外部ファイルにして、includeしようと思ったのですが、 $_SERVER['SCRIPT_NAME']; で現在実行しているスクリプトのファイル名を取得する場合は、includeをしたスクリプトのファイル名ではなく、パンくずリスト自身のファイル名を取得されてしまいます。

なので、スクリプト内の $name=$_SERVER['SCRIPT_NAME']; という部分だけを取り出して、ページ内に直接記述し、includeする際に、 include"http://exampleeee.com/pankuzu.php?name=$name"; として動作させています。

しかし、個人サイトとはいえ、非常に規模の大きいサイトになる予定なので、後での管理などが大変になるかもしれません。できれば $_SERVER['SCRIPT_NAME']; の部分も外部ファイルに入れておきたいのですが、何か良い方法があればアドバイスをお願いします。

あと、最後にもうひとつ質問があります。
include"http://exampleeee.com/pankuzu.php?name=$name";
のように変数を渡す場合、配列を渡すことはできないのでしょうか?

以上が私の質問です。文章中に誤った表現や、誤解などがあればご指摘願います。
よろしくお願いします。

A 回答 (3件)

同ドメイン下でhttpで取り込むのはイマイチに思います。


例えば、init.php で汎用クラス等を読み込むようにしておく。
-- init.php
include 'pankuzu.php';

-- pankuzu.php
function get_pankuzu() {
 return 'TOP > 商品紹介';
}

-- page01.php
<?php include '/path/to/init.php' ?>
<?php echo get_pathkuzu() ?>

ややトリッキーですが、自動で init.php を読み込む設定もあります。
-- .htaccess
php_value auto_prepend_file "/path/to/init.php"
こうすれば echo get_pathkuzu() の記述だけで実装できます。

include 関数についてはマニュアルに詳しく載っていました。

参考URL:http://jp2.php.net/include/
    • good
    • 0
この回答へのお礼

とても参考になりました。
関数に関することも少し理解していない面があったのですが、今回頂いた回答でいろいろと問題が解けました。ありがとうございました!

さっそく試してみたいと思います。

お礼日時:2009/01/05 15:17

あぁ、そうですね。

http:// で取得しているからですね。
HTTPで取得しなければならない必要性があってですか?
ないなら include 'pankuzu.php'; でいいと思いますが。

複数サーバでドメイン越えしたいならまた補足をお願いします。
    • good
    • 0
この回答へのお礼

http://で取得しているとそうなるのですね……ありがとうございます。

既にあるhtmlファイルに、このパンくずリストを自動生成するスクリプトを埋め込もうと考えているのですが、このincludeするファイルがサイトルートにあります。

http://で取得している理由は、既に数百ページあるため、相対パスで全てのページに埋め込むことはできないからです。(http://で取得する理由は、すべてのページに同じように適用すれば済むからです。)

相対パスでincludeする方法は、普通に手作業で埋め込んでいくしかないのでしょうか?他に方法があれば教えていただきたいのです……。

よろしくお願い致します。

お礼日時:2009/01/05 09:28

REQUEST_URIとかPATH_INFOを使えばいいのでは?



$name = array();
include 'hoge.php';
で $name は使えると思いますが、スマートなやり方とは思えません。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

REQUEST_URIを使うとして、外部ファイルにREQUEST_URIを入れると、結局外部ファイル自身のパスを取得してしまいます。

私のやり方がおかしいのでしょうか……。

お礼日時:2008/12/31 01:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!