$_SERVER['SCRIPT_NAME']についての質問

このQ&Aのポイント
  • PHP初心者の私が、$_SERVER['SCRIPT_NAME']について質問です。
  • パンくずリストのスクリプトで、$_SERVER['SCRIPT_NAME']の取得方法に悩んでいます。
  • includeで変数を渡す際、配列は渡せないのでしょうか?
回答を見る
  • ベストアンサー

$_SERVER['SCRIPT_NAME']についての質問

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"; のように変数を渡す場合、配列を渡すことはできないのでしょうか? 以上が私の質問です。文章中に誤った表現や、誤解などがあればご指摘願います。 よろしくお願いします。

  • PHP
  • 回答数3
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.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/
aiueo667
質問者

お礼

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

その他の回答 (2)

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.2

あぁ、そうですね。http:// で取得しているからですね。 HTTPで取得しなければならない必要性があってですか? ないなら include 'pankuzu.php'; でいいと思いますが。 複数サーバでドメイン越えしたいならまた補足をお願いします。

aiueo667
質問者

お礼

http://で取得しているとそうなるのですね……ありがとうございます。 既にあるhtmlファイルに、このパンくずリストを自動生成するスクリプトを埋め込もうと考えているのですが、このincludeするファイルがサイトルートにあります。 http://で取得している理由は、既に数百ページあるため、相対パスで全てのページに埋め込むことはできないからです。(http://で取得する理由は、すべてのページに同じように適用すれば済むからです。) 相対パスでincludeする方法は、普通に手作業で埋め込んでいくしかないのでしょうか?他に方法があれば教えていただきたいのです……。 よろしくお願い致します。

  • tany180sx
  • ベストアンサー率63% (239/379)
回答No.1

REQUEST_URIとかPATH_INFOを使えばいいのでは? $name = array(); include 'hoge.php'; で $name は使えると思いますが、スマートなやり方とは思えません。

aiueo667
質問者

お礼

アドバイスありがとうございます。 REQUEST_URIを使うとして、外部ファイルにREQUEST_URIを入れると、結局外部ファイル自身のパスを取得してしまいます。 私のやり方がおかしいのでしょうか……。

