- ベストアンサー
メールフォーム設置の仕方を教えてください
- CGI初心者の方にもわかりやすく、メールフォームの設置方法を解説します。
- HPのサンプル版から使えるメールフォームを紹介しますが、送信ボタンを押すとエラーになる問題が発生しています。
- OCNを利用している場合は、CGIスクリプトについての説明がオンラインで提供されています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
私もCGIについて、詳しくないのですが・・・まず、jcode.plとSendMail.plがcgiファイルと同じ階層にあるか確認しましょう。コチラからだと存在してないように思います。ファイルへの変更ですが、OCNの説明通りに記述するしかないと思います。シェルスクリプト1と2のあたりを確認ですかね。文法チェッカーも用意されてるみたいなので、これも活用しましょう。なにかヒントをもらえるかも。。。。 CGIの設置は本当に面倒ですね。私の場合、編集しては検証の繰り返しで動作を確認してます。サーバーに負担がかかりますので、ローカルで検証してます。ところで、このCGIスクリプトはご自身で書かれたものでしょうか?それとも、どこかで入手されたものなんでしょうか?後者の場合なら、設置方法など書かれてると思うのですが。。。 Internal Server Error(500エラー)は、cgiが動作しないときに表示されます。.や;を間違って1文字消しただけでも返ってくるエラーです。また、cgiが使用する外部ファイルが存在しないとき、パーミッションが適切な設定になっていないときも吐き出されてきます。 煮詰まらないよう頑張ってください。 http://www.ocn.ne.jp/hosting/usersupport/mw/02.html#cgi http://www.ocn.ne.jp/hosting/usersupport/mw/hp_cgi_05.html http://www.ocn.ne.jp/hosting/usersupport/mailweb/1_a26.html *ご確認済みでしたらお読み捨てを。。。
その他の回答 (2)
- vista2446
- ベストアンサー率46% (131/279)
今度はCGIでお悩みのようですね。「お問い合せ」のページソースでANo.1の指摘されている<form>のパスが違っているようです。cgi-bin/formmail.plが404エラーになります。 ご質問文とからOCNの説明から「cgi-local/contact.cgi」へアクセスしてみたところ、500エラーになりましたので、cgiファイルはこのパスに存在することになります。が、Internal Server Errorですので、HTMLのパスを書き換えてもメールフォームは動作しません。contact.cgiをOCNのサーバーに合わせて編集してください。
補足
vista2446様 2回目の回答ありがとうございます! >contact.cgiをOCNのサーバーに合わせて編集してください。 perlパス、sendmailパスを編集したんですが・・ 後はどこを編集したらいいんでしょうか・・・?
- kappa-pa
- ベストアンサー率49% (101/206)
サイトのそのページのソースを見ると <FORM action="/cgi-bin/formmail.pl" となっていますが cgi-binというフォルダ名、また実行ファイル名formmail.plは正しいのでしょうか。 アップしたファイルとhtmlとを照らし合わせて確認してください。 上のプログラム名はcontact.cgiですよね。 また、OCNの説明を見ると/cgi-bin/フォルダ名でよいのか疑問です。 >4. ブラウザでCGIスクリプトへのパス"http://www.your_domain.co.jp/cgi-local/ファイル名"を直接入力するか、HTMLファイルからのリンクにより起動してください。 設置したいフォームはcontact.cgiだけで完了するプログラムなのか?一連の他のファイルがあるのかこれだけの情報ではわかりません。 セットになっているならすべてのファイルをサーバの指定された場所にあげてやる必要があります。
補足
回答ありがとうございます。 > <FORM action="/cgi-bin/formmail.pl" となっていますが cgi-binというフォルダ名、また実行ファイル名formmail.plは正しいのでしょうか。 FORM action="/cgi-bin/formmail.pl" ↓修正しました FORM action="/cgi-local/contact.cgi" 今度はエラー内容が変わりました。 これは、どういうエラーなのでしょうか・・・? ちなみにプロバイダはOCNですが、私のPCは別プロバイダでアップを行ってますが、それは問題ありませんか? >設置したいフォームはcontact.cgiだけで完了するプログラムなのか? ↓上記に記載しているcontact.cgiの続きです。 ################################################################ # ここから下はプログラムです。変更しないでください。 # use lib "./lib"; require "jcode.pl"; use KCatch qw( jcode=sjis source ); use FormData; require "SendMail.pl"; ##### システム設定 # 文字エンコード $charset = 'sjis'; # フォーム名 @FormName = ( 'name_str_req' # お名前 ,'email_mail_req' # メールアドレス ,'comment_str_req' # 内容 ); # エラー画面用フォーム表示名 %FormData = ( 'name_str_req' =>'お名前' ,'email_mail_req' =>'メールアドレス' ,'comment_str_req' =>'内容' ); #################### # フォームデータ取得 $obj = new FormData(); %in = $obj->CreateHash(); %FormHash = $obj->SelectHash(%in); $mode = $in{'mode'}; #################### # モード分岐 if($mode eq 'comp'){ $body = <<EOF; お名前 : $FormHash{'name_str_req'} E-Mail : $FormHash{'email_mail_req'} 内容 : $FormHash{'comment_str_req'} EOF ## 管理者宛送信 MailSend( $ADMIN_MAIL , $ADMIN_SUBJECT # , $FormHash{'comment_str_req'} , $body , $FormHash{'email_mail_req'} , $ADMIN_NAME , $FormHash{'name_str_req'} , $bcc , $addparam , $charset ); ## ユーザ宛送信 MailSend( $FormHash{'email_mail_req'} , $USER_SUBJECT # , $FormHash{'comment_str_req'} , $body , $ADMIN_MAIL , $FormHash{'name_str_req'}." 様" , $ADMIN_NAME , $bcc , $addparam , $charset ); require "./inc/contact_thanks.inc"; exit; } else { # 確認画面 #################### # フォームデータチェック $flag = $obj->FormDataCheck(\%FormHash,\%FormData,\@FormName); if(!$flag){ $msg = $obj->GetErrorMessage(); require './inc/contact_error.inc'; exit; } #################### require "./inc/contact_conf.inc"; exit; } exit;
補足
contact.cgiをスクリプトチェッカーにかけたところ↓のエラーがでました。 syntax error at /u/web/kataef/cgi-local/contact.cgi line 2, near "(:" /u/web/kataef/cgi-local/contact.cgi had compilation errors. ---------------------------------------------------------- #!/usr/lolal/bin/perl use CGIqw(:cgi-lib :standard); print header(); ---------------------------------------------------------- ↓2行目、:を;にしても試しました。 use CGIqw(;cgi-lib :standard); ----------------------------------------------------------- use CGIqw(:cgi-lib :standard); print header(); ↑この2行はOCNで指定されています。 http://www.ocn.ne.jp/hosting/usersupport/mw/hp_cgi_04.html 記述は間違ってないように思うんですが・・・