フォームを多数のページに貼り付けて使用したいと思っております。そして送信先で、それぞれのメールがどのページから発信されたものか確認したいと考えております。フォームをページに貼り付けるだけで(そのページのURLをいちいちソースに記載しなくても)そのURLが自動的にメールに添付記載されるような方法はありますでしょうか。iモード用HPなのでJavaScriptなどは利用できません。ご存知の方がいらっしゃいましたらご教授いただけると大変ありがたいです。よろしくお願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんな感じです。



print "Content-type: text/html\n\n";
print "<HTML><BODY>";
$fname = $ENV{'SCRIPT_FILENAME'};
print "<FORM METHOD=\"GET\" ACTION=\"get.cgi\">";
print "<INPUT TYPE=\"HIDDEN\" NAME=\"URL\" VALUE=\"$fname\">\n";
print "<INPUT TYPE=\"SUBMIT\" VALUE=\"送信\">";
print "</FORM>";
print "</BODY></HTML>\n";

細かい事は書籍等でお調べ下さい。
    • good
    • 0
この回答へのお礼

本当に助かりました。繰り返しご教授いただき、大変感謝しております。有難うございました。

お礼日時:2001/12/15 01:22

CGIはどこまで理解されているでしょうか?



参考までに

http://tohoho.wakusei.ne.jp/wwwcgi.htm
http://www.rfs.co.jp/sitebuilder/perl/

この回答への補足

誤字脱字、申し訳ありませんでした。
ありがとうございます。添付いただいたURLにて、勉強させて頂いております。

補足日時:2001/12/13 02:36
    • good
    • 0
この回答へのお礼

ご連絡いただき真に有難うございます(また、URLを添付していただき有難うございました。)当方、恥ずかしながら既存のサンプルCGIを一部改変して使わせていただく程度の知識しかございません。
例えば現在しているフォームは

&ReadParse(*in);

$subject = "$in{'subject'}";
$to = '**@**.com';

#送信前処理
&jcode'convert(*subject,'jis');

# 送信処理
open(MAIL, "| /usr/sbin/sendmail -t");
print MAIL "To: $to\n";
print MAIL "Subject: $subject\n";
print MAIL "Content-Type: text/plain;\n\n";
close(MAIL);

print "Content-type: text/html\n\n";
print "<HTML><BODY>クリックしてください\n";
print "<HR><A HREF=***>****</A>\n";
print "</BODY></HTML>\n";
exit;

といった簡単なものなのですが、例えばこのようなフォームで(先刻教えていただきました)SCRIPT_FILENAMEを利用させていただくことは可能でしょうか。大変恐縮ですがもしも可能でしたらご教授いただけると大変ありがたく存じます。再三にわたり真に申し訳ありませんが、失礼をお許しください。

お礼日時:2001/12/12 19:46

フォームを表示するページ自体をCGIなどで記述する事で可能となります。


CGIの環境変数”SCRIPT_FILENAME”で、現在実行(表示)しているファイルの名前をえる事が出来るので、


$fname = $ENV{'SCRIPT_FILENAME'};
print "<INPUT TYPE=\"HIDDEN\" NAME=\"URL\" VALUE=\"$fname\">\n";

とすれば、実現できます。
    • good
    • 0
この回答へのお礼

投稿は初めてなのですが、とても丁寧にご教授いただき、驚きと共に大変感謝しております。ところで実は、大変恐縮なのですが、頂きましたアドバイスを元に、詳細を調べようと努力してはみたのですが、当方の勉強不足により、なかなか思うように進みません。つきましては「フォームを表示するページ自体をCGIなどで記述する」方法につきましてなにか参考になるサンプルなどをご存知でしたら教えていただけないでしょうか。(基本的なことかもしれず大変恐縮ですが・・、またお忙しいところすみませんが)もしも可能でしたらお願い申し上げます。

お礼日時:2001/12/11 23:54

メールというのが何を意味しているのかよくわかりませんが、フォームから送信されるデータだと解釈します。


iモードで出来るかどうかわかりませんし、またサーバー側の設定にもよりますが、CGIでHTTP_REFERER環境変数に送信元フォームのURLが取得できると思います。
    • good
    • 0
この回答へのお礼

