• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メール送信フォームがサーバの引越し後エラーが出てしまいます)

メール送信フォームがサーバの引越し後エラーが出る理由

このQ&Aのポイント
  • サーバを引越ししたところ、問い合わせフォームがエラーが出るようになりました。
  • 引越前のサーバと引越後のサーバでPHPバージョンが異なるため、エラーが発生しています。
  • 問題のファイル(funcEx.php)を確認すると、foreach()関数の引数に無効な値が渡されたことが原因でエラーが発生しています。

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

  • ベストアンサー
回答No.3

すみません、うっかりしてました 4.0.6 → 4.3.2 ではなく 4.3.2 → 4.0.6 のバージョンダウンなのですね。 //フォームデータの受け取り $vars = encodeFormValues( $_POST ); ↑この部分を ↓このように変えてみてください //フォームデータの受け取り $vars = encodeFormValues( $HTTP_POST_VARS )

happa88
質問者

お礼

できました! 無事解決しました。 質問するほうも無知でやりづらかったと思いますが本当に助かりました。 ありがとうございました☆

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

まだ少しわかりませんね。 encodeFormValues 関数が呼び出されている場所はわかりますでしょうか? あと $HTTP_POST_VARS か $HTTP_GET_VARS という変数を探してみてください。もし見つかったらそれぞれ $_POST および $_GET と書き換えてみてください。 この環境変数の参照部分は PHP4.1.0 以降の変更点ですからこれが原因の可能性が高いです。

happa88
質問者

補足

$HTTP_POST~はindex、funcEx、CFile、vars(送信メールアドレス等の設定ファイル)の中には見つかりませんでした。 以下はindex.phpの初めのphpの部分です。都道府県の選択肢は文字数の関係で削りました。 <?php require_once( "./lib/funcEx.php" ); require_once( "./lib/CFile.php" ); //変数の宣言 $prefectures = array( "都道府県", "北海道", "青森県", "岩手県", "宮城県", "秋田県", "山形県", "福島県" ); //フォームデータの受け取り $vars = encodeFormValues( $_POST ); //確認ボタンが押されたら if( $vars['mode'] == "check" ){ //入力データチェック $err_msg = input_chk( $vars ); if( $err_msg == "" ){ //エラーが合った場合 require_once( "./confirm.php" ); exit; } }elseif( $vars['mode'] == "reset" ){ //入力データクリア $vars['name1'] = ""; $vars['name2'] = ""; $vars['symbol1'] = ""; $vars['symbol2'] = ""; $vars['company'] = ""; $vars['office'] = ""; $vars['question'] = ""; $vars['mail'] = ""; $vars['tell1'] = ""; $vars['tell2'] = ""; $vars['tell3'] = ""; $vars['city'] = ""; $vars['building'] = ""; $vars['home_num'] = ""; $vars['post_num1'] = ""; $vars['post_num2'] = ""; $vars['prefe'] = "0"; $vars['note_data'] = 0; } ?>

すると、全ての回答が全文表示されます。
回答No.1

エラーの原因は $data が配列ではないからですね。 関数 encodeFormValues( $data ) が呼び出される前の部分で変数 $data がどのように生成されているか見せて頂けませんか? おそらく環境変数の受け取りで何か問題があるのだとおもいます。

happa88
質問者

補足

saintandre様、早速の返答ありがとうございます。 $dataの生成は「$data=xx」の部分でよいのでしょうか?そちらですとCFile.phpというファイルに入っていました。CFile.phpの該当部分をお送りします。 文字数の関係でファイル全部を掲載できませんがそちらも必要でしょうか? ☆CFile.php --------------- $this->ww_buf = ""; $data = array(); $str = array(); if( is_array( $this->w_buf ) ){ foreach( $this->w_buf as $key1 => $value1 ){ if( is_array( $value1) ){ foreach( $value1 as $key2 => $value2 ){ if( $code_flag == true ){ $str[] = $this->str_decode( $value2 ); }else{ $str[] = $this->str_encode( $value2 ); } } } $this->ww_buf .= '"' . join( '","', $str ) . '"' . "\n"; $str = ""; } }else{ errorEx( "書き込みデータが配列ではありません" ); } }

すると、全ての回答が全文表示されます。

関連するQ&A