• ベストアンサー

includeでホームページの作り方

よろしくお願いします。 例えば index.html  menu.php images(フォルダー)  test(フォルダー)    |__test.html test2(フォルダー)    |__test2.html という状況で、menu.phpは全ファイに共通して使いたいので includeさせます。 menu.phpは画像を使っているのでimagesフォルダーからimg src しています。 しかし、indexファイル以外ではmenuで使用している画像がリンク切れを起こしてしまいます。 みなさんはどうやってincludeをつかっていますか? 自分の使い方というより考え方が間違っているのしょうか? よろしければ皆さんの上手い使い方を教えてください。

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

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

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

phpが出力するhtmlソースに書きこむurlとしては、Document Rootからのパス表記がお薦めです。 例えば http://sample.server/img/count.gif で表示出来る画像のDocument Rootからのパスは、「/img/count.gif」です。 <img src="/img/count.gif"> このリンクを見つけるとブラウザは、現在表示中のページのサーバー部分にこのパスを繋いで画像ファイルを探します。 http://sample.server/xxx/index.shtml のページからなら、http://sample.server に /img/count.gif を繋いで http://sample.server/img/count.gif を探します。 同一サーバー内ならどこのページの記述であっても、常に同じ絶対urlが参照出来るようになります。 phpがincludeしたり、fopenする時にサーバー内部でファイルを探すためのローカル絶対パスとは別物なのでご注意下さい。

Vitamin4
質問者

お礼

回答ありがとうございます。 試したところOKでした!! phpを覚えるとwebの世界が広がるので少しずつでも 覚えていきたいです。今後ともヨロシクお願いします。

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

include元のurlで見るからじゃない?>img srcが 試しにどこがbase urlにされているのか、見てみたら判るかと。

Vitamin4
質問者

お礼

http://~から記述することにしました。 ありがとうございました。

