• ベストアンサー

header()関数について

先日i-mode向けのサイトをphpとSmartyを使い作成したとき、疑問に思った事があったので質問させていただきます。 900系以上の端末とそれ以下の端末で別々のテンプレートを使い画面を出し分けていました。 900系の端末ならばXHTMLでi-CSSが使えるとの事でしたのでDoCoMoのサイトを見ながら作っていたのですが、最初うまくCSSが機能しませんでした。 結果から言うと、テンプレートに書いていたmetaタグの内容ををphp側でheader()を使い、吐き出すことによって動作させることができました。 http://php.s3.to/man/function.header.html 上記を見ると「生のHTTPヘッダ文字列を送信 するために使用します」と書かれていますが、テンプレートの<head>~</head>に直接書いてダメな理由が分かりません。 もしも単純にXHTMLのみでphpを使用しない場合、どうすればいいのか等、疑問があります。 ■header()と<head>~</head>に直接書く場合の相違点 ■phpを使わない場合はi-CSSって使えるのか? 以上ご存知の方がいらっしゃいましたらご教授願います。

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

  • ベストアンサー
  • potedora
  • ベストアンサー率47% (66/140)
回答No.3

■header()と<head>~</head>に直接書く場合の相違点 metaはWEBサーバへの指示、headerはUA(ブラウザ)への指示ということです。 metaの指示をWEBサーバが解釈して、レスポンスヘッダ(header()で書き込む部分)のContent-typeを書き直してくれれば問題はないのですが、そのような親切なWEBサーバはなさそうです。(Apacheなどの場合は、httpd.confにContent-typeを記述できますが) ■phpを使わない場合はi-CSSって使えるのか? 既に回答すみですが。 i-CSSはあくまでもブラウザが解釈するものです。 通常WEBアプリケーションは以下の流れを取ります。 1.クライアントからなんらかの要求(リンク、ボタンクリック)。 2.WEBサーバー側で要求を受け付け、なんらかの処理(DB検索等)をして、ブラウザへの出力を作成。 3.WEBサーバーからの返答をブラウザに表示。 ここで、2.のなんらかの処理にphpを使おうが、perlを使おうが、 javaを使おうが自由です。 結果としてブラウザが表示できる出力(HTML,XHTML、XML等)を作成できれば。 ですので、当然PHP以外でもi-CSSは利用可です。 http://www.akatsukinishisu.net/itazuragaki/id/re_XHTML_1.1_MIME http://www.akatsukinishisu.net/itazuragaki/id/re_XHTML_1.1_MIME_2

参考URL:
http://www.akatsukinishisu.net/itazuragaki/id/re_XHTML_1.1_MIME
slash_t
質問者

お礼

ありがとうございます。 理解できた気がします。 まだ未確認ですがmetaで書くだけでは ブラウザがxhtmlとは認識してくれないと言うようなことでしょうか。 参考URLありがとうございました。

その他の回答 (2)

回答No.2

ブラウザは、サーバーから送られてきた情報によって、画面を表示します。その情報が、phpで生成されたものか、固定的なHTMLファイルかなどは、関知しません。 送られた情報の内容だけが、重要です。 したがって、i-CSSの指定が、正しい場所に書かれていれば、phpを使ったかどうかとは無関係です。

slash_t
質問者

お礼

phpを使わずともi-CSSを使えると言うことに関しては理解いたしました。 私の質問の仕方も悪いなと思ったのですが、 XHTMLのみで使えるはずだとは思っていたのですが その書き方がわからず悩んでいたところです。 となると、単純に私のテンプレートのヘッダの書き方が悪かったと言うことだと思いますのでちょっと書き方を調べてみます。。 ありがとうございます。

回答No.1

単純なHTMLファイルでも、サーバーから、クライアントにそれをそのまま送るわけではありません。送る前に、どんなデータをこれから送るかとか情報を先に渡しています。 header()は、この部分の情報を生成します。<HTTP>を送る前にheader()で指定された中身が送られます。 i-CSSは、phpを使うかどうかに関係ありません。XHTMLの中で、結果的に書かれていれば、何でソースを生成するかは無関係です。

slash_t
質問者

お礼

回答ありがとうございます。 ちなみに今回問題だったのはXHTMLの<head>~</head>で書いていた以下の部分でした。 <meta http-equiv="content-type" content="application/xhtml+xml; charset=Shift_JIS" /> ↑ 上記をテンプレから消しphpで以下のように ↓ header("Content-type: application/xhtml+xml; charset=Shift_JIS"); するとok >XHTMLの中で、結果的に書かれていれば 結果的に書かれていれば、と言うのは上記metaの部分とは違う何か、と言うことでしょうか。 その辺がいまいち理解できていません。。。

関連するQ&A

専門家に質問してみよう