質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

5回答

1508閲覧

HTMLにヘッダーやフッターをincludeさせたい

junjunoo

総合スコア12

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

SSL

SSL(Secure Sockets Layer)とは、暗号化されたプロトコルで、インターネット上での通信セキュリティを提供しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

2クリップ

投稿2018/12/12 05:26

HTMLのページがたくさんあるサイトを作成しています。
更新のことを考えたとき、共通部分はインクルードさせたいです。

インクルードを考えている箇所はヘッダー、メニュー、フッターを考えています。
ただ、構築する知識が全くなく、困っています。。
探りながらやってはいるのですが、うまくいきません。

何からやればいいのか。
サーバの設定が必要なのか。
.htaccessの設定が必要なのか。
PHP?SSL?で構築?
使用しているサーバはさくらってことぐらいしかわからないのです、、

------------------------------------index.html

<?php include("header.html"); ?> <?php include("menu.html"); ?>

中身

<?php include("footer.html"); ?>

とりあえず同階層にheader.html、menu.html、footer.html配置してます。
でも表示しません。。

ご教授いただけると幸いです!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

さくらであれば基本的にPHPは利用できますね。

ただ「共通部分はインクルード」よりも「共通以外のところを動的」の方が良いように思います。
おそらく初心者の方かと見受けられますし、すぐには難しいかもしれませんが、テンプレートエンジンを利用をご検討ください(Smarty,Twigなど)

テンプレートエンジンを利用しない簡易例:

index.php

php

1<?php 2$contents = "トップページの本文"; 3$title = "トップページ"; 4require_once('template.php');

test.php

php

1<?php 2$contents = "テストページの本文"; 3$title = "テストページ"; 4require_once('template.php');

template.php

php

1<?php 2echo <<<TEMPLATE 3<!DOCTYPE html> 4<html lang="ja"> 5<head> 6<meta charset="UTF-8"> 7<title>Hello|{$title}</title> 8</head> 9<body> 10<header><h1>Hello</h1></header> 11<nav>メニュー</nav> 12<main> 13<h2>{$title}</h2> 14{$contents} 15</main> 16<footer>フッター</footer> 17</body> 18</html> 19TEMPLATE;

投稿2018/12/12 05:37

編集2018/12/12 05:44
m.ts10806

総合スコア80842

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junjunoo

2018/12/12 06:21

テンプレートエンジン!?? 初耳なので調べてみます。Smarty,Twigですね。 簡易例でindex.php、test.php、template.php作って、アクセスしたのですが、 「このページは動作していません HTTP ERROR 500」と出てしまいました。。。 何がいけなかったのでしょうか、、 関係あるのかわからないのですが、 ドリだとtemplate.phpの14行目にシンタックスエラーと出てます。
m.ts10806

2018/12/12 06:27 編集

アクセスURLはなにでしょうか? シンタックスについては動作確認してなかったのを出していたので申し訳ないです。 ただ、14行目?シンタックス出そうにないところですね。 TEMPLATE; ↑ここのあとに改行がなければエラーになるかもしれませんけど
junjunoo

2018/12/12 06:42

改行したら表示しました!改行に何の意味が!!? index.php、test.php、template.phpですが、何がどーなってるのかさっぱりなんですが、 ざっくりで構わないので説明していただけるとありがたいです。。 無知すぎて申し訳ないのです。。
m.ts10806

2018/12/12 06:54 編集

phpについてはphpマニュアルのサイトを参照してくださいね、というのを前提で。 改行については「ヒアドキュメント」という機能の仕様で、終端は「必ず行頭でなければならない」というのと「行末であってはならない」という仕様があるからです。(要約) 簡易例についてですが、回答の冒頭に書いた「共通以外のところを動的」を実現した例になります。 phpには「変数」というものがあり、その名のごとく内容が変わる可能性のある情報を格納しておくことができます。 ページ毎に情報が変わる部分を同名の変数で定義しておき、テンプレートに埋め込むことでページ毎に別々の情報を表示させられるようにしています。 ※先にあげたテンプレートエンジンについても考え方は同じです ただ、この構成だとテンプレートファイルにもブラウザからアクセスできてしまうため、本来はブラウザからアクセスできない場所に置いて相対パスでアクセスさせるようにするのが望ましいです。 これは簡易例なのでそこまで考慮していません。 ページ毎にinclude埋め込むよりは共通部分はテンプレートでそれ以外を変数で渡した方が効率は良いように思いますので、ひとまずどちらも動いたようであれば色々試してみて、やりやすい方を採用してください。
m.ts10806

2018/12/12 06:54

SakuBladeさん URLありがとうございます。
junjunoo

2018/12/12 07:14

ヒアドキュメント…そういう仕様なんですね。。 「共通以外のところを動的」を実現した例なんですね。 少し理解してきました!もっと咀嚼してみます! テンプレートファイルもブラウザからアクセスできないように注意します。 長々と説明していただいてありがとうございます!!
junjunoo

2018/12/12 07:15

SakuBladeさん ご説明いただきありがとうございます!
m.ts10806

2018/12/12 07:33

置き場所をWebルートと同階層の別フォルダに変えてそこを参照しに行くようにrequire_onceの記述を変える必要があるのでたぶんそこでまた詰まりそうだなと。まあ、それはまた次の段階の話ですので。 SakuBladeさんのコメントはリンク先のPHPマニュアルそのままです。 つまりPHPマニュアルを読み込めばある程度理解できるということになります。 私は辞書がわりに使うことが多いですけどね
SakuBlade

2018/12/12 07:46

mts10806さん 要約ありがとうございます そうですよね、マニュアルだと初級者には難解な表現されている場合があるので噛み砕いて説明すべきでしたね(反省)
m.ts10806