関連するQ&A

  • PHPをインクルードした時の画像パスについて

    PHPでページをインクルードをしようと思っています。 index.htmlにインクルードするページを仮にaaa.htmlとbbb.htmlとします。 aaa.htmlとbbb.htmlはcommonというフォルダに入っています。 aaa.htmlなどに使われている画像はcommonの中のimgというフォルダに入っています。 階層を表すと index.html common  ├aaa.html  ├bbb.html  ├img   ├gazou.jpg   ├gazou2.jpg というふうになっています。 そこで、index.htmlに <?php include("common/aaa.html"); ?>でインクルードし インクルードするaaa.htmlに設置してある画像には ../common/img/gazou.jpg というパスで設置しました。画像の確認はindex.htmlで確認済みです。 ※img/gazou.jpgではなぜかダメでした。(aaa.htmlからの相対パスではなく、インクルードした側にindex.htmlからの相対パスになるのでしょうか?) 次に salonというフォルダにあるhair(ヘアサロン)のフォルダにあるkari(仮)というお店ページを作ります。 階層は以下のようになっています。 index.html common  ├aaa.html  ├bbb.html  ├img   ├gazou.jpg   ├gazou2.jpg salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html   インデックスがあり、アクセスページ、メニューページなどさらに一つ入るといった作りになっています。 ここのページにもtoppageのindex.htmlと同じようにaaa.htmlなどインクードします。 階層が違うのでsalon/hair/kari/index.htmlへのインクルードは <?php include("../../../common/aaa.html"); ?> で行いました。問題なくインクルードはできたのですが、画像がつぶれています。 階層が違うからですよね? このように階層が異なるデータで 共通のインクルードをしたい時はどうしたらいいのでしょうか? 階層が違くとも共通で入るヘッダー等作りたいのです。 環境はテストなのでアパッチ、ローカルサーバーで見ています。 本アップしないと見れないのでしょうか? お願いします。

    • ベストアンサー
    • PHP
  • インクルード関数

    すみません、下記はインクルードの元のPHPファイルです。 これでインクルードすると CSSのリンクと画像のリンク のところでParse error: syntax error, unexpected T_STRING というエラーが出ます。 $HTMLHEADER の中を単純な文字にするとエラーが出ないという ことはインクルードそのものの構文は間違っていないということ だと思います。 インクルードの場合リンクはどうすればいいんでしょうか? <?php //ページタイトル $APPTITLE = "関東近県の格安出張"; //ヘッダ部 $HTMLHEADER = " <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'> <HTML> <HEAD> <META http-equiv='Content-Type' content='text/html; charset=utf-8'> <META http-equiv='Content-Style-Type' content='text/css'> <TITLE>" . $APPTITLE . "</TITLE> <link href="css/basic.css" rel="stylesheet" type="text/css" media="all" /> </HEAD> <BODY> <TABLE width='100%' bgcolor='#ff8000'> <TR> <TD> <div><img src="images/head.jpg" alt="" /></div> <div><img src="images/main.jpg" alt="" /></div> <ul class="u"> <li><a href="index.html"><img onmouseover="this.src='images/home2.jpg'" onmouseout="this.src='images/home.jpg'" src="images/home.jpg" alt="" border="0" /></a></li> </ul> </TD> </TR> </TABLE>"; //フッタ部 $HTMLFOOTER = "</BODY> </HTML>"; ?>

    • ベストアンサー
    • PHP
  • php インクルードincludeした時のパス

    phpにてincludeした時のパスで躓いています。 現在のツリーは以下の様になっています。 index.html common  ├header.html  ├footer.html  ├right.html  ├img   ├navi-home.jpg   ├navi-1.jpg  ├css   ├base.css salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html この中の../hair/kari/index.htmlの中に ../common/header.html及びfooter.htmlを <?php include_once(dirname(__FILE__).'/../../../common/header.html'); ?> にてインルードしています。(書き方あってます?dirname(__FILE__).いります?) つぎに../hair/kari/access/index.htmlの中にもインクルードします。 <?php include_once(dirname(__FILE__).'/../../../../common/header.html'); ?> という風に一つ下の階層なので../を付け足しました。 このようにページ毎にheaderまでの相対パスが違うので、そのページ毎にパスを書き換えていかなければいけないものなのでしょうか? また../始まりではなく/始まりでないと表示されません。 /始まりは絶対パスでしたっけ? この書き方は間違っているのでしょうか? そして最後に、 ../common/header.htmlの中の画像ファイルやリンクは <img src="/common/img/navi-home.jpg"> の様に書かないと、インクルードしたファイル側で表示されません。 これも同じように/始まりのこの書き方でいいのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • htmlファイルをincludeして、文字列変換して表示

    お世話になります。 /index.php  /aaa/index.phh    /aaa01.jpg    /aaa02.jpg  /bbb/index.php    /bbb01.jpg    /bbb02.jpg    /bbb03.jpg と、いうようなフォルダ構造でホームページを作成して、 /index.php で <body>  ヘッダだよ<br>  include_once("aaa/index.php");  フッタだよ<br> </body> とすると、aaa/index.php に書かれてある文字を表示することができます。 しかし、画像 aaa01.jpgなどは、/以下になく、/aaa/以下にあるため、 表示されません。 そこで、include_onceと同時に <img src="aaa01.jpg" となっているところを、 <img src="aaa/aaa01.jpg" と、書き換えられないものかと考えた次第です。 やりたいことは、同じヘッダフッタを持ったページで、その中に フレームタグなどを使用することなく、 別々のフォルダに別々に作成したページ、/aaa/index.php /bbb/index.php などを 表示したいと、いうことです。 全く別の発想でも構いません、よい案などあればご紹介ください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • includeの使い方

    includeを連続して使いことは可能でしょうか? 具体的には、index.phpに下記記述を入れて、 <?php include("test.php"); ?> test.phpには下記の記述だけにしたいのですが、これは問題ありますか? <?php include("./company/".mt_rand(1,10).".php"); ?> 動かしてみたら問題なさそうなんですが、もっとスマートな方法はないのかと思いまして。

    • ベストアンサー
    • PHP
  • phpのincludeについて

    お世話になります。 Apache/2.2.3 PHP5.1.6 のレンタルサーバを利用しています。 httpdocs   |___lib   |  |___test.php   |___index.php という構造にしています。 -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'lib/test.php'; echo $a; ?> --------------------- 上記の場合、index.phpには 「sample」と表示されます。 -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- 上記の場合、なぜか表示されません。 そこで「http://~~」はincludeできないのかなと思ったのですが -----test.php-------- <?php $a = 'sample'; echo $a; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; ?> --------------------- とすると、なぜか「sample」と表示されました。 この結果から、includeはできているみたいです。 なんとか -----test.php-------- <?php $a = 'sample'; ?> --------------------- -----index.php------- <?php include_once 'http://example.com/lib/test.php'; echo $a; ?> --------------------- で「sample」と表示させたくて試行錯誤してみたのですが どうしても解決できません。 お力添えのほどお願いできればと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • include_pathについて。

    PHP 5.2以上のバージョンの話として質問をさせて頂きます。 (ローカルではWindows版XAMPPを使用。リモートはLinuxサーバー。) ----- <ファイルの位置関係> imgディレクトリ --- C.jpg (画像ファイル) mainディレクトリ --- A.php sub ディレクトリ --- funcディレクトリ --- B.php (img、main、subディレクトリは3つとも同階層) //------- (A.phpの記述) require_once '../sub/func/B.php'; //------- (B.phpの記述) echo '<img src="C.jpgのパス">'; // ←■画像Cを表示したい■ //★どう表示されるかテスト★ echo dirname(__FILE__) ;   //----- このような状況で、 A.phpにアクセスすると、★テスト★の所は、 ~/sub/func   //←のように表示される。 // つまりこれは、__FILE__ は、 // A.phpではなく、B.phpを指している。(?) と、このような時、B.phpの中で、 C画像の相対パスは、どう書いたらよろしいのでしょうか? A.phpから見た、C画像の相対パスで書いたらいい? それとも、B.phpから見たソレでしょうか? phpinfo()でinclude_pathの項目を調べると、 .:/usr/local/lib/php/~ のように書かれています。(デフォルトのままです。)

    • ベストアンサー
    • PHP
  • ボタンを押すことでincludeの値を変更するには?

    ボタンを押すことでincludeの値を変更するには? HTMLとPHPを利用してウェブサイトを制作していているのですが、リンクに関してわからないことが出てきました。 現在index.htmlに以下の記述をしています。 <div id="menu"><?php include("menu.php"); ?></div> <div id="main"><?php include("main.php"); ?></div> menu.phpにリンクを記述して、それを押すことで<div id="main">に変化を与えたいのですが、そういうことは可能でしょうか? 具体的には<div id="main">内の<?php include("main.php"); ?>を<?php include("page2.php"); ?>などとできればうれしいのですが... ActionScriptでは出来たのですが、phpではどうすればいいのでしょうか...? 目的はindex.htmlなどを一度書き上げるだけで、あとの要素は全て簡潔にすませロードさせるだけにして管理を簡単にすることです。 メニュー->サブメニュー展開->内容表示 と三行程を行うのに、普通だとそれぞれ メニューのあるページ、左記に加えサブメニューの展開されたページ、左記二つを含んだ内容のページと、三つも必要になり大変です。 なのでボタンを押すと指定した要素に別のものをロードできたら...と思って質問させていただきました。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHPでメニューを参照した時の画像

    Webサイトをやっていて、PHPでメニューを読み込んでいます。 ディレクトリは以下のようになっていて index.php menu.php text(フォルダ) ー text.php img(フォルダ) ー logo.png menu.phpでlogo.pngを使用する際にはHTMLで><img src="img/logo.png">と読み込んでいます。 ここで、index.phpなどのmenu.phpと同じ階層にあるPHPファイルで<?php require("menu.php");?>と読み込むとちゃんとlogo.pngが表示されるのですが、 textフォルダ内のtext.phpから<?php require("../menu.php");?>と読み込むと画像が読み込まれません。 調べてみると、logo.pngの位置をimg/logo.pngではなくtext/img/logo.pngという風に解釈しているようです。 これを解決する方法はありませんでしょうか?教えて下さい。

    • 締切済み
    • PHP
  • 共通ファイルの読み込み

    全ページに共通するhearder部分とfooter部分を外部ファイルにし、 includeを使ってファイルを読み込むと同じディレクトリ内なら画像やリンクが正常に動作しますが、 階層が違うディレクトリでファイルを読み込むとパスが違うので正常に表示されませんよね? そこでこちら(http://oshiete1.goo.ne.jp/qa4006803.html)に書かれている <?php $html = implode('', file('○○○/index.html')); $html = str_replace('img src="./', 'img src="./○○/', $html); print($html); ?> でファイルを読み込もうと思うのですが、パスが変わるだけで 表示はincludeを利用した場合と同じになるのでしょうか? また、このまま使ってもセキュリティで問題ないでしょうか?

    • ベストアンサー
    • PHP

専門家に質問してみよう