ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

初心者PHP講座コミュのPHPのエラーです。

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして!
簡単な掲示板を作成したのですが、たまにエラーが出る状況で悩んでます。
掲示板自体は正常に作動するのですが、"Warning"がでます。

エラー内容?は
Warning:mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding

エラー箇所?のソース
while(list($key,$value)=each($_POST)){
$value = mb_convert_encoding($value,"SJIS","auto");
$value = htmlspecialchars($value);
$value = ereg_replace(",",",",$value);
$value = ereg_replace("\r\n|\n|\r","<br>",$value);

$_POST[$key]=$value;
}



エラー内容?
Warning: Cannot modify header information - headers already sent by

エラー箇所?のソース

extract($_COOKIE);
if($shimei==""){
$shimei=$c_shimei;
}
$cookie_kigen=time()+365*24*60*60;
setcookie("c_shimei",$shimei,$cookie_kigen);

PHPバージョンは4.46です。
使用サーバーはロリポップです。
誰かわかる方いましたら、よろしくお願いします。

コメント(3)

入力した文字列が短すぎて文字コードが判定できないということではないかと思います。
エンコーディング判定のためにダミーの文字列を別のフィールドに入れておいて,それでエンコーディングを調べてから入力された文字列を変換する,といったテクニックもありますね。
二つ目の警告は一つ目のが解消されたら出ないはずです。

なお,文字コードにシフトJISを使われているようですが,セキュリティホールの温床になるので,EUC-JPかUTF-8を使ったほうがいいと思います。
Andyさんありがとうございます。。。

試してみましたがやはり解消できませんでした。

文字コードは次回作成時にはEUCにします、、、

まだまだ初心者の域を出ませんので、また何かあればよろしくお願いします。
1.
#$value = mb_convert_encoding($value,"SJIS","auto");
$value = mb_convert_encoding($value,"SJIS","ASCII,JIS,UTF-8,EUC-JP,SJIS");

2.
setcookie("c_shimei",$shimei,$cookie_kigen);
は他のあらゆる出力より前に送信されないといけない。
printやechoは当然前にあってはならない。
ob_start()などで出力バッファリングしていればその限りではないが。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

初心者PHP講座 更新情報

初心者PHP講座のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。