お知らせ(2002/10/01)

HPを引越しました。今後はこちらへアクセス・ご利用お願い致します。
→新URL:http://www.j-coolsite.com/hidemacro/
但し、「TripodでのCGI利用メモ」だけでいいという方は、このページだけどうぞ(引越先にはTripod関連の情報はありませんので)

追記:2003/07/18
PostMail v2.1で新たにチェック。動作確認致しました。これを機に、内容を少し修正。作業手順もわかりやすくしてみました。

もしこのページがお役に立ったなら、引越先のHPに遊びに来ていただけたら嬉しいです(笑)あるいはこのページ一番下にあるメッセージ送信フォームから感想などいただければ幸いです。

追記:2003/01/26
TripodでのCGI利用(とくにTripodMail.pm)をお探しの方からのフィードバックをよくいただきます。お役に立っているようでうれしいです。私もよくわからなくて苦労したので(^^;)と、あらかじめひとことコメントなのでした。



TripodでのCGI利用メモ

基本情報

TripodでのCGI利用に関する基本情報は以下のページに。

●Tripod CGI ガイド
http://www.tripod.co.jp/guides/cgi.html
●Tripodヘルプ! / Tripodツール / TripodCGI
http://home.tripod.co.jp/help/tool/tripodcgi.html
●Tripodホームページ作成ヘルプ掲示板
http://www.tripod.co.jp/interact/

CGI設置の基本手順および利用方法は以下の通り。

  1. スクリプト中にTripodの広告を入れておく(ポップアップまたは埋め込み式広告)→http://www.tripod.co.jp/guides/cgi.html#step6
  2. マイアカウントページで、CGI設定で「CGIを利用する」に設定。
  3. 「cgi-bin」というフォルダが作成される。ここに動作させたいCGIスクリプトをアップロード。
  4. ちなみにCGI本体の拡張子は「.cgi」または「.pl」。ログファイルは「.log」「.dat」「.txt」などなんでも可らしい。
    但し、htmlファイルや画像ファイルはアップロードしてもアクセスできない。画像ファイルはcgi-binフォルダ以外にアップロードし、直接「http://members.tripod.co.jp/メンバー名/image/画像名.gif」などと呼び出す必要あり。
    ※但し「gifcat.pl」を利用しているカウンターの場合、数字画像は通常どおりcgi-binフォルダ内にアップロードしておく(画像へのリンクではなく、カウンタCGI本体が出力するため)。
  5. CGI本体の呼び出し方(リンク)は次のとおり。
    http://cgi.tripod.co.jp/メンバー名/cgi-bin/CGIファイル名.cgi
  6. CGIから「http://members.tripod.co.jp/メンバー名」内へのリンクは通常どおり相対パスのままで可らしい。リンクの表示は「http://cgi.tripod.co.jp/メンバー名/〜」でも、クリックするとちゃんと「http://members.tripod.co.jp/メンバー名/〜」へジャンプし、該当ページを表示してくれる。

制限事項

制限事項に関する基本情報は以下のページに。

http://www.tripod.co.jp/guides/cgi.html

Tripodでの使用が制限されているコマンド例;

  • system
  • exec
  • fork
  • chown
  • chmod
  • sleep
  • kill
  • ソケット(sockets)に関連するすべてのコマンド
  • chdirなんかもダメだめらしい?→とほほさんのラウンジが設置できない?
  • cgi-binから上はフォルダをたどれない(htmlファイルの設置場所とサーバが異なる?当然??)→全文検索CGIなどが利用できない?

その他、$ENV{'HTTP_REFERER'}なども使えないらしい

使えるものメモ

KentWebSymlink Checker でチェックしたところ、「symlink関数」「flock関数」は使用可能という判定がでた。

TripodMail.pm の利用方法(Tripodでフォームメール送信CGIを利用する方法)

『TripodMailは、CGIスクリプトからメールを送るためのモジュール』とのこと。しかし、使い方をマスターするまでけっこう時間がかかった……(^^;)。

以下、KentWebpostmail(WEB上からメール送信することのできるメールフォーム)の設定&改造を例に(ちなみに確認した postmail のバージョンは「Ver: 2.1」)。


1)postmail.cgiの次の箇所を変更する

▼「# メールソフトまでのパス」は不要なのでコメントアウト

# メールソフトまでのパス
# → sendmailの例 :/usr/lib/sendmail
# → BlatJの例 :c:\blatj\blatj.exe
#$mailprog = '/usr/lib/sendmail.exe';

▼「# 送信先メールアドレス」はあなたのアドレスを

# 送信先メールアドレス
$mailto = 'あなたのメールアドレス';

▼「# メールプログラムのパスチェック/種類チェック」は以下のように。