2018/12/12 07:55

SakuBladeさん コメント見る前に投稿したのですがたまたま要約した形になってよかったです。 回答にphpマニュアルへのリンクつけとけば良かった(反省)
junjunoo

2018/12/13 00:15

いえ、なんか色々すいませ。。 PHPマニュアルなるものがあるんですね。ちんぷんかんぷんな予感しかしませんが… すぐにはできませんが、近いうちテンプレートエンジンの構築してみたいと思います! ご教授いただきありがとうございました!
m.ts10806

2018/12/13 00:17

はい。PHPを学ぶ上では必須です。 英語を学ぶ上での英和辞典のようなものと思ってください。
guest

0

.htaccess に
php_value auto_prepend_file /パス/header.php
php_value auto_append_file /パス/footer.php

とすれば、xxx.phpを、読んだ時に

header.php
xxx.php
footer.php

の順に実行されますので、目的の事ができます。

.htmlにしたい、.phpじゃ嫌という場合は

.htaccess に
AddType application/x-httpd-php .php .html
と書けばいいです。

そうするとxxx.htmlを読んだら

header.php
xxx.html
footer.php

の順で表示します。

投稿2018/12/13 11:51

編集2018/12/13 11:56
asakawaya

総合スコア45

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junjunoo

2018/12/18 08:49

お返事おそくなってすいません。 そして、ありがとうございます。 そもそもなんですが、最後が「.php」は普通ですか? このような感じは→https://●●●.co.jp/index.php
guest

0

直接の回答ではないです

HTMLのページがたくさんあるサイトを作成しています。

更新のことを考えたとき、共通部分はインクルードさせたいです。

データベースを使用しない限り、php で作成するメリットがあまりありません。
また、データベースを使用しようとすると、ハードルがかなり上がります。
*管理画面を作ったり、投稿を制御したり。。。

静的サイトジェネレータを使用してみては?

投稿2018/12/12 10:00

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junjunoo

2018/12/13 00:09

静的サイトジェネレータ……。また、聞きなれないものが出てきましたね。。 そもそもなんなのかを調べます!
guest

0

index.htmlのファイル名をindex.phpにしてみてください。
.php拡張子でPHPが処理出来る様になっていれば、ですが。
まずはphpinfo.phpというファイルを作って

PHP

1<?php phpinfo();

とだけ書いたファイルを用意し、ブラウザでアクセスしてください。
何やら青い背景のテーブル構造のデータがずらずら書かれていたら、PHPが動いていることになります。

投稿2018/12/12 05:30

kunai

総合スコア5405

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junjunoo

2018/12/12 05:41

PHP Versionがかかれたものがズラズラでてきました!
kunai

2018/12/12 05:53

phpinfo() を書いたファイルにアクセスするとそうなったんですね? だと、PHPは動いているはずなので、index.htmlのファイル名をindex.phpにして、index.phpにブラウザからアクセスしてみてください。
junjunoo

2018/12/12 06:13

index.phpにしたら、うまくいきました! この場合、index.php同様に、インクルードを表示させたいページは全てphpにしなくてはいけないのでしょうか?? たとえば、 news.html → news.php recruit.html → recruit.php
kunai

2018/12/12 06:46

includeする先のファイル(news.htmlとか)の中にPHPの記述があれば(<?php echo $vars; ?>とか)があれば、拡張子は.phpにする必要があります。
junjunoo

2018/12/12 07:27

そうですよね。。 .phpだとローカルで見たいときソースが表示されますよね? できれば、避けたいとおもった次第です。。 でも、.phpでないとインクルードできないんですよね。
m.ts10806

2018/12/12 07:58

横からすみませんが、phpソースは外部からは確認できませんよ。画面への出力結果のみです。 phpファイル自体をダウンロードできるわけではなくあくまで画面表示された文字列情報(今回はhtml)だけです。
papinianus

2018/12/12 10:57

ローカルにxampやdockerでも入れれば済むことでは? 逆に、ローカルに再現環境がなければ肝心のincludeされた結果が見えないから確認にならないですよね?
junjunoo

2018/12/13 00:23

ローカルにxampやdockerの再現環境をいれれば、phpファイルもincludeされた部分も、ローカル上にうまく表示するってことですよね!?
papinianus

2018/12/13 00:25

そうです。xampのpはphpのpです。多くの場合、再現環境をローカルに持つと思います。
m.ts10806

2018/12/13 00:26

あ、そういうことか。勘違いしてました。 papinianusさんの通りですね。むしろサーバーよりローカルにPHPが動作する環境作るのが先です(細かいですが正確には「XAMPP」ですね) あとできればEclipseなどのIDEを入れて開発してください。メモ帳とか一般的なテキストエディタより開発専用の統合環境ですべきです。構文エラーとか実行前に分かるので。
papinianus

2018/12/13 04:20

Perl無視してましたすみません。XAMPP覚えました。
junjunoo

2018/12/13 06:35

じゃあ、XAMPPとなるものをダウンロードすればいいんですね!? 下記であってますか? https://www.apachefriends.org/jp/download.html バージョンは何がちがうんですかね?? 本当に無知ですいません
m.ts10806

2018/12/13 06:36

この質問締めた方がいいような(もしくは別質問にするとか) XAMPPについての導入→PHP実行までの記事なら結構あるので そちらを見て進めてください。
junjunoo

2018/12/13 06:53

そーですね!そうします! 長々とありがとうございました!
guest

0

さくらレンタルサーバでPHPを動かすなら、index.htmlではなくindex.phpというファイル名で保存してそれにアクセスしてみてください。

投稿2018/12/12 05:29

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

junjunoo

2018/12/12 05:43

PHP Versionがかかれたものがズラズラでてきました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問