投稿は初めてなのですが、思いのほか早くご教授いただき、驚きと共に大変感謝しております。CGI初心者のため、教えていただきましたHTTP_REFERERを実際に使用できるか若干の不安もございますが、がんばってみたいと思います(もしもサンプルなどご存知でしたら、教えていただけると大変ありがたいです)本当に有難うございました。

お礼日時:2001/12/11 20:31

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

このQ&Aと関連する良く見られている質問

Qアンケートフォーム複数ページ間のテキストフォームデータのの受け渡し

こんにちわ、1ページ目の名前のテキストフォームに入力した内容のデータと2ページ目のメールアドレスのテキストフォームに入力したデータをのデータを確認画面で表示させたいのですがうまくできません。わらをもすがる思いでここに書きました。
1ページ目
名前を入力
2ページ目
メールアドレスを入力
3ページ目
確認画面
4ページ目
サンクスページ

わたしが書いたソースは以下のとおりです。。
どうしてもデータをうまく確認画面にもっていくことができませんよろしければ詳しい方、アドバイスをお願いいたします。よろしくお願いします!
※ここの文字数制限が800文字なのでかなり省略化しています。

if ($FORM{'action'} eq "page2") {&page2;}
elsif ($FORM{'action'} eq "") {&page1;}
elsif ($FORM{'action'} eq "kakunin") {&kakunin;}
elsif ($FORM{'action'} eq "kanryou") {&kanryou;}
#1ページ目
sub page1{
print <<"EOF";
Content-type: text/html
<html>
<head>
<meta content="text/html; charset=shift_jis">
</head>
<body>
<form method="post" action="$script">
□お名前(漢字)<br>
<input type="text" size="12" name="name1" value="$FORM{'name1'}" >
<input type="hidden" name="name1" value="$name1">
<input type="hidden" name="action" value="page2">
<input type="submit" value="次へ">
</form>
</body>
</html>
EOF
exit;
}
#2ページ目
sub page2{
文字数制限のため省略
メールアドレス
}
#■フォームのデコード処理
sub decode{
文字数制限のため省略
}
#確認画面
sub kakunin{
文字数制限のため省略
}
#送信完了画面
sub kanryou{
文字数制限のため省略
}

こんにちわ、1ページ目の名前のテキストフォームに入力した内容のデータと2ページ目のメールアドレスのテキストフォームに入力したデータをのデータを確認画面で表示させたいのですがうまくできません。わらをもすがる思いでここに書きました。
1ページ目
名前を入力
2ページ目
メールアドレスを入力
3ページ目
確認画面
4ページ目
サンクスページ

わたしが書いたソースは以下のとおりです。。
どうしてもデータをうまく確認画面にもっていくことができませんよろしければ詳しい方、アドバイスをお願...続きを読む

Aベストアンサー

print <<"EOF";
Content-type: text/html
の後に空の改行が必要です
それと$FORM{ }ですがちゃんとform parseしてるでしょうか
時々<form>からの値が自動的に$FORM{ }に入ると勘違いしている人がいますがPerlでは自分でやらないといけません。PHPならこの辺は自動でやってくれるので便利なのですが。

Qフォームに入力した情報をそのフォームに反映するには?

http://f29.aaa.livedoor.jp/~unyu/joban/unyu.cgi?line=oer1000
上記のサイトのように、情報をフォームに入力し投稿ボタンを押すと入力したフォームに反映/保存され、その情報を他の人も変更(投稿)/回覧できるようにするにはどのようにすればよいのでしょうか?
CGI/perlなどを探し、掲示板のプログラムを改造したりしましたが分かりません。回答お願いします。

Aベストアンサー

こんなのはどうでしょうか。
我流プログラマなので、おかしかったら読み飛ばして下さい。

考え方はhtmlをcgiでデータ部分を書き換えて書き出す方法です。
test.htmlの、$~$で囲まれた部分を、cgiが書き換えます。
selectedの部分は、あるデータがある値のとき、$selected_データ名=値$ を'selected'に書き換えます。
checkedの部分は、$checked_データ名=値$ を'checked'に書き換えます。
ファイルの読み書きで、改行を\nにしてます。
言葉で説明するのが難しいので、プログラムを見てください。

