#┌───────────────────────────────── #│ MAG-MAG BOARD v2.0 (2002/04) #│ Copyright(C) Kent Web 2002 #│ webmaster@kent-web.com #│ http://www.kent-web.com/ #└───────────────────────────────── #┌───────────────────────────────── #│Powered by Kent Lab #|[KentLab:KL00040] #│http://kent-Lab.com/ #└───────────────────────────────── # ライブラリ取り込み require './mimew.pl'; require './jcode.pl'; # タイトル $title = "情報交換MM"; # タイトルサイズ $t_size = '22px'; # タイトルの色 $t_color = "#BB0000"; # タイトル画像を使う場合 $t_gif = ""; # タイトル画像のサイズ $t_gif_w = 185; # 横サイズ $t_gif_h = 32; # 縦サイズ # スクリプト # → 必ず http://から記述してください $magascript = 'http://kikaiya.agrijp.com/petit2/petit.cgi'; # 本文文字サイズ $b_size = '13px'; # fork関数の使用 (0=no 1=yes) # → メール配信の終了を待たずに書込を完了(大量配信に便利) # → 使用できないプロバイダ(サーバ)があるため確認必要 $fork = 1; # 管理者メールアドレス $master = 'mail@agrijp.com'; # ブラウザのキャッシュ取込を拒否 (0=no 1=yes) $nocashe = 0; # 色 (1) : 題名部の下地の色 $color1 = "#5E5E5E"; # 色 (2) : 題名部の ■ の色 $color2 = "#FFFF00"; # 色 (3) : 題名部の文字色 $color3 = "#FFFFFF"; # bodyタグ $body = ''; #--------------------------# # メール登録・解除画面 # #--------------------------# sub member { local($no)=0; open(IN,"$memfile") || &error("Open Error : $memfile"); ++$no while (); close(IN); &header; print <<"EOM"; [戻る]
メールアドレス登録

講読の登録・解除・変更

▼新着投稿メールマガジンの「登録」

EOM # 登録件数をチェック if ($no >= $mem_max) { print "- 現在メールアドレスの登録はできません -\n"; } else { print "
\n"; print "\n"; print "メールアドレス(半角):
\n"; print "\n"; print "
\n"; } print <<"EOM";

▼新着投稿メールマガジンの「解除」

メールアドレス(半角):


*1 : 登録したアドレスを「変更」する場合は、一旦「解除」した後、新規に「登録」して下さい。
*2 : セキュリティ上、同一ホストからの連続登録はできません。
EOM exit; } #----------------# # メール仮登録 # #----------------# sub join_in { if ($in{'email'} =~ /\,/) { &error("メールアドレスにコンマが含まれています"); } if ($in{'email'} !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,5}$/) { &error("メールアドレスの入力が不正です"); } # 小文字に統一 $in{'email'} =~ tr/[A-Z]/[a-z]/; # ホスト名を取得 &get_host; # ロック開始 &lock if ($lockkey); # 本会員ファイルを読み込み $i=0; $flag=0; open(IN,"$memfile") || &error("Open Error : $memfile"); while () { $i++; if ($i >= $mem_max) { $flag=1; last; } ($num,$date,$email,$host2) = split(/<>/); if ($in{'email'} eq $email) { $flag=2; last; } } close(IN); # チェック if ($flag == 1) { &error("現在登録受付を中止しています"); } elsif ($flag == 2) { &error("ご指定のメールアドレスは既に本登録済です"); } # if ($host eq $host2) { &error("同一ホストからの連続登録はできません"); } # 仮登録 $time = time; $flag=0; @new=(); open(IN,"$memtemp") || &error("Open Error : $memtemp"); while () { ($id,$email,$time2,$host2) = split(/<>/); if ($time - $time2 > 5*24*3600) { next; } push(@new,$_); } close(IN); # if ($host eq $host2) { &error("同一ホストからの連続投稿はできません"); } if ($in{'email'} eq $email) { &error("このメールアドレスは既に仮登録済です"); } # ID発行 @char = ('A'..'Z', 'a'..'z', '0'..'9'); srand; foreach (1 .. 10) { $newid .= $char[int(rand(@char))]; } # 更新 push(@new,"$newid<>$in{'email'}<>$time<>$host<>\n"); open(OUT,">$memtemp") || &error("Write Error : $memtemp"); print OUT @new; close(OUT); &get_time; # メール本文 $mail_body = <<"EOM"; ありがとうございます。 本日「$title」へ以下のメールアドレスの仮登録がありました。 ─────────────────────────────────── ・登録日時:$Date ・ホスト名:$host ・ブラウザ:$ENV{'HTTP_USER_AGENT'} ・メールアドレス:$in{'email'} ・このメールアドレスに間違いがなければ以下のアドレスへアクセス  をして下さい。このメールアドレスは本登録されます。 $magascript?mmb=$newid ・もしこのメールにお心当たりのない場合には、このメールは第三者の 誤登録である可能\性がありますので、このまま破棄してくださるよう お願いいたします。 ・仮登録後5日を経過しても本登録へのアクセスがない場合には、今回の 仮登録は自動的に無効となります。 EOM open(IN,"$m_foot"); while () { s/\r\n|\r/\n/g; $sig .= $_; } close(IN); $mail_body .= "\n$sig"; $sub = &mimeencode("$title(仮登録)"); &jcode'convert(*mail_body,'jis'); &SendMail($master, $in{'email'}, $sub, $mail_body); # ロック解除 &unlock if ($lockkey); # 完了メッセージ &header; print <<"EOM";

