電子書籍の厳選無料作品が豊富!

(http://c-php.mine.nu/)で配布されている「貼り付けアンケート」を設置したところ、以下のようなエラーが出ました。

Warning: mb_convert_encoding(): Illegal character encoding specified in /home/toraya-c/public_html/harituke/harituke.php on line 94
Warning: mb_convert_encoding(): Illegal character encoding specified in /home/toraya-c/public_html/harituke/harituke.php on line 95
Warning: mb_convert_encoding(): Illegal character encoding specified in /home/toraya-c/public_html/harituke/harituke.php on line 96
Fatal error: Call to undefined function: mb_check_encoding() in /home/toraya-c/public_html/harituke/harituke.php on line 140

エンコードがうまくいってないようなのですが。。
指定の行数の記述は以下です。

$title = mb_convert_encoding($title,'EUC-JP',$en);
$body = mb_convert_encoding($body,'EUC-JP',$en);
$quest = mb_convert_encoding($quest,'EUC-JP',$en);
if(!mb_check_encoding($body,'EUC-JP') || mb_check_encoding($body,'ASCII')){

配布されているものを特に変えず(設定部分以外)、そのままupしたつもりですが、エラーの原因がわかりません。
当方、php初心者なので的外れな質問でしたら申し訳ございませんが、よろしくお願いします。

A 回答 (5件)

それでしたら、以下のはどうでしょうか。



$gotopage = '';
$gotopage = "$thankyou[$ran]";
if(!empty($gotopage)){
print "<HTML><HEAD>";
print "<meta http-equiv =\"refresh\" content=\"0; url=" . $gotopage. "\">";
print "</HEAD></HTML>";
exit;
}
    • good
    • 0
この回答へのお礼

ちゃんと表示されるようになりました!
素晴らしいです。

勉強不足の自分に遅くまで付き合っていただいて何とお礼を申していいやら‥
本当に助かりました。
ありがとうございました!!

お礼日時:2008/09/08 02:32

ごめんなさい、間違えました。



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の改行コードや漢字コードの確認、そしてバックスラッシュだけ打ち直すとかしてみてはどうでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
確かに、サンキューページ関係の箇所だけのファイルだとちゃんと表示されるのですが、元ファイルだと全く同じ記述(、かつ階層も同じ)なのに何故かエラーが出ます。

●エラー箇所
if(!empty($gotopage)) to_thunkyou();
●エラー文
Fatal error: Call to undefined function: to_thunkyou()

(ちなみに、サンキューページ関係の箇所だけのファイルだと
if(!empty($gotopage)) to_thunkyou();
の部分は
to_thunkyou();
でもエラーは出ませんでした。)

色々アドバイスを頂いたのに、解決できずに申し訳ありません。。
ただ、すごく勉強になりました。
本当にありがとうございました。

お礼日時:2008/09/08 00:00

>>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;
}

 変わらず試していませんが、済みません。
    • good
    • 0
この回答へのお礼

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

184行目とは
to_thunkyou();
の部分です。

お礼日時:2008/09/06 16:38

>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以外は」と同じになると思われますが。

この回答への補足

すみません。
お礼欄に書いた「エラーは変わらず」というのは勘違いでした。
この補足欄で訂正させていただきます。

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ページだけでも構わないのですが、
書き換えの方法が分からないのでそのままにしてあります。

勉強不足で大変申し訳ございませんが、
もしお分かりの方いらっしゃいましたら、ご教授願います。

補足日時:2008/09/06 15:23
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/09/06 15:11

「$en」が良く分かりませんが、以下のではどうでしょうか。



($title,'EUC-JP',$en);
 ↓
($title, 'EUC-JP', 'ASCII,JIS,UTF-8,EUC-JP,SJIS')

'ASCII,JIS,UTF-8,EUC-JP,SJIS' を 'auto' にすると上手く変換できない場合があります。
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2008/09/06 13:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!