下のtest.htmlと、test.cgiと、空のtest.datを用意してください。
test.cgiは、パーミッションを705(か755)にしてください。
#!/usr/bin/perlの部分は適当に書き換えてください。
test.datは、パーミッションを606(か666)にしてください。
perl5.8の標準モジュールCGIを使ってます。
perl5.6とかなら、cgi.pmをインクルードしてください。

--- test.html ここから ---
<form action="./test.cgi" method="post">
data1:<input type="text" name="data1" value="$data1$"><br>
data2:<input type="text" name="data2" value="$data2$"><br>
data3:<textarea name="data3">$data3$</textarea><br>
data4:<select name="data4">
<option value="" $selected_data4=$>選んでね
<option value="1" $selected_data4=1$>その1
<option value="2" $selected_data4=2$>その2
</select><br>
data5:<input type="checkbox" name="data5" value="1" $checked_data5=1$><br>
data6:
<input type="radio" name="data6" value="1" $checked_data6=1$>aaa
<input type="radio" name="data6" value="2" $checked_data6=2$>bbb<br>
<input type="submit" name="regist" value="登録">
</form></form>
--- test.html ここまで ---

--- test.cgi ここから ---
#!/usr/bin/perl

use strict;
use CGI::Carp qw(fatalsToBrowser);
use CGI;

my $query = new CGI;
print $query->header(-charset=>'Shift_JIS');

my %data;

if(defined $query->param('regist')){
#データの登録
$data{data1}=$query->param('data1');
$data{data2}=$query->param('data2');
$data{data3}=$query->param('data3');
$data{data4}=$query->param('data4');
$data{data5}=$query->param('data5');
$data{data6}=$query->param('data6');
#改行変更
foreach my $key(keys %data){$data{$key}=~s/\n/\\n/g}
#データ書き出し
open(OUT,'>./test.dat');
print OUT join("\n",%data)."\n";
close(OUT);
}

#フォーム読込み
open(IN,'./test.html');
my $form=join("\n",<IN>);
close(IN);

#データ読み込み
open(IN,'./test.dat');
%data=grep(chomp,<IN>);
close(IN);

#改行変更
foreach my $key(keys %data){$data{$key}=~s/\\n/\n/g}

#selectedデータ作成(select)
$data{'selected_data4='.$data{data4}}='selected';

#checkedデータ作成(checkboxとradio)
$data{'checked_data5='.$data{data5}}='checked';
$data{'checked_data6='.$data{data6}}='checked';

#フォームへデータ書き込み
$form=~s/\$(.+?)\$/$data{$1}/g;

#フォーム表示
print $form;
exit;
--- test.cgi ここまで ---

こんなのはどうでしょうか。
我流プログラマなので、おかしかったら読み飛ばして下さい。

考え方はhtmlをcgiでデータ部分を書き換えて書き出す方法です。
test.htmlの、$~$で囲まれた部分を、cgiが書き換えます。
selectedの部分は、あるデータがある値のとき、$selected_データ名=値$ を'selected'に書き換えます。
checkedの部分は、$checked_データ名=値$ を'checked'に書き換えます。
ファイルの読み書きで、改行を\nにしてます。
言葉で説明するのが難しいので、プログラムを見てください。

下...続きを読む

QブラウザのURLをコピーし.cgiファイルに貼り付けるとエラーがでます。

長いURLが必要なときに間違い防止のために、ブラウザのURLをコピーして、.cgiファイルに貼り付けるとエラーが出る現象はございますでしょうか?方法としてやってはいけないことなのでしょうか?教えてください。

Aベストアンサー

パターンマッチの事かな?だとしたら
#1さんのいわれるやり方もありますが
=~//; は
=~m||; と言う書き方も出来ます
=~s///; は
=~s|||; とも書けます
また . (ドット) や ? は正規表現で別の意味が生じてしまうのでそれを抑制するためには文字列の前に\Qを入れます。
参考例:
$u='http://oshiete1.goo.ne.jp/kotaeru.php3?q=2052204';
$u =~m|\Qhttp://oshiete1.goo.ne.jp/|;
print "\$&=$& \$u=$u<P>\n";
$u =~s|\Qhttp://oshiete1.goo.ne.jp/||;
print "\$&=$& \$u=$u";

参考URL:http://www.rfs.jp/sb/perl/02/09.html

Qフォーム送信とURLエンコードについて

