アプリ版:「スタンプのみでお礼する」機能のリリースについて

CGIでフォームの入力をチェックした後、データをphp
に送ろうと思います。

今まで使用してた、エラーチェックした後、データを、管理者にメールでデータを送信させるCGIをカスタマイズして、エラーチェックの後に、PHPへデータを送ることは可能なのでしょうか?

どなたか御教授お願いいたします。

以下はエラーチェック後の部分です。

$errNum = chkFormInput();
fixTags();

open HTML, $template or err("$templateが開けません");
@html = <HTML>;
close HTML;

if ($errNum > 0){

# エラーメッセージの先頭のカンマをはずす
$errMsg =~ s/^,//;
$errMsg = "<font color=\"red\">$errMsg (計$errNumヶ所)";
$errMsg .= "に未入力、又は不適当な入力があります。<br></font>\n";
}elsif (sendmail() && stockData()){

$errMsg = "ありがとうございました。以下の内容で$adminName($adminMail)に送信しました。";
}

replaceTags();
showHTML();

exit();

A 回答 (2件)

> (2)CGI側でコマンドラインPHPを利用する。


すいません。これの補足。
PerlのCGIからは、
open(PHPPRG, "php sample.php val1 val2");
close(PHPPRG)
っていう感じに呼び出しをします。

この回答への補足

rara_sunさん

返事がおそくなってしまい申し訳ございませんでした。

結局エラー処理が通った後にLocationでデータを渡すことに致しました。

}elsif (sendmail() && stockData()){
print "Location: ../hoge.php?hoge=$hoge&hoge=$hoge&hoge=$hoge&hoge=$hoge";
この場合フォームのメソッドがGETでしか、処理ができなさそうなのですが、
POSTでも可能なのでしょうか?

補足日時:2003/07/14 14:35
    • good
    • 0

確認環境がないので、できるかどうかわからないのですが、こういうやり方があるのかな~という程度で・・。


もし、ここで有効な情報が得られなかったら、参考に検討してみてください。それまでは無視してくださって決行です。

(1) 呼び出しCGI(Perl)で HTTP通信のモジュールを
利用する。 
  前提: ホームページ提供サイトのPerlがそういうモジュールを提供していること。
  サンプル: http://ash.jp/perl/socket_http.htm
  
  これは、CGIをブラウザとして利用するという考え方です。

(2)CGI側でコマンドラインPHPを利用する。
 
  前提: ホームページ提供サイトでこの実行をサポートしていること。

参考資料&サンプル:
http://php.planetmirror.com/manual/ja/printwn/fe …

  CGIからPHPコマンドを利用してPHPプログラムを実行しようという考え方です。



ほかにうまい方法があればよいのですが・・・
いったんブラウザにHTMLのMETAのRefreshを送りつけるなんて方法も思いついたのですが、エラー処理が大変・・。

ちなみに、そのPHPプログラムの中でメール送信もするんでしょうかね!?データ送信とメール送信どちらが先かわかりませんが、どちらかが失敗したら、もう一方はどうしょりするかも考えないと、不整合がおきますね・・・。
たとえば、メール送信失敗してるのに、データ送信はやっちゃうの?とか・・。

この回答への補足

rara_sunさん

ご説明有難うございます。
初心者なので、詳しい用語とかは、調べながら格闘してます。

質問の補足の説明をいたします。

入力フォーム(HTML)からCGIにデータを受け渡す

CGIで入力のエラー判別、

項目にエラーがある場合再度入力フォームを表示
項目にエラーの無い場合、
データの内容をメールで管理者に送信+データをcsv形式で保存。

以上の一連の作業をするcgiを利用して、
これに追加の機能でデータをphpに送りデータベースに書き込みするという機能も付け加えたいのです。

どういう方法がありますかね?
ちなみにデータベースはmysqlです。
よろしくお願いいたします。

補足日時:2003/07/04 13:10
    • good
    • 0

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