• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPスクリプトでエンコードエラー)

PHPスクリプトでエンコードエラー

このQ&Aのポイント
  • 貼り付けアンケートを設置した際にエンコードエラーが発生しました。
  • mb_convert_encoding関数と関連するエラーが発生しています。
  • エンコード設定を確認し、エラーの原因を特定する必要があります。

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

  • ベストアンサー
  • Suzi
  • ベストアンサー率38% (130/334)
回答No.5

それでしたら、以下のはどうでしょうか。 $gotopage = ''; $gotopage = "$thankyou[$ran]"; if(!empty($gotopage)){ print "<HTML><HEAD>"; print "<meta http-equiv =\"refresh\" content=\"0; url=" . $gotopage. "\">"; print "</HEAD></HTML>"; exit; }

mayuchinco
質問者

お礼

ちゃんと表示されるようになりました! 素晴らしいです。 勉強不足の自分に遅くまで付き合っていただいて何とお礼を申していいやら‥ 本当に助かりました。 ありがとうございました!!

その他の回答 (4)

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.4

ごめんなさい、間違えました。 to_thunkyou();  ↓ if(!empty($gotopage)) to_thunkyou(); ========================== $gotopage = "$thankyou[$ran]"; if(!empty($gotopage)) to_thunkyou(); function to_thunkyou(){ global $gotopage; print "<HTML><HEAD>"; print "<meta http-equiv =\"refresh\" content=\"0; url=" . $gotopage. "\">"; print "</HEAD></HTML>"; exit; } ========================== この箇所だけですが、こちらで確認しましたが特にエラーは出ませんでした。 単にコピペした場合、そのPHPの改行コードや漢字コードの確認、そしてバックスラッシュだけ打ち直すとかしてみてはどうでしょうか。

mayuchinco
質問者

お礼

回答ありがとうございます。 確かに、サンキューページ関係の箇所だけのファイルだとちゃんと表示されるのですが、元ファイルだと全く同じ記述(、かつ階層も同じ)なのに何故かエラーが出ます。 ●エラー箇所 if(!empty($gotopage)) to_thunkyou(); ●エラー文 Fatal error: Call to undefined function: to_thunkyou() (ちなみに、サンキューページ関係の箇所だけのファイルだと if(!empty($gotopage)) to_thunkyou(); の部分は to_thunkyou(); でもエラーは出ませんでした。) 色々アドバイスを頂いたのに、解決できずに申し訳ありません。。 ただ、すごく勉強になりました。 本当にありがとうございました。

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.3

>>header("Location: $thankyou[$ran]");  これ昔良くハマりました。  このスクリプトの前に print とかがあるとエラーが出ます。これはPHPのセキュリティ仕様です。 ------------------------------------------------ header("Location: $thankyou[$ran]"); exit(); ------------------------------------------------ ↑を以下のと入れ替えるとどうでしょうか。 ここのところはfunctionにして、 $gotopage = ''; $gotopage = "$thankyou[$ran]"; to_thunkyou(); function to_thunkyou(){ global $gotopage; print "<HTML><HEAD>"; print "<meta http-equiv =\"refresh\" content=\"0; url=" . $gotopage. "\">"; print "</HEAD></HTML>"; exit; }  変わらず試していませんが、済みません。

mayuchinco
質問者

お礼

回答ありがとうございます。 入れ替えてみたところ、下記のエラーが出ました。 Fatal error: Call to undefined function: to_thunkyou() in /home/toraya-c/public_html/harituke/harituke.php on line 184 184行目とは to_thunkyou(); の部分です。

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.2

>140行目のエラーについてはまだよく分かりません。 ($title, 'EUC-JP', 'ASCII,JIS,UTF-8,EUC-JP,SJIS') if(!mb_check_encoding($body,'EUC-JP') || mb_check_encoding($body,'ASCII')){   ↓ if( mb_check_encoding($body,'EUC-JP') != true || mb_check_encoding($body,'ASCII') == true){  ではどうでしょうか?試していませんです。  ただ、これだと「$bodyがEUC-JP以外、または、$bodyがASCIIだったら」の意味になり結果的に if( mb_check_encoding($body,'EUC-JP') != true){ の「EUC-JP以外は」と同じになると思われますが。

mayuchinco
質問者

お礼

回答ありがとうございます。 早速書き換えてみましたが、エラーは変わらずでした。

mayuchinco
質問者

補足

すみません。 お礼欄に書いた「エラーは変わらず」というのは勘違いでした。 この補足欄で訂正させていただきます。 140行目のエラーにつきましては、回答していただいた書き換えで解決したようです。 ありがとうございます。 しかし、また新たなエラーが。。 このスクリプトはアンケートに答えたらサンキューページ(ランダム)に飛ぶという設定がしてあるのですが、今のままではアンケートに答えてもサンキューページに飛んでくれません。 以下、サンキューページ関係の箇所 //サンキューページ。半角カンマで区切るとランダムに飛ぶ define(THANKS,"thanks1.html,thanks2.html,thanks3.html"); //サンキューページをランダムに $thankyou = explode(',',THANKS); list($msec,$sec) = split(' ',microtime()); mt_srand($msec*100000); $thcount = count($thankyou) - 1; //サンキューページに飛ぶ $ran = mt_rand(0,$thcount); header("Location: $thankyou[$ran]");   ← exit(); エラーが出ているのは「←」のところです。 ちなみにエラー文は、 Warning: Cannot modify header information - headers already sent by (output started at /home/toraya-c/public_html/harituke/harituke.php:2) in /home/toraya-c/public_html/harituke/harituke.php on line 181 個人的には、サンキューページの表示はランダムでなくて1ページだけでも構わないのですが、 書き換えの方法が分からないのでそのままにしてあります。 勉強不足で大変申し訳ございませんが、 もしお分かりの方いらっしゃいましたら、ご教授願います。

  • Suzi
  • ベストアンサー率38% (130/334)
回答No.1

「$en」が良く分かりませんが、以下のではどうでしょうか。 ($title,'EUC-JP',$en);  ↓ ($title, 'EUC-JP', 'ASCII,JIS,UTF-8,EUC-JP,SJIS') 'ASCII,JIS,UTF-8,EUC-JP,SJIS' を 'auto' にすると上手く変換できない場合があります。

mayuchinco
質問者

お礼

早速の回答どうもありがとうございます! 仰るとおり、変更してみたところ94~96行目のエラーについては解決できました。 しかし、140行目のエラーについてはまだよく分かりません。 ネットで検索したりして、付け焼刃で対応しているもので‥。 ありがとうございました。

関連するQ&A