関連するQ&A

  • ローカルで$_SERVER['SCRIPT_NAME']を使う場合の疑問

    ローカルでPHPを動かす時、http://localhost/ファイル名 という感じになっています。 でも私は、複数のサイトを運営しているので、localhost/サイト名/ファイル名 という状態になっています。 サーバーで $_SERVER['SCRIPT_NAME'] を使って情報を取得した場合と、ローカルで $_SERVER['SCRIPT_NAME'] を使って情報を取得した場合では、取得できる情報が違います。 この場合、どのようにして制作を進めて良いのかわかりません。 私としては、まずはローカルで動作確認をしてから、サーバーにアップロードするという方法を取りたいと思っています。 アドバイスよろしくお願いします。

    • ベストアンサー
    • PHP
  • ネームサーバーについての質問です。

    ネームサーバーについての質問です。 ネームサーバーについて、やりたい事、させたい事が誤っているかもしれませんが,よろしくお願いします。 現在、1台のPCでwebサーバ設定完了。同機にネームーサーバを設定を行いたい。 ネットワークはケーブル回線です。(LAN構造) ネームサーバアドレス、グローバルアドレス等はISPから自動取得。 (ネームサーバ構築理由) グローバルIPが動的であるため、ルーターをリセットするとグローバルIPが変更される。 ドメインとグローバルIPの迅速な関連づけをしたいので、ネームサーバー構築を行いたい。 (ドメインを取得したサービス会社より変更が可能ですが、変更まで長時間かかる。) (質問) この場合はISPのネームサーバをmasterにするとの、夜に電源を落としてしまう私のPCをmasterにするのと、どちらが良いのでしょうか? また、ISPのネームサーバは、私のネームサーバのmaster又はslaveになれるのでしょうか? (質問2) 私の方がmasterである場合、ISP側はゾーンファイルの転送を受けるのでしょうか? (質問2) 「named.conf」の設定に関してなのですが、 私の方をmasterとした場合に仮に私のdomain名が”AAA.com”でネームサーバ機のプライベートIPが”192.168.1.15”,グローバルIPがxxx.xxx.xxx.xxxとします。 ISPのドメイン名が”BBB.com”とします。 #マスターゾーンの定義 zone "AAA.com" IN{ type master; file "AAA.com.db"; }; #スレイブゾーンの定義 zone "BBB.com" IN{ type slave; masters {xxx.xxx.xxx.xxx;}; file "BBB.com-slave.db"; }; でよろしいのでしょうか? 何か見当違いな質問をしているかもしれませんが、よろしくお願いします。 m(_ _)m

  • ネームサーバ情報の呼び方について

    サーバをレンタルすると、ネームサーバ情報がサーバ会社から送られてきます。 例(ネームサーバ情報): プライマリ dns1.example.com 123.456.78.9101 セカンダリ dns2.example.com 123.456.78.9102 上記の123.456.78.9101は呼び名が「プライマリネームサーバIPアドレス」で、123.456.78.9102は呼び名が「セカンダリネームサーバIPアドレス」ということは分かります。 しかし、dns1.example.com及びdns2.example.comの”正しい”呼び名が分かりません。自分で調べたところ、dns1.example.comを「プライマリネームサーバ名」と呼び、dns2.example.comを「セカンダリネームサーバ名」と呼ぶみたいですが、これが正しい呼び方なのか定かではありません。 どなたか、ネームサーバ情報のdns1.example.com及びdns2.example.com部分の”正しい”呼び名を教えて下さい。参考になるサイトのURL等ご存知でしたら、そちらもお教えいただければ幸いです。 よろしくお願いします。

  • 分かりません!ネームサーバーの変更方法

    お名前.comで取得したドメインをxreaサーバーで使うのですが、 その際、お名前.com側で、ネームサーバーの変更が必要だと思います。 その方法がわかりません。 各サイトを探してみたところ、このサイトを見つけました。 ↓↓ http://unknown.s170.xrea.com/2010/03/onamae-xrea-domain.html すると、ネームサーバーは ns1.value-domain.com ns2.value-domain.com ns3.value-domain.com に変更するとあります。 ですが、このままやればいいのか分からず・・・。 現状、バリュードメインの他社で取得のドメイン設定変更画面では 「NS1-3.VALUE-DOMAIN.COM」というサーバーしかありません。 この場合でも上記の3つを記入すればいいのでしょうか。 また記入する際は、このように5か所あります。 ネームサーバー情報を入力する [追加入力]※最大で13のネームサーバー情報を設定できます。 1 プライマリネームサーバー※ 2 セカンダリネームサーバー※ 3 4 5 (添付画像) ここに上から順に上記3つのネームサーバーを記入すればいいでしょうか。 こういうことはまったく分からず、困ってます。 お詳しい方、よろしくお願いします。

  • ネームサーバ登録したネームサーバのIP

    ちとわかりにくい題目で申し訳ありません。 example.com のドメインを取得していると仮定します。 通常は www.example.com のIPアドレスの問い合わせは ルートサーバに.comのゾーンに対するDNSサーバを問い合わせ example.comに対するDNSサーバを問い合わせ 最終的にwww.example.comのIPを問い合わせる感じだと思うのですが、 お名前.com でいうところの 「ネームサーバー名としてのホストを設定する」 にて dns1.example.com 198.51.100.1 として登録した場合 これはどこに登録されるのでしょう? そしてdn1.example.com のIPを調べるときはどういうふうに問い合わせされるのでしょう?

  • <Script Language="VBSCRIPT" RUNAT="SERVER"> </script> と <% %>は違うの??

    ASP開発をしています。 あるASPでIncludeファイルで配列宣言 Dim gsABC(10)を宣言します。 Includeファイルの中身 <Script Language="VBSCRIPT" RUNAT="SERVER"> Dim gsABC(10) </script> そして、ASPファイルでその変数gsABC(0)を 使おうとするとエラーが発生します。 けれども、Includeファイルの中身を <% Dim gsABC(10) %> にすると正常に動きます。 2つは同じものだと思っていたのですが、 これによって違うものなのかと認識するように しなければと思ってますが・・・ どこが違うのか分かりません。 どなたか分かりやすく簡単でいいですから 説明して頂けないでしょうか? よろしくお願いします。

  • 【PHP】PHPでそのファイルが格納されているディレクトリ名を変数に代入する方法を教えてください。

    別のファイルに格納されている変数(フォルダ名=変数名)を呼び出して、書き出したいのですが、echoして書き出してもフォルダ名しか書き出すことができません。 --------- ・別ファイルに$folderを作成。  $folder無いはhtmlを書いています。  - echo $folder;  - と書くと思ったものが表示されます。  -- しかし、ファイル名が多いので中のプログラムをいじらずに書き出ししたいのです。 ・フォルダの名前を取得  Test/01/folder/index.phpから"folder"を取得したい。  ↓は検索で出てきた構文です。  -----  $list = split( "/", $_SERVER[ SCRIPT_NAME ] );  $name = $list[ count( $list ) - 2 ];  ----- ・別ファイルに格納されている$folderの変数を呼び出して書き出して、  $folderの中身が書き出される。  (現在この状態で、echo $name;をするとfolderとだけ書き出されてしまいます。)  ・・・というのが理想です。  宜しくお願いします。

    • ベストアンサー
    • PHP
  • scriptによる読み込みのselect表示

    <script language="javascript" type="text/javascript" src=""></script> で外部ファイルからHTMLを読み込ませ表示させたいのですがなぜかselectが上手く表示されません。 上手く説明できませんが <script language="javascript" type="text/javascript" src="http://www.○○.com/××.php"></script> を貼り付けた部分に http://www.○○.com/に用意した××.phpから <form action="" method="post"> <input type="radio" name="test1" value="1" />r1 <input type="radio" name="test1" value="2" />r2 <input type="checxbox" name="test2" value="1" />c1 <input type="ceckbox" name="test2" value="2" />c2 <select name="test3"> <option value="1">s1</option> <option value="2">s2</option> </select> </form> このようなHTMLを吐き出して表示させたいのですが、redioやchekboxは問題ないのにselectが上手く表示されません。 全くプルダウンが出来ずoption部分を見る事が出来ない状態です。 上記のような方法で表示させる事は無理なのでしょうか? それとも何か対応策はあるのでしょうか? どなたかお教え願えませんでしょうか。

  • ネームサーバ自身の名前解決

    おそらくネームサーバを詳しく勉強する必要があると思いますが、 指標のためにざっくりと教えて頂けると助かります。 DNS設定でふと疑問に思ったのはネームサーバ自身の名前解決はどのようにしているのか?です。 例えば ・ muumuu ドメインで既にドメイン持ち ・ CPIでVPSサーバ取得 ・ ネームサーバはCPI(ns.hogehoge.com,・・・) このようなことは出来るのでしょうか? 出来るとしたら muumuu ドメインの設定でネームサーバを ns.hogehoge.com としたとしても、ns.hogehoge.comが CPIにあることをどのように知ることができるのか不思議になりました。 かなりお間抜けなことを聞いているかもしれませんが、よろしくお願いいたします。

  • PHPので他のサーバーのスクリプトを書き換える方法

    http://seoup.net/ こちらのサイトで配布されているスクリプトでは外部サーバーのPHPを書き換えることができますが、 具体的になんという関数でそうやって書き換えしているのでしょうか? PHP入門者なのですが、今後そういった分野のシステムを構築していきたいので、つくるために必要な大まかな流れや必要な関数などを教えてください。

    • ベストアンサー
    • PHP

専門家に質問してみよう