363.txt(2,825 byte)本家の掲示板が荒される&削除が面倒なので、宣言通り、登録制のプログラム作成に着手。
大まかな仕様は・・・
(1)DBを使ったBasic認証とする
(2)IDにはメールアドレスを使用し、パスワードは自由に設定出来る
(3)登録を申し込んだ人には確認メールを飛ばし、チェック用のURLをクリックした時点でDBに登録する
・・・ってな感じです。
で、とりあえず(2)の辺りまでのCGIは出来上がったので、皆には興味無いかも知れないけど、ソースを公開。(HTML側はパスワード制を開始した時点で確認してね)
-------------------------------------------------
#!/usr/local/bin/perl
use strict;
use CGI;
use DB_File;
use Fcntl;
require './jcode.pl';
my $sendmail = '/usr/lib/sendmail';
my $mail;
my $pass;
my $handle;
my $orghandle;
my $query;
my @query;
my $key;
my $val;
my $method;
my $emptychk;
#my $registdb = './regist.db';
$emptychk = 0;
print "Content-type: text/html\n\n";
&addhead;
$method = $ENV{'REQUEST_METHOD'};
if($method eq 'GET') {
$query = $ENV{'QUERY_STRING'};
} elsif($method eq 'POST') {
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
} else {
die "error in parseInput()\n";
}
@query = split(/&/, $query);
foreach (@query) {
($key, $val) = split(/=/, $_);
$val =~ tr/+/ /;
$val =~ s/%([a-f\d]{2})/pack 'H2',$1/egi;
$val =~ s/&/&/g;
$val =~ s/"/"/g;
$val =~ s/ $val =~ s/>/>/g;
$val =~ s/\r\n/\n/g;
$val =~ s/\n//g;
&checkempty;
if($key eq 'mail') {
unless($val =~ /.+\@.+\..+/ || /.+\@.+\..+\..+/ || /.+\@.+\..+\..+\..+/) {
$emptychk = 1;
print "入力されたメールアドレスは正しくありません!
メールアドレス --> $val
\n";
} else {
$mail = $val;
print "メールアドレス --> $mail
\n";
}
}