仮登録が完了しました

仮登録されたアドレス:$in{'email'}


EOM exit; } #----------------# # メール本登録 # #----------------# sub new_mmb { $in{'mmb'} =~ s/\W//g; if (length($in{'mmb'}) != 10) { &error("無効なアクセスです。
アドレスをよく確かめて再度アクセスし直して下さい"); } $time = time; $flag=0; @new=(); open(IN,"$memtemp") || &error("Open Error : $memtemp"); while () { ($id,$email,$time2) = split(/<>/); if ($in{'mmb'} eq $id) { $flag=1; $email2=$email; next; } if ($time - $time2 > 5*24*3600) { next; } push(@new,$_); } close(IN); if (!$flag) { &error("該当のメールアドレスが存在しません
(仮登録後5日を経過すると無効になります)
再度仮登録し直してみて下さい

仮登録"); } # 仮登録ファイル更新 open(OUT,">$memtemp") || &error("Write Error : $memtemp"); print OUT @new; close(OUT); # 会員ファイルを読み込み $flag=0; open(IN,"$memfile") || &error("Open Error : $memfile"); while () { $i++; ($num,$date,$email,$ip) = split(/<>/); if ($in{'email'} eq $email) { $flag=1; last; } } close(IN); if ($flag) { &error("ご指定のメールアドレスは既に本登録済です"); } # 更新 &get_host; $num++; open(OUT,">>$memfile") || &error("Wtite Error : $memfile"); print OUT "$num<>$time<>$email2<>$host<>\n"; close(IN); # メール本文送信 &get_time; $mail_body = <<"EOM"; ─────────────────────────────────── ■ 本登録完了のご通知 $Date ─────────────────────────────────── ただ今あなたのメールアドレスが「$title」のメールマガジン情報に 正規登録されましたので通知いたします。 メールアドレス:$email2 それでは今後ともよろしくお願いいたします。 EOM # 署名読込 open(IN,"$m_foot"); while () { s/\r\n|\r/\n/g; $sig .= $_; } close(IN); $mail_body .= "\n$sig"; # 送信 $sub = &mimeencode("$title(本登録)"); &jcode'convert(*mail_body,'jis'); &SendMail($master, $email2, $sub, $mail_body); # 完了メッセージ &header; print <<"EOM";


本登録が完了しました

本登録されたアドレス:$email2


EOM exit; } #--------------# # メール配信 # #--------------# sub postmail { $sub = &mimeencode($title); &jcode'convert(*mail_body,'jis'); open(IN,"$memfile") || &error("Open Error : $memfile"); while () { ($num,$date,$email,$ip) = split(/<>/); &SendMail($master, $email, $sub, $mail_body); sleep(1); } close(IN); } #----------------# # メール解除 # #----------------# sub join_out { if ($in{'email'} !~ /[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,5}$/) { &error("メールアドレスの入力が不正です"); } # 小文字に統一 $in{'email'} =~ tr/[A-Z]/[a-z]/; # ロック開始 &lock if ($lockkey); # ファイルから該当メールをマッチングし排除 $flag=0; @new=(); open(IN,"$memfile") || &error("Open Error : $memfile"); while () { ($no,$date,$email,$ip) = split(/<>/); if ($in{'email'} eq $email) { $flag=1; next; } push(@new,$_); } close(IN); if (!$flag) { &error("ご指定のメールアドレスは見当たりませんでした"); } # ファイル更新 open(OUT,">$memfile") || &error("Write Error : $memfile"); print OUT @new; close(OUT); # ロック解除 &unlock if ($lockkey); # 完了メッセージ &header; print <

解除は正常に終了しました

解除されたアドレス:$in{'email'}


EOM exit; } #------------------# # メール送信処理 # #------------------# sub SendMail { local($from, $to, $sub, $msg) = @_; local($hd); # MIME処理 $hd .= "To: $to\n"; $hd .= "Errors-To: $from\n"; $hd .= "From: $from\n"; $hd .= "Subject: $sub\n"; $hd .= "MIME-Version: 1.0\n"; $hd .= "Content-type: text/plain; charset=ISO-2022-JP\n"; $hd .= "Content-Transfer-Encoding: 7bit\n"; $hd .= "X-Mailer: $ver\n\n"; open(MAIL,"| $sendmail -t"); print MAIL $hd; print MAIL $msg; close(MAIL); } #----------------# # ホスト名取得 # #----------------# sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } }