$_SESSIONの公式マニュアル(公式)にも触れられていないのですが、
以下の記事のようにsession_start()後に
header("Content-type: text/html; charset=utf-8");
が置かれているコードを見るのですが、どのような意味があるのかわからず、ご質問させていただきました。
参考記事
基本的な質問であれば申し訳ないのですが、参考になる他のマニュアル等でも良いので
ご教示いただけると嬉しいです。
よろしくお願いいた致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
どのような意味があるのかわからず
直接の意味としては、HTTPとしてこのコンテンツをWebサーバから返すときのレスポンスの
レスポンスヘッダーの内容をプログラムから指定しています。
これにより、「このコンテンツはhtmlで文字コードはutf-8である」ということを
ブラウザに伝えます。
通常はプログラムでわざわざ指定しなくても、Webサーバが勝手につけてくれますが、
プログラムから指定しているのは、より明示的に
文字化けや、文字コードの違いを利用したXSS攻撃等を防ぐ、というのが趣旨でしょう。
metaタグでも文字コードの指定はできますが、
metaタグ等での文字コード指定ではブラウザ依存が存在する(古いブラウザとかがいうことを聞かないとか)ことや、
コンテンツにうっかりmetaタグを書き忘れたりした場合を考慮して、
あえてcontent-typeレスポンスヘッダの指定をしているのです。
この指定をしたから完ぺき、この指定をしなくてはならない、ということではなく、
うっかり忘れても2重3重に保険を掛けるのが定石で、この例ではそうしているということです。
レスポンスのcontent-typeヘッダに文字コードを正しく指定するにはwebサーバの設定が重要で、
これらの設定を正しく行うことが、優先事項です。
端折ってしまったので追記:
content-typeヘッダの文字コード指定と、metaタグの文字コード指定両方行った場合、
content-typeヘッダの文字コード指定が勝ちます。
このことから、「metaタグで指定しても文字コードが変わらない!apacheの設定が悪い!」
とばかりに、AddDefaultCharsetをOffにするとよい、との記事をよく見かけます。
しかしOffにすると、metaタグは効きますが、今度はmetaタグ必須になり、セキュリティ上のリスクがあります。
この場合これを回避するにはheader()での指定の必要性が上がります。
投稿2018/11/09 01:48
編集2018/11/09 10:49総合スコア665
0
ベストアンサー
この場合、header("Content-type: text/html; charset=utf-8");
は、セッションと関係なく、その後の文字がutf-8で書かれたhtml文書
としてブラウザにお知らせしているものだと思います。
通常は、htmlの<head>
内に<meta charset="UTF-8">
と書きますが、参考記事の場合、
htmlの宣言よりも前に、echo
で日本語を出力していますので、文字化けしないようにとの配慮じゃないでしょうか?
投稿2018/11/08 23:58
編集2018/11/09 00:28総合スコア798
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/09 01:41
2018/11/09 02:13
2018/11/09 04:01 編集
2018/11/10 12:25
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/09 01:57