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

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

新規登録して質問してみよう
ただいま回答率
85.48%
UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

PHP

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

Q&A

解決済

2回答

1979閲覧

phpにおける文字化け

aaaaaaaa

総合スコア501

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

PHP

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

.htaccess

Apacheウェブサーバーにおいて、ディレクトリ単位で設置及び設定を行う設定ファイルを指します。

0グッド

1クリップ

投稿2015/10/19 02:25

下記ソースは、ログインページから接続しないと閲覧できないページに接続した際、所定のログインページに戻すソースです。

htmlヘッダが<?php ?>に囲われた部分より下にあるため、文字化けが発生してしまいます。echo内にhtmlヘッダーを記述すれば解決するのですがこれってやり方としては、比較的良い方なのでしょうか。
もっと他に賢いやり方ってありませんか。

php

1<?php 2 session_start(); 3 session_regenerate_id(true); 4 if(isset($_SESSION['login']) == false) { 5 echo <<<EOL 6 //こあたりにhtmlヘッダーを記述する。 7<p>ログインされていません。</p> 8 <p><a href="./staff_login.html">ログイン画面へ</a></p> 9 EOL; 10 exit(); 11 } else { 12 echo <<<EOL 13 <p>{$_SESSION['staff_name']}さん接続中。</p><hr> 14 EOL; 15 } 16 <!DOCTYPE html> 17 <html> 18 <head> 19 <meta charset="UTF-8"> 20 <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=yes"> 21 <title>○○農園</title> 22 <link rel="stylesheet" href="../css/reset.css" media="all"> 23 </head> 24 <body> 25 <h1>店舗管理項目</h1> 26 <p><a href="../staff_list.php">スタッフ管理</a></p> 27 <p><a href="../product/pro_list.php">商品管理</a></p> 28 <p><a href="./staff_logout.php">ログアウト</a></p> 29 </body> 30 </html>

もう一つ質問なのですが、上記の他に.htaccessで文字コードを制御(?)する方法があるのですが、
AddType "text/html; charset=UTF-8" .html .php
と記述しても文字化けは直りません。しかし、
AddDefaultCharset UTF-8
と記述すると上手くいきます。いったいこの差は何なのでしょうか。
もちろんフォルダ内には、htmlとphpしかありません。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13151482798

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

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

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

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

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

guest

回答2

0

ベストアンサー

「ログインされていません。」の表示も、
「~さん接続中。」の表示も、本来<body>要素の内側(<body>要素を出力した後)になるので、
ログインしていてもしていなくても共通に使えるヘッダーを先において、
<body>要素の後にログインしているか判定する箇所を置くような流れが良さそうに思えます。

投稿2015/10/19 07:39

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

同じページで処理しようとするのではなく、ログインしていない時はログインページ(またはエラーページ)にリダイレクトする方がスマートかと思いますよ。
http://qiita.com/nenneko/items/ed0c0dadf943651e4f3e

リダイレクト先は極端に言えば静的なページでも問題無いはずなので、出力の順序による文字化けなどが原理的に発生しなくなります。

投稿2015/10/19 06:00

編集2015/10/19 06:03
tanat

総合スコア18713

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

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

aaaaaaaa

2015/10/20 05:04

ご回答有難うございました。 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問