# メールプログラムのパスチェック/種類チェック
#unless (-e $mailprog) { &error("メールプログラムのパスが不正です"); }
#if ($mailprog =~ /blat/i) { $pgType = 2; } else { $pgType = 1; }
$pgType=1;

注)以前は$pgTypeが$prog_typeと表記されてたんですが、いつの間にか変わってる……なんでや?(笑)

▼【重要】「# sendmail送信」の以下の部分を次のように改造。

#長いからbegin-cutでコメントアウト
=begin
open(MAIL,"| $mailprog -t") || &error("メール送信に失敗しました");
print MAIL "To: $mailto\n";
print MAIL "From: $email\n";
print MAIL "Subject: $subject2\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";
print MAIL "Date: $dat2\n";
print MAIL "X-Mailer: $ver\n\n";
print MAIL "$mail_body\n";
close(MAIL);
=cut

require '../TripodMail.pm';
$MAIL = new TripodMail;
$mail_template = "./mailtemplate.txt";
%variables = (
'mailto' => $mailto,
'email' => $email,
'subject2' => $subject2,
'dat2' => $dat2,
'ver' => $ver,
'mail_body' => $mail_body
);
( $MAIL->sendMail($mail_template, \%variables) ) || &error("メール送信に失敗しました。");

2)TripodMail.pm用のテンプレートを作成する

TripodMail.pmはあらかじめテンプレート(ファイル)が必要なため、作成してアップロードする。ファイル名はとりえず「mailtemplate.txt」で。

作成したmailtemplate.txtは、postmail.cgiと同じフォルダすなわちpostmailフォルダに保存しておくこと。

テンプレートファイルの中身はとりあえず以下のとおり:

To: $mailto
From: $email
Subject: $subject2
MIME-Version: 1.0
Content-type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
Date: $dat2
X-Mailer: $ver

$mail_body

3)FTPソフトを使って(Tripodのサーバの)cgi-binフォルダにアクセス。postmailフォルダを作成し、(自分のパソコンの)postmailの各ファイルを転送。

但し、postmail.htmlについては、cgi-bin以外の場所(どこでもよい)にファイルを転送すること(cgi-bin内のhtmlファイルはアクセスできない。Tripod側の仕様のため)。

その際、postmail.htmlの中身の、form部分のaction属性は以下のように書き換えておくこと。

<form action="./postmail.cgi" method="POST">

<form action="http://cgi.tripod.co.jp/メンバー名/cgi-bin/postmail/postmail.cgi" method="POST">

4)【重要】最後に、postmailフォルダをメンバーディレクトリ(つまり、cgi-binが存在するのと同じ階層のディレクトリ)に作成

こうしておかないと、cgi-bin/postmailディレクトリ内に「mail.数字」のファイルが作成されるだけでメールが送信されない。

なお理由については不明(汗)。Tripodホームページ作成ヘルプ掲示板の過去ログにあった対応策。ちなみにcgi-binフォルダに直接postmail.cgiなど設置した場合、この作業は不要だったりします、実は。

すべての設定完了後は、次のような感じになる

http://cgi.tripod.co.jp/メンバー名/cgi-bin/postmail/postmail.cgi
http://cgi.tripod.co.jp/メンバー名/cgi-bin/postmail/mailtemplate.txt
http://cgi.tripod.co.jp/メンバー名/cgi-bin/postmail/jcode.pl

http://members.tripod.co.jp/メンバー名/postmail/
http://members.tripod.co.jp/メンバー名/postmail.html

5)「TripodMail.pm」内のメールアドレスチェックについて

「TripodMail.pm」の中の、以下の部分はコメントアウトしておくことをおすすめします(但し自己責任で。万一のために予備をコピーしておくように)。

メールアドレスのチェックをする部分なのですが、アドレスに「-」などがあるとエラーになるようです。実は私自身のメールアドレスが該当していて、最初メールが送信されない理由がわからず、ずいぶん悩みました。

# check final template format
# if ($message !~ /to:.*\w+@\w+\.\w+/i){
# print STDERR "To: field missing or invalid recipient\n";
# return 0;
# }
# if ($message !~ /from:.*\w+@\w+\.\w+/i){
# print STDERR "From: field missing or invalid sender\n";
# return 0;
# }

以上でpostmail.htmlからのフォーム送信が可能となるはずです。

このページの先頭へ

このページについてのご感想をお寄せください
1.とても役立った 2.部分的に役立った 3.どちらでもない 4.説明が足りない 5.期待ハズレ 6.その他
「参考になった点」「今回お探しの情報について」「その他ご意見ご感想」など、メッセージがあればご記入下さい。

(今日/昨日