#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃■(SS)C−BOARDライブラリ(とほほ改1.0.00)
#┠──────────────────────────────────────
#┃メンバー管理の関数が含まれています。
#┃
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
package MEMBER;
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃ メンバーログイン画面表示
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sub login {
$::FLAG{'noindex'} = 1; #強制
&BASE::head2('mlg');
print <<"__HTML__";
ログイン
__HTML__
&BASE::foot2('mlg');
}
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃ クッキー書き込み
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sub write {
#── ジャンプ
&BASE::location("$CNF::place{'this'}{'url'}?id=$::FORM{'id'}",
{name => $CNF::cookie{'name'},
value => {name => $::FORM{'name'}, key => $::FORM{'key'}},
expire => $CNF::cookie{'expire'}});
}
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃ メンバー申し込み画面表示
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sub input {
#($CNF::mail{'mode'} != 2) or exit;
#$CNF::member{'mail'}{'mode'} or exit;
if ( $CNF::member{'mail'}{'mode'} != 1 ) {
&::error(\'新規メンバーのメール認証は停止中です。'); exit;
} elsif ( $CNF::mail{'mode'} == 2 ) {
&::error(\'メール送信が設定されていません。'); exit;
}
#投稿時間キー生成
require './app/cmd/post.pl';
my $r_timekey = &POST::make_timekey($CNF::antispam{'timekey'}{'idseed'});
&BASE::head2('mbn');
print <<"__HTML__";
__HTML__
&BASE::foot2('mbn');
}
#┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
#┃ 登録
#┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
sub regist {
require './app/lib/file/mmi.pl'; require './app/lib/file/mmb.pl';
#($CNF::mail{'mode'} != 2) or exit;
#$CNF::member{'mail'}{'mode'} or exit;
if ( $CNF::member{'mail'}{'mode'} != 1 ) {
&::error(\'新規メンバーのメール認証は停止中です。'); exit;
} elsif ( $CNF::mail{'mode'} == 2 ) {
&::error(\'メール送信が設定されていません。'); exit;
}
if (defined $::FORM{'step1'}) {
require './app/lib/mailer.pl';
my @error;
#投稿時間キーチェック
#時間は固定値でチェックする
require './app/cmd/post.pl';
@error =
@{ &POST::check_timekey(
$::FORM{'timekey'}, $CNF::antispam{'timekey'}{'idseed'}, 600, 10)
};
@error && &::error(\$error[0]); #前陣速攻
if (!length($::FORM{'name'})) {
push(@error, '名前(ニックネーム)を記入してください。');
}
elsif (length($::FORM{'name'}) > $CNF::post{'name'}{'max'}) {
push(@error, '名前(ニックネーム)が長すぎます。');
}
if (!length($::FORM{'email'})) {
push(@error, 'メールアドレスを記入してください。');
}
elsif (length($::FORM{'email'}) > $CNF::post{'email'}{'max'}) {
push(@error, 'メールアドレスが長すぎます。');
}
elsif ($::FORM{'email'} !~ /^[\w\.\-]+\@[\w\.\-]+\.[a-zA-Z]{2,6}$/) {
push(@error, 'メールアドレスが不正です。');
} elsif ( $::FORM{'email'} ne $::FORM{'url'} ) {
push(@error, 'メールアドレスの確認が取れません。');
}
if (!length($::FORM{'key'})) {
push(@error, 'パスワードを記入してください。');
}
elsif (length($::FORM{'key'}) > $CNF::post{'key'}{'max'}) {
push(@error, 'パスワードが長すぎます。');
}
@error && &::error(\join("
\n ", @error));
my $confirm
= substr(&COMMON::sha1(\($::FORM{'name'} . &COMMON::make_id)), 0,
10);
my $host = &CGI::get_host(0);
my $o_identify
= new FILE::MEMBER_IDENTIFY($CNF::place{'data'}{'path'});
$o_identify->update({name => $::FORM{'name'}, key => $::FORM{'key'},
email => $::FORM{'email'}, confirm => $confirm,
host => $host, time => $::FLAG{'time'}})
or &::error(\('すでに登録の申し込みがありました。'
. '身に覚えがない場合はしばらくたってから再度'
. '申し込んでみてください。'));
my $o_member = new FILE::MEMBER($CNF::place{'data'}{'path'});
$o_member->exist($::FORM{'name'}, $::FORM{'key'}, $::FORM{'email'})
&& &::error(\('既に同じ名前が登録されています。'));
#メール作成
my %to = (name => $::FORM{'name'}, address => $::FORM{'email'});
my $r_from = $CNF::mail{'from'};
my $subject = 'メンバー登録申\し込み確認メール';
my $body = <<"__TEXT__";
これはメンバー登録申\し込みの確認メールです。
以下の情報での申\し込みを受け付けました。
登録名 :$::FORM{'name'}
登録作業を完了するには
$CNF::place{'this'}{'url'}?cmd=mbn;id=$::FORM{'id'}
に行き、以下の確認コードを送信してください。
確認コード:$confirm
__TEXT__
if (!&MAILER::mobile($to{'address'})) {
$body .= <<"__TEXT__";
---------------------------------------------------------------------
//このメールに身に覚えのない方へ
誰かがあなたのメールアドレスを使って勝手に登録の申\し込みをした
可能\性があります。このメールはそのまま捨ててください。
以下に登録作業を行った人の情報を示しておきます。
U A : $ENV{'HTTP_USER_AGENT'}
I P : $ENV{'REMOTE_ADDRESS'}
HOST : $ENV{'REMOTE_HOST'}
__TEXT__
}
eval {
&MAILER::send($CNF::mail{'mode'}, $CNF::place{'sendmail'}{'path'},
$CNF::place{'smtp'}{'path'}, [\%to], $r_from, $subject, \$body);
};
length($@) && &::error(\"MEMBER_MAIL ERROR: $@");
#画面表示
&BASE::head2('mbr');
print <<"__HTML__";
|
確認メールを送信しました。
メールの到着をお待ちください。
|
__HTML__
&BASE::foot2('mbr');
} else {
my $o_identify = new FILE::MEMBER_IDENTIFY($CNF::place{'data'}{'path'});
(my $r_info = $o_identify->check($::FORM{'confirm'}))
or &::error(\'「確認コード」が違います。');
my $o_member = new FILE::MEMBER($CNF::place{'data'}{'path'});
#更新
$o_member->add($r_info)
or &::error(\('メンバーリストを更新できませんでした。'));
#画面表示
&BASE::head2('mbr');
print <<"__HTML__";
|
メンバー登録を完了しました。
ログインを行ってください。
|
__HTML__
&BASE::foot2('mbr');
}
}
1;
# $Id: mmb.pl,v 2.1 2003/11/19 13:00:00 N.Hirai Exp $;