![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
他のご質問読んでもわからなくて笑
CGIの知識は、書いてあるとおりに設定を変えたりhtmlとか書き出すところの内容変えたり…いらないところに#を付けて、うごくかなぁってドキドキしている程度です(笑)わかりにく。
今回は、まず、キリ番のCGI-Aがあります。そのCGI-Aはキリ番GETしたら登録formが出てきます。登録があったらメールが管理人宛てにくるんです、その時、変数で、フォームで書いてもらった内容+その人の取ったカウント数・時間・エージェント・HOSTが、一緒に記載されてきます。
CGIではこんな感じ↓
print MAIL "時間 : $adate\n";
print MAIL "ホスト: $ahost\n";
print MAIL "使用PC: $kuag\n";
print MAIL "名前 : $aname\n";
print MAIL "カウント : $acount\n";
print MAIL "メール: $email\n";
ってちゃんと送られてきます。
で、この変数なんですが、同ディレクトリにあるメールフォームのCGI-Bに渡して(CGI-Aで登録したら必ずCGI-Bにくると)、CGI-Bが送るメールにも乗せたいのです。CGI-Bのなかのメールの雛型?の部分に
ここです↓
#メール内容
$body.="取得時間 : $adate\n";
$body.="ホスト : $ahost\n";
$body.="使用PC : $auag\n";
$body.="メール : $email\n";
$body.="内容 : $nowdate\n";
内容ってのはCGI-Bのメールフォームに書いてもらったことを表示します。でその上の4つなんですが、それがCGI-Aの変数で、これをCGI-Bのメールに一緒に送らせたいわけです。
そこで、CGI-Aの変数をCGI-Bに持ってくるにはどうするか、素人なりに考えて
#キリ番からの情報取得
require "./CGI-A.cgi";
とか考えて書いてみて、やったんですが、見事に失敗しました。どうすれば変数だけをわたせますか?教えてください。
不適切な表現とかありましたら勘弁してください。
補足など、待ってます。
No.4ベストアンサー
- 回答日時:
#2です
>ごめんなさい・・・わかるようでまったくわかりません(笑)
のようですので、ピンとくるところがなかったようですね。
それにプログラムの修正個所を完全に書いた訳ではないでの
コピペしても全く動かないです。
で、別の方法です。
質問者さんのしたいことは、
従来のcgi-aの処理のあと(メールを送った後)
cgi-bでやっているメール送信も行いたい。
ですよね。
cgi-bの中で、実際にメールを送っている処理部分はどこか解りますか?
その部分をcgi-aに継ぎ足すのはどうでしょう。
当然、送る内容は変数から作っていますから
これにcgi-aの変数をコピーするなり、新たに値を設定してください。
すなわち
$body.="取得時間 : $adate\n";
$body.="ホスト : $ahost\n";
$body.="使用PC : $auag\n";
$body.="メール : $email\n";
$body.="内容 : $nowdate\n";
の、$adateや、$ahostなどの変数のこと。
cgi-aに継ぎ足す際に、メールを送る処理以外を含めると
正しく動作しない可能性が高いです。
ですから、「この1行は何をしている?」がある程度
理解できないとやっぱり難しいです。
No.3
- 回答日時:
既に回答はでていますが、ちょっと趣向を変えて・・・
メインルーチンとサブルーチンを別ファイルとして分けるPerlの手法。
(その他、設定ルーチンと処理ルーチンという分け方もありかな?)
[main.plファイル]
require './sub.pl';
$str = 'abc';
&disp;
exit;
[sub.plファイル]
return(1); #1を返す位置がミソ
sub disp {
print $str;
return;
}
No.2
- 回答日時:
#1さんのでかなり正解に近い気がします。
あたかも、cgi-b側のフォームから値が設定されたようにQUERY_STRINGに
設定すれば、cgi-b側の変更は最小限でできます。
しかし、ちょっと考慮すべきことがあって、知らない人では少々難しいです。
(ほんのちょっとしたことですが)
で、別の方法です。
requireでcgi-bを実行することを考えると、変数とその値はそのまま使えますから、
cgi-a側は
$renraku_flag=1;
$auag = $kuag;
$nowdate = "内容の文字" #他同じ名前の変数は改めてする必要なし
require "./CGI-B.cgi";
とします。
cgi-b側では、フォームのデータを読むところで
if($renraku_flag == 0) {
従来のフォームデータを読む処理
(ここに、$adate = xxxといった処理がくるはず)
}
とすれば、$renraku_flag=1の時はフォームから
読まずに、渡ってきた変数をそのまま処理するようにできるはずです。
ただし、requireで行うと
フォーム関係以外でもcgi-aとcgi-bで同じ変数名を使っている場合、
cgi-bにとって、本来初期値と違った値で処理が始まりますので、
結構まずいところがあるかも。
この回答への補足
ごめんなさい・・・わかるようでまったくわかりません(笑)
$nowdateってのはCGI-Bのアンケートフォームの内容を表示する変数で、それをCGI-Aに書くのは何ででしょうか?
ついでに、CGI-AのフォームとCGI-Bのフォームは全く別物で、Aの場合はそのフォームはCGIで出力?されるのに対してCGI-Bのフォームは別にb-foam.htmlというのを作っときます。です。はい。requireでAにBを読み込んで、あってるのでしょうか、というか、俺の説明へたくそ…
Aの変数をBに渡して、BはAの変数の結果と一緒にB-foam.htmlのデータをメールでおくってくれる・・・う~ん、説明が難しい(笑)すいません、劇初心者で・・・(ノ_・。)
とりあえず、それ、コピペして書いて動かしてみます。
で、
$nowdate = "内容の文字" #他同じ名前の変数は改めてする必要なし
って、なんすか?"内容の文字"とは・・・
No.1
- 回答日時:
ちょっとご質問の意味がよく分かりませんが、cgi_aで一定の条件を満たした場合、その情報をつかってcgi_bを呼び出せば良いのですよね?
#cgi_a
$ENV{'QUERY_STRING'} = " $adate = $adate_a ・・・
require "./CGI-B.cgi";
って感じで、環境変数にセットして渡せは良いのではないですか?
私もあまり詳しくないのですが・・・
この回答への補足
>cgi_aで一定の条件を満たした場合、その情報をつかってcgi_bを呼び出せば良いのですよね?
呼び出すって言うか・・・cgi-Bのメールフォームに書いてもらって送信するときにCGI-Aのその情報を一緒にCGI-Bから送ってほしいという。Aに行ったら必ずBにくるようにしてあるんで。変数は確実にわたるかなって・・・
むりなんですかね・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
- CGI CGIが読み書きするデータファイルのパーミッションはさくらのインターネットでは何にするべき? 1 2023/05/02 16:44
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- Perl perlの構文でカンマの意味が分からない 2 2022/10/30 01:53
- CGI 「CGIにより定義されていない」とは・・・ ? 3 2023/01/01 12:00
- CGI htmlからcgiを自動的に起動させたい 1 2023/02/21 19:39
- その他(ネットショッピング・通販・ECサイト) 11月1日に中国サイトで品物を購入しました私は何度もメールしていて4日に発送するとメールがあり5日の 6 2022/11/08 10:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
cgiで拡張子.cgiと拡張子.pl...
-
CGI1からCGI2への変数の受け...
-
アップロードされてきた画像フ...
-
週2回のペースって だいたい何...
-
月の第一週とは
-
apacheでPerl CGIが作動せず、5...
-
よくある 『 第○(1・2・3・4・...
-
日本語問題 昨日は何曜日ですか...
-
DBを10件毎に表示ページング...
-
jcode.plが読み込めない
-
毎週同じ曜日にラブホに行くと...
-
今週とは何曜日から何曜日まで...
-
Excel関数で当月の第一日曜日の...
-
[Excel] ある日の曜日が当月の"...
-
VBA。複数のChangeイベントをま...
-
教えて下さい
-
曜日ごとの集計をしたい
-
アンケートなどの1日1回の投...
-
PDFJが動作しない
-
土曜日の26時って何曜日の何時...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
cgiで拡張子.cgiと拡張子.pl...
-
<form method="post" action="...
-
PerlのCGIでフォームのテキスト...
-
ファイル名の抜き出しについて
-
VBでcgiを動作させるには
-
コマンドラインから、abc.cgi?...
-
cgiから別のcgiへの変数...
-
CGI.pmとcgi-lib.plの差異につ...
-
知恵熱出そうです・・・;
-
CGIから別のCGIへPostするには?
-
c言語とperlのcgi設定方法
-
アップロードされてきた画像フ...
-
月の第一週とは
-
6月の第2 第4火曜日は何日...
-
よくある 『 第○(1・2・3・4・...
-
DBを10件毎に表示ページング...
-
エクセルで毎月第2週日の水曜日...
-
[Excel] ある日の曜日が当月の"...
-
週2回のペースって だいたい何...
-
毎○曜日って、使いますか?
おすすめ情報