• ベストアンサー

header関数について

私の認識としてはheader関数とはhtml内にある<head>内の代替わりだと思っていたのですが、それではheader関数の意義がないと思い、質問させていただきました。 php内でhtmlを書く場合、header関数を使わずに、<head>内で <meta http-equiv=\"Content-Type\" content=\"text/html\; charset=euc-jp\">\n"; のように書けばいいと思うのですが、なぜ header("Content-Type: text/html; charset=EUC-JP"); のように書く必要があるのでしょう?何かメリットでもあるのでしょうか? それとも私のheader関数に対する認識がずれていますか? php初心者というより、プログラム事態をあまり書いたことがないため、理解が乏しいです。header関数とhtml内での<head>間に書く違いを教えてください。よろしくお願いします。

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

  • ベストアンサー
  • taba
  • ベストアンサー率61% (349/567)
回答No.4

プログラムの問題ではなく、HTTPの仕組みの問題です。 第1回 HTTPの仕組み(前編):ITpro http://itpro.nikkeibp.co.jp/article/COLUMN/20071119/287478/ HTTPヘッダのメタ情報 http://www.kanzaki.com/docs/sw/http-header.html このあたりを読んで見てください。簡単に言うと、HTTPヘッダとはHTMLを受信する「前に」ブラウザとサーバーがやりとりする情報で、header関数とはPHPでそのHTTPヘッダに情報を追加するための機能です。

gakumon
質問者

お礼

返答ありがとうございます。 ホームページを参考にさせてもらいます

その他の回答 (3)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

>header("Content-Type: text/html; charset=EUC-JP"); ><meta http-equiv="content-type" content="text/html; charset=euc-jp"> >本質的に 本質的に全く違います。 記述の仕方が同じだけで、役割は全く違います。 headerで記述するのはHTTPのクエリ全体を示し、 <meta>で指定されるのはクライアントがこれから記述(ブラウザが解釈)されるHTMLの文を示します。 HTTPの生のクエリを見てみると良いでしょう。 telnetで80番ポートを叩き、webサーバに向けてgetコマンドを打って見ましょう。 なんとなく違いを理解できるかもしれません。

gakumon
質問者

お礼

ありがとうございました

noname#49664
noname#49664
回答No.2

Webサイトというのは、HTTPというプロトコルを使ってサーバとクライアント(要するにブラウザ)の間で命令をやり取りしながら動いています。 ブラウザからどこかのサーバのページにアクセスをすると、まずブラウザからサーバに問い合わせをし、返事が返ってきてから具体的なデータが送られてきます。このデータは、最初にヘッダー情報と呼ばれる各種の情報を記したものが送られ、その後で本体のメッセージ(HTMLのテキストなど)が送られます。 header関数は、このHTTPでのヘッダー情報を送るための関数です。これに対し、<body>内の<meta>タグは、HTMLのテキスト内にメタ情報を記述するためのものです。 通常、ドキュメントに関するメタ情報というのは、ヘッダー(header関数で送るもの)で送信されますが、これは簡単に誰もが扱えるものではないため、同等の働きをするものとして<head>タグ内に<meta>タグを記述して送るという方法が用意されています。 サーバがHTMLを読み込む際にこの<head>内のメタ情報を元にHTTPヘッダーを自動生成することができる……ということになってますが、実際にはブラウザがこれを読んで自分で設定を行っている、というのが現状です。 つまり、headerで送るのは、サーバからきちんとヘッダー情報が送信され処理されるのに対し、<head>内のメタタグは、(サーバが処理される場合もあるけれど)ブラウザのほうで受け取って初めて処理される、従って対応してないブラウザによってはうまく働かないこともある、という感じです。

gakumon
質問者

補足

つまり、 (1) header  ->  <head>の順番で送ることが可能。 (2) headerと<head>タグに書き込める情報は似通っている (3) headerの場合、どのブラウザでも動作可能にできるが   <head>の場合、機能しないブラウザも存在する。 ということでしょうか? そうすると header("Content-Type: text/html; charset=EUC-JP"); <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp"> の双方は本質的には同じということで良いのでしょうか?

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

headerは      。。。。。HTML以外の物を吐く場合に必要になってくるよ。 サーバ側の送信として HTMLなら確かにhead内のmetaタグで記述できるけど画像とかはどうするの? そういう時に使われる。

gakumon
質問者

お礼

ありがとうございました

関連するQ&A