サポート掲示板
![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() ![]() |
追加の情報です。
メールフォーム
http://www.synapse.ne.jp/taniguti/toiawase.html
sendmailのパス
$sendmail = '/www/bin/sendmail';
Action属性
http://cgi1.synapse.ne.jp/~●●/tanimail/toiawase.cgi
すみませんが、宜しくお願いします。
メールフォーム
http://www.synapse.ne.jp/taniguti/toiawase.html
sendmailのパス
$sendmail = '/www/bin/sendmail';
Action属性
http://cgi1.synapse.ne.jp/~●●/tanimail/toiawase.cgi
すみませんが、宜しくお願いします。
「Internal Server Error」は、
スクリプトに何か問題があれば、
とりあえず出てくるエラーです。
さしあたり、編集したときに、
行末の" ; "が抜けてしまったとか、
perlのバージョンや環境、
転送時の文字コード等が違うので、
実行できないなどが考えられますが、
…残念ですが、提示されている情報だけでは、
何が問題か分かりません。
使用しているスクリプトを書いていただければ、
レスが付くかも知れません。
ところで、リンク先のページですが、
作りかけ…ということでしょうか?
丁寧に作り込まれているようですが、
IE以外のブラウザで表示すると、
表示が乱れてしまうようですので、
確認されることをお勧めします。
スクリプトに何か問題があれば、
とりあえず出てくるエラーです。
さしあたり、編集したときに、
行末の" ; "が抜けてしまったとか、
perlのバージョンや環境、
転送時の文字コード等が違うので、
実行できないなどが考えられますが、
…残念ですが、提示されている情報だけでは、
何が問題か分かりません。
使用しているスクリプトを書いていただければ、
レスが付くかも知れません。
ところで、リンク先のページですが、
作りかけ…ということでしょうか?
丁寧に作り込まれているようですが、
IE以外のブラウザで表示すると、
表示が乱れてしまうようですので、
確認されることをお勧めします。
レス、ありがとうございます。
CGI初心者でKENTさんの「CGI/Perl作り方入門」に
かぶりつきながら頑張っています。
換えたところは、Action属性とコマンドのパス(perl5・sendmail)のみです。
ローカルでは動いたので、「;」抜けとかではないと思うのですが・・・。
長々とすみません。
他ブラウザで見ると表示が乱れるとのこと。
情報ありがとうございます。
何とか調節してみます。
#!/www/bin/perl5
# ライブラリー取り込み
require './jcode.pl';
# 戻り先のリンク
$backurl = '●●';
# 送信先アドレス
$mailto = '●●';
# 管理者先アドレス
$amailto = '●●';
$title = 'お問合せ';
$ktitle = '【お問合せ】確認メール';
# sendmailパス
$sendmail = '/www/bin/sendmai';
# フォームデコード
&decode;
# メール送信
if ($in{'mode'} eq "sendmail") { &sendmail; }
# 確認画面
&preview;
#-------------------------------------------------
# フォームデコード
#-------------------------------------------------
sub decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
undef(@key);
undef(@val);
undef(%in);
my @buf = split(/&/, $buf);
foreach (@buf) {
my ($key, $val) = split(/=/);
$key =~ tr/+/ /;
$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
# SJISコード変換
&jcode::convert(\$key, 'sjis');
&jcode::convert(\$val, 'sjis');
# エスケープ
$key =~ s/&/&/g;
$key =~ s/"/”/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
$val =~ s/&/&/g;
$val =~ s/"/”/g;
$val =~ s/</</g;
$val =~ s/>/>/g;
# 改行はタブへ変換しておく
$val =~ s/\r\n/\t/g;
$val =~ s/\r/\t/g;
$val =~ s/\n/\t/g;
# 入力内容を@key, @valに代入
push(@key,$key);
push(@val,$val);
$in{$key} = $val;
}
}
#-------------------------------------------------
# 確認画面
#-------------------------------------------------
sub preview {
# 必須の入力項目を配列化(@needに代入)
my @need = split(/,/, $in{'need'});
# 入力内容をチェック
my $err;
foreach my $need (@need) {
if ($in{$need} eq "") {
$err .= "$needが未入力です<br>\n";
}
}
# 入力不備があればエラー表記
if ($err) {
&header;
print"<center><img src=\"/tanimail/modoru.gif\"></center><br><br>\n";
print "<center><font color=\"#ff0000\">$err</font></center><br><br><br>\n";
print '<center><input type="button" value=" 戻 る " onClick="history.back()"></center>';
print "</body></html>\n";
exit;
}
# 確認画面表示
&header;
print <<EOM;
<p align="center"><img border="0" src="/tanimail/midle.gif"></p>
<form action="http://cgi1.synapse.ne.jp/~●●/tanimail/toiawase.cgi" method="post">
<input type="hidden" name="mode" value="sendmail">
<center><table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#555FAA">
<tr>
<td><p align="center"><b>項目</b></p></td>
<td><p align="center"><b>入力内容</b></p></td>
</tr>
EOM
# 入力内容
foreach my $i (0 .. $#key) {
# needはスキップする
if ($key[$i] eq "need") { next; }
# 入力内容をhiddenフィールドにセット
print "<input type=\"hidden\" name=\"$key[$i]\" value=\"$val[$i]\">\n";
# 改行変換(タブ → <br>)
$val[$i] =~ s/\t/<br>/g;
# テーブルセルで表示
print "<tr><td>$key[$i]</td>";
print "<td>$val[$i]<br></td></tr>\n";
}
print <<EOM;
</table></center>
<br><br>
<p align="center"><input type="submit" value="送信する">
<input type="button" value=" 戻 る " onclick="history.back()"></p>
<br><br>
</form>
</body>
</html>
EOM
exit;
}
#-------------------------------------------------
# メール送信
#-------------------------------------------------
sub sendmail {
# タイムゾーン設定
$ENV{'TZ'} = "JST-9";
# 日時
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $now = sprintf("%04d/%02d/%02d-%02d:%02d",
$year+1900,$mon+1,$mday,$hour,$min);
# メール本文
my $mailbody = "以下のとおりフォームメールより送信がありました。\n\n";
$mailbody .= "送信日時 = $now\n";
foreach my $i (0 .. $#key) {
# modeはスキップ
if ($key[$i] eq "mode") { next; }
# 改行変換(タブ → \n)
$val[$i] =~ s/\t/\n/g;
# メール本文
$mailbody .= "$key[$i] = $val[$i]\n";
}
# JISコード変換
&jcode::convert(\$mailbody, 'jis');
&jcode::convert(*title, 'jis');
&jcode::convert(*ktitle, 'jis');
# sendmail起動
open(MAIL,"| $sendmail -t -i");
print MAIL "To: $mailto\n";
print MAIL "From: $mailto\n";
print MAIL "Subject: $title\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "$mailbody\n";
close(MAIL);
# sendmail起動
open(MAIL,"| $sendmail -t -i");
print MAIL "To: $amailto\n";
print MAIL "From: $amailto\n";
print MAIL "Subject: $title\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "$mailbody\n";
close(MAIL);
# sendmail起動
open(MAIL,"| $sendmail -t -i");
print MAIL "To: $in{'mail'}\n";
print MAIL "From: $mailto\n";
print MAIL "Subject: $ktitle\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "お問合せありがとうございました。\n";
print MAIL "$mailbody\n";
print MAIL "一週間以内にお返事を致します。\n";
print MAIL "******************************************\n\n";
close(MAIL);
# 完了メッセージ
&header;
print <<EOM;
<p align="center"> </p>
<p align="center"><img border="0" src="/tanimail/end.gif"></p>
<br>
<br>
<p align="center"><a href="$backurl"><img border="0" src="/tanimail/home.gif"></a></p>
<br>
<p align="center"> </p>
<br>
<br>
</body>
</html>
EOM
exit;
}
#-------------------------------------------------
# HTMLヘッダー
#-------------------------------------------------
sub header {
print "Content-type: text/html\n\n";
print <<EOM;
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<title>お問合せ</title>
</head>
<body background="/tanimail/back.jpg" text="#282828" link="#8DB0FF" vlink="#D08DFF" alink="#D08DFF">
EOM
}
CGI初心者でKENTさんの「CGI/Perl作り方入門」に
かぶりつきながら頑張っています。
換えたところは、Action属性とコマンドのパス(perl5・sendmail)のみです。
ローカルでは動いたので、「;」抜けとかではないと思うのですが・・・。
長々とすみません。
他ブラウザで見ると表示が乱れるとのこと。
情報ありがとうございます。
何とか調節してみます。
#!/www/bin/perl5
# ライブラリー取り込み
require './jcode.pl';
# 戻り先のリンク
$backurl = '●●';
# 送信先アドレス
$mailto = '●●';
# 管理者先アドレス
$amailto = '●●';
$title = 'お問合せ';
$ktitle = '【お問合せ】確認メール';
# sendmailパス
$sendmail = '/www/bin/sendmai';
# フォームデコード
&decode;
# メール送信
if ($in{'mode'} eq "sendmail") { &sendmail; }
# 確認画面
&preview;
#-------------------------------------------------
# フォームデコード
#-------------------------------------------------
sub decode {
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
} else {
$buf = $ENV{'QUERY_STRING'};
}
undef(@key);
undef(@val);
undef(%in);
my @buf = split(/&/, $buf);
foreach (@buf) {
my ($key, $val) = split(/=/);
$key =~ tr/+/ /;
$key =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("H2", $1)/eg;
# SJISコード変換
&jcode::convert(\$key, 'sjis');
&jcode::convert(\$val, 'sjis');
# エスケープ
$key =~ s/&/&/g;
$key =~ s/"/”/g;
$key =~ s/</</g;
$key =~ s/>/>/g;
$val =~ s/&/&/g;
$val =~ s/"/”/g;
$val =~ s/</</g;
$val =~ s/>/>/g;
# 改行はタブへ変換しておく
$val =~ s/\r\n/\t/g;
$val =~ s/\r/\t/g;
$val =~ s/\n/\t/g;
# 入力内容を@key, @valに代入
push(@key,$key);
push(@val,$val);
$in{$key} = $val;
}
}
#-------------------------------------------------
# 確認画面
#-------------------------------------------------
sub preview {
# 必須の入力項目を配列化(@needに代入)
my @need = split(/,/, $in{'need'});
# 入力内容をチェック
my $err;
foreach my $need (@need) {
if ($in{$need} eq "") {
$err .= "$needが未入力です<br>\n";
}
}
# 入力不備があればエラー表記
if ($err) {
&header;
print"<center><img src=\"/tanimail/modoru.gif\"></center><br><br>\n";
print "<center><font color=\"#ff0000\">$err</font></center><br><br><br>\n";
print '<center><input type="button" value=" 戻 る " onClick="history.back()"></center>';
print "</body></html>\n";
exit;
}
# 確認画面表示
&header;
print <<EOM;
<p align="center"><img border="0" src="/tanimail/midle.gif"></p>
<form action="http://cgi1.synapse.ne.jp/~●●/tanimail/toiawase.cgi" method="post">
<input type="hidden" name="mode" value="sendmail">
<center><table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#555FAA">
<tr>
<td><p align="center"><b>項目</b></p></td>
<td><p align="center"><b>入力内容</b></p></td>
</tr>
EOM
# 入力内容
foreach my $i (0 .. $#key) {
# needはスキップする
if ($key[$i] eq "need") { next; }
# 入力内容をhiddenフィールドにセット
print "<input type=\"hidden\" name=\"$key[$i]\" value=\"$val[$i]\">\n";
# 改行変換(タブ → <br>)
$val[$i] =~ s/\t/<br>/g;
# テーブルセルで表示
print "<tr><td>$key[$i]</td>";
print "<td>$val[$i]<br></td></tr>\n";
}
print <<EOM;
</table></center>
<br><br>
<p align="center"><input type="submit" value="送信する">
<input type="button" value=" 戻 る " onclick="history.back()"></p>
<br><br>
</form>
</body>
</html>
EOM
exit;
}
#-------------------------------------------------
# メール送信
#-------------------------------------------------
sub sendmail {
# タイムゾーン設定
$ENV{'TZ'} = "JST-9";
# 日時
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
my $now = sprintf("%04d/%02d/%02d-%02d:%02d",
$year+1900,$mon+1,$mday,$hour,$min);
# メール本文
my $mailbody = "以下のとおりフォームメールより送信がありました。\n\n";
$mailbody .= "送信日時 = $now\n";
foreach my $i (0 .. $#key) {
# modeはスキップ
if ($key[$i] eq "mode") { next; }
# 改行変換(タブ → \n)
$val[$i] =~ s/\t/\n/g;
# メール本文
$mailbody .= "$key[$i] = $val[$i]\n";
}
# JISコード変換
&jcode::convert(\$mailbody, 'jis');
&jcode::convert(*title, 'jis');
&jcode::convert(*ktitle, 'jis');
# sendmail起動
open(MAIL,"| $sendmail -t -i");
print MAIL "To: $mailto\n";
print MAIL "From: $mailto\n";
print MAIL "Subject: $title\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "$mailbody\n";
close(MAIL);
# sendmail起動
open(MAIL,"| $sendmail -t -i");
print MAIL "To: $amailto\n";
print MAIL "From: $amailto\n";
print MAIL "Subject: $title\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "$mailbody\n";
close(MAIL);
# sendmail起動
open(MAIL,"| $sendmail -t -i");
print MAIL "To: $in{'mail'}\n";
print MAIL "From: $mailto\n";
print MAIL "Subject: $ktitle\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n\n";
print MAIL "お問合せありがとうございました。\n";
print MAIL "$mailbody\n";
print MAIL "一週間以内にお返事を致します。\n";
print MAIL "******************************************\n\n";
close(MAIL);
# 完了メッセージ
&header;
print <<EOM;
<p align="center"> </p>
<p align="center"><img border="0" src="/tanimail/end.gif"></p>
<br>
<br>
<p align="center"><a href="$backurl"><img border="0" src="/tanimail/home.gif"></a></p>
<br>
<p align="center"> </p>
<br>
<br>
</body>
</html>
EOM
exit;
}
#-------------------------------------------------
# HTMLヘッダー
#-------------------------------------------------
sub header {
print "Content-type: text/html\n\n";
print <<EOM;
<html>
<head>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
<title>お問合せ</title>
</head>
<body background="/tanimail/back.jpg" text="#282828" link="#8DB0FF" vlink="#D08DFF" alink="#D08DFF">
EOM
}
Mr男爺
- 07/10/24(水) 16:08 -
紛らわしいことしてすみません。
実は、自分で作ったCGIがうまくいかなくて、
シナプスさんの「かんたんメールフォーム」を
勉強もかねて使ってみたんです。
それはOKでした。
でも、やっぱり自分で作った物を載せようと思いまして。
http://www.synapse.ne.jp/taniguti/toiawase.html
から入ります。
目下、間違いを探しておりますが、何が間違っているか分からず・・・。
すみませんが、宜しくお願いします。
実は、自分で作ったCGIがうまくいかなくて、
シナプスさんの「かんたんメールフォーム」を
勉強もかねて使ってみたんです。
それはOKでした。
でも、やっぱり自分で作った物を載せようと思いまして。
http://www.synapse.ne.jp/taniguti/toiawase.html
から入ります。
目下、間違いを探しておりますが、何が間違っているか分からず・・・。
すみませんが、宜しくお願いします。
Kent さんのサイトをご存知なら PerlChecker もわかりますよね。
(「ユーティリティ」のところにあります。)
で、それでチェックしたところ、
Unrecognized character \x81 at toiawase.cgi line 34.
とでます。しかし私にも原因がわかりません。
それを真似てというか作った私のチェッカーでも
Unrecognized character \201 at ./toiawase.cgi line 34.
とでます。どの文字が邪魔をしているのかわかりませんが。
とりあえず、参考になればいいのですが。
(「ユーティリティ」のところにあります。)
で、それでチェックしたところ、
Unrecognized character \x81 at toiawase.cgi line 34.
とでます。しかし私にも原因がわかりません。
それを真似てというか作った私のチェッカーでも
Unrecognized character \201 at ./toiawase.cgi line 34.
とでます。どの文字が邪魔をしているのかわかりませんが。
とりあえず、参考になればいいのですが。
すみません!
PerlCheckerを設置してみたのですが・・・動かず。
換えたところは一行目の
#!/www/bin/perl
2箇所のAction属性です。
print "<form action=\"http://cgi1.synapse.ne.jp/~●●/tanimail/pcheck.cgi\" method=\"POST\">\n";
<form action="http://cgi1.synapse.ne.jp/~●●/tanimail/pcheck.cgi" method="POST">
パーミッションを755にしました。
他に変えるところはありますでしょうか。
宜しくお願いします。
PerlCheckerを設置してみたのですが・・・動かず。
換えたところは一行目の
#!/www/bin/perl
2箇所のAction属性です。
print "<form action=\"http://cgi1.synapse.ne.jp/~●●/tanimail/pcheck.cgi\" method=\"POST\">\n";
<form action="http://cgi1.synapse.ne.jp/~●●/tanimail/pcheck.cgi" method="POST">
パーミッションを755にしました。
他に変えるところはありますでしょうか。
宜しくお願いします。
皆様、色々とレス頂き、ありがとうございました。
wtzさんの「文字化け」という言葉が引っかかって、
文字を一つずつ検証してみました。
どうやら「@」が引っかかっていたようです。
もしかして、CGIなら常識!なのでしょうか?
恥ずかしながら知らなかったもので・・・。
前に「¥」を入れて事なきを得ました。
ありがとうございました。
wtzさんの「文字化け」という言葉が引っかかって、
文字を一つずつ検証してみました。
どうやら「@」が引っかかっていたようです。
もしかして、CGIなら常識!なのでしょうか?
恥ずかしながら知らなかったもので・・・。
前に「¥」を入れて事なきを得ました。
ありがとうございました。
よかったですね。
私は perl5 はよく知らないんですが、print 文のなかの @ は、配列と解釈されて
その中身が並ぶようです。
それはそれとして、空白文字にインデントを反映させるためには
投稿欄の「等副」を選ぶとよいですよ。
私は perl5 はよく知らないんですが、print 文のなかの @ は、配列と解釈されて
その中身が並ぶようです。
それはそれとして、空白文字にインデントを反映させるためには
投稿欄の「等副」を選ぶとよいですよ。
ありがとうございました。
動かなくて色々考えて、時間は掛かりましたが、
良い勉強になりました。
「等幅」。
気付かず・・・。
重ね重ねありがとうございます!
動かなくて色々考えて、時間は掛かりましたが、
良い勉強になりました。
「等幅」。
気付かず・・・。
重ね重ねありがとうございます!