• 締切済み

php5のフォーム

サーバーの仕様が変わってフォームが動かなくなって困っています。 現在のフォームはphp4で、仕様はphp5にしか対応しなくなったということです。 古いコードが使われているからだとは思いますが、 全くの初心者の私には何をどう書き換えたらいいのかさっぱりで、質問に至った次第であります。 現在の状況を説明しますと、フォームに内容を入力して、 エラー画面、確認画面まではしっかり動くのですが、 ”この内容で送信する”ボタンで 問い合わせフォーム真っ白になってしまいます。 ソースは以下です。 ・mail.php========================= <? include_once "func.php"; include_once "mail.pear.php"; class MainClass{ function MainClass(){ switch( $_REQUEST['type'] ){ case "step1": if( $this->Chk_Input() ){ $_REQUEST['act'] = ""; break; } break; //メール送信 case "step2": // 管理者にメール送信 $msg = "お問い合わせフォームより以下の内容が送信されました。\n\n" ."内容をご確認の上、ご担当者様へご連絡をお願いいたします。\n\n\n" ."お名前 : ".$_POST['name']."\n" ."メールアドレス : ".$_POST['mail_ad']."\n" ."お問い合わせ内容 : ".$_POST['other']."\n"; new MailSendByMTA( "**@**.jp" , "**@**.jp" , "【お問い合わせ内容】" , $msg , "" , 0 ); // 登録者にメール送信 $msg = "".$_POST['name']." 様\n\n" ."このたびは「お問い合わせ」をいただき、誠にありがとうございます。\n" ."お問い合わせ内容をご確認ください。弊社スタッフより改めてご連絡いたします。\n\n" ."お名前 : ".$_POST['name']."\n" ."メールアドレス : ".$_POST['mail_ad']."\n" ."お問い合わせ内容 : ".$_POST['other']."\n\n\n\n" ."(株)******\n\n" ."〒111-1111 **県**市****123-456\n" ."電話:000-000-0000 FAX:000-000-0000\n"; new MailSendByMTA( "**@**.jp" , $_POST['mail_ad'] ,"【お問い合わせ内容】" , $msg , "" , 0 ); pageJump( $_SERVER['PHP_SELF']."?act=step2" ); break; } switch( $_REQUEST['act'] ){ case "step1": include_once "review.html.php"; break; case "step2": include_once "thanks.html.php"; break; default: include_once "form.html.php"; } } function Chk_Input(){ if( chkErr_Func( $_POST['name'],0 ) ){ $this->errTxt .= "お名前を入力して下さい。<BR>"; } if( chkErr_Func( $_POST['mail_ad'],0 ) ){ $this->errTxt .= "メールアドレスを入力してください。<BR>"; } else{ if( chkErr_Func( $_POST['mail_ad'],3 ) ){ $this->errTxt .= "メールアドレスに誤りがないかご確認下さい。<BR>"; } else{ if( $_POST['mail_ad'] != $_POST['mail_ad2'] ){ $this->errTxt .= "メールアドレス入力確認の内容がメールアドレスの内容と異なっています。<BR>"; } } } if( chkErr_Func( $_POST['other'],0 ) ){ $this->errTxt .= "お問い合わせ内容を入力してください。<BR>"; } return ( $this->errTxt != "" ) ? true : false; } } new MainClass(); ?> 長々とすいませんが、ご教授ください。 お願い致します。

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.3

どこのレンタルサーバーをお使いなのでしょうか? そこのヘルプに、phpの設定変更法は書いてありませんか? php.iniをいじらせないところなら、.htaccessで変更するか、phpプログラムの先頭で ini_set() 関数を使うかなのですけど、設定できる項目と出来ない項目があります。 その情報は、お使いのサーバーホームページ内に説明が在るはずです。

skipper3
質問者

補足

お返事ありがとうございます。 ファーストサーバを使用しております。 http://www.fsv.jp/ 共有サーバーのウルトラビジネス2というサービスを契約しております。 特に設定方法はありませんでした。 サーバ側で無料のフォームのcgiは配っていて、 そちらの設置方法は記載されているようなのですが、 こちらで用意したphpなどの具体的な設置例というのは無いようです、

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

エラーが無いんじゃなくて、画面出力する設定になってないだけなのでは? php5では、セキュリティ向上のためdefaultではエラーは画面出力しません。 また、エラーログ用のファイル名も入ってないので、php.iniの設定で、 log_errors = On; と error_log = err_filename.log; のような指定しておくのがベストです。 エラー用ファイル名を指定すると実行ファイルと同じディレクトリにエラーファイルが作成されます。

skipper3
質問者

補足

ご回答ありがとうございます。 >log_errors = On; と error_log = err_filename.log; のような指定しておくのがベストです。 php.iniというファイルは存在しませんが、 これは新たに作るものなのでしょうか? それともこのmeil.phpに書き込んでいいのでしょうか? 質問が初歩的ですいません。 宜しくお願いします。

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

php4とか5の違いから来るものでは無いかと思われます form.html.php の場所はあっていますか? とりあえず、mail.phpのソースのあたまに <?php error_reporting(E_ALL); ~~~~中略~~ ?> とかいてください 何かエラーかなにかが表示されるかもしれません あと、ソースとhtmlをごちゃ混ぜにし、1メソッドで何行もだらだら書くとclass使っている意味まるでなしですよ・・・

skipper3
質問者

補足

ご回答ありがとうございます。 >form.html.php >の場所はあっていますか はい、こちらあっています。 <?php error_reporting(E_ALL); を頭につけましたが、 この内容で送信ボタンを押した後の画面は真っ白のままでした。 >あと、ソースとhtmlをごちゃ混ぜにし、1メソッドで何行もだらだら書くとclass使っている意味まるでなしですよ・・・ ご指摘ありがとうございます。 勉強になります。 ここにエラーは無いとすると、 メール送信時にエラーがあるのでしょうか?