CGI&PHP初心者です。
フォームのデータ送信とURLエンコードについて、お尋ねします。

method="GET" のフォームで、検索フォームをつくりたいとおもっています。
日本語も含めた検索語をフォーム送信したいと考えていますが、
送信の結果、エンコードされずにそのままブラウザのURL欄に入力した日本語が表示されてしまいます。
(ただ、メモ帳などにURLをコピーペーストするとURLエンコードがされているようです。)

googleでは検索結果のアドレス欄にURLエンコードされた文字列がでているが、
同じように検索結果のアドレス欄にはURLエンコードされた文字列をだしたい。
URLに日本語をださずにURLエンコードさせた文字列を表示させるには、
どうすればいいのでしょうか?

補足:できるかぎり検索処理が重くならないにしたいと思います。
    開発環境PHP&MySQL
    動作環境Chrome のバージョン 38.0

Aベストアンサー

これはブラウザの機能です。
フォームで入力された文字は、URLエンコードされた状態でサーバーに送信され、サーバーはそれを元の文字列に戻して処理し、その結果を表示しますが、URL欄には
・firefoxは元の文字
・IEはエンコードされたもの
・Chromeはエンコードされたもの
・Operaは表示されない
・Safariは元の文字
 これは当然でしてURL欄には送信した時点のURLが表示され、それをどのように表示するかはブラウザ開発側のスタンスによります。
 URLエンコードされた文字よりは本来のキーワードが表示されるほうが便利だと思いますが???
 PATH_INFOを使用するWikiなどでは実感されるかと
ブラウザ - Wikipedia( http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6 )
 どうせ、Ctrl + L → Ctrl + C でコピーすればよいし、firefoxならMaikeLinkアドオン使うし・・

※方法はあります。
 一旦、redirectするページを表示させてから、本来のページにリダイレクトさせる。その場合もブラウザの機能で元の文字列に返すことがあるかも

これはブラウザの機能です。
フォームで入力された文字は、URLエンコードされた状態でサーバーに送信され、サーバーはそれを元の文字列に戻して処理し、その結果を表示しますが、URL欄には
・firefoxは元の文字
・IEはエンコードされたもの
・Chromeはエンコードされたもの
・Operaは表示されない
・Safariは元の文字
 これは当然でしてURL欄には送信した時点のURLが表示され、それをどのように表示するかはブラウザ開発側のスタンスによります。
 URLエンコードされた文字よりは本来のキーワードが表示されるほ...続きを読む

QCGIフォームにURL内の値を引き継ぐ方法

超初心者です。

あるページ(P1)から「エントリー」ボタンをクリックさせて、
フォームページ(P2)を開かせるところまではできました。

P1:http://www.test.com/index.cgi?id=12345
  ↓「エントリー」ボタンをクリック
P2:http://www.test.com/entry.html?EntryNo=12345

ところが、URLにある値「12345」をフォーム内に入れ込むことができません。
どなたか助けていただける方はいませんでしょうか?

http://www.test.com/entry.html?EntryNo=12345
のform部分は↓です。
<form method="POST" action="entry.cgi">
<input type="text" name="EntryNo" size="14" value="">

フォーム内に表示させなくても、フォーム送信の際にこの値「12345」が送られるだけでも良いです。

よろしくお願いします。

Aベストアンサー

一番簡単なのは、
<input type="hidden" name="EntryNo" value="12345">

でなければ、
・クッキーに保存する
・サーバーのファイルに保存しておき、クッキーにキーワードを保存、
そのキーワードをもとにファイルから取得する(いわゆるセッション)

セッションを使うと、サーバーのファイルを削除するタイミングや、キーワードの生成方法の問題も出てきますが、
モジュールなどがありますので、それらを使えば簡単に作れると思います。(モジュールの使い方の知識が必要ですが)

余談ですが、www.test.comというサイトは実際に存在します。
例としてあげるなら、他人のサイトを勝手に使うのではなく、
”例”用に用意された www.sample.com や、
自分のサイト、
またはそのBBSに関連するサイト(itmaedia.okwave.jpなど)(存在しないファイル名はNG。これについては人によって見かたが変わるかも)
を使うようにして下さい。


このカテゴリの人気Q&Aランキング

おすすめ情報