#!/usr/bin/perl
use strict;
use CGI qw/:standard :html3 *table/;
use DBI;
require "functions.pl";
our ($dbh,$owneremail,$ownerdesc,$url_base,$sendmail,@reserved);
my ($username,$password,$confirm,$salutation,$surname,$middle,$name,$email,$agree,$action);
my ($sth,$rc,$query);
my (@buff,@data,$buff);
my @salutations=('Mr.','Mrs.','Ms.');
my $rndstr;
# # # # # # # # # # # # # # # # # # #
# Starting the job.
# # # # # # # # # # # # # # # # # # #
# Read basic param
$action=(param('action'))?param('action'):"";
if ( $action eq "Signup") {
### Reading params
$username=(param('username'))?param('username'):"";
$password=(param('password'))?param('password'):"";
$confirm=(param('confirm'))?param('confirm'):"";
$salutation=(param('salutation'))?param('salutation'):"";
$surname=(param('surname'))?param('surname'):"";
$middle=(param('middle'))?param('middle'):"";
$name=(param('name'))?param('name'):"";
$email=(param('email'))?param('email'):"";
$agree=(param('agree'))?param('agree'):"";
# checking params
if (length($username)<4){
print_header('BizInc USA - Signup error.');
print_signup("","$password","$confirm","$salutation","$surname","$middle","$name","$email");
print "
Username is not defined or smaller than 4 characters. Please choose a different username.\n";
print_footer();
exit(1);
}
else {
if ($username =~ /[^A-Za-z0-9]/) {
print_header('BizInc USA - Signup error.');
print_signup("","$password","$confirm","$salutation","$surname","$middle","$name","$email");
print "Username can contain only letters and numbers.\n";
print_footer();
exit(1);
}
}
if (length($password)<6){
print_header('BizInc USA - Signup error.');
print_signup("$username","","","$salutation","$surname","$middle","$name","$email");
print "Password is not defined or smaller than 6 characters.\n";
print_footer();
exit(1);
}
if ($confirm ne $password){
print_header('BizInc USA - Signup error.');
print_signup("$username","","","$salutation","$surname","$middle","$name","$email");
print "Sorry, but your passwords do not match.\n";
print_footer();
exit(1);
}
if (length($salutation)<2){
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","","$surname","$middle","$name","$email");
print "Please select your salutation.\n";
print_footer();
exit(1);
}
if (length($surname)<2){
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","$salutation","","$middle","$name","$email");
print "Please enter your first name.\n";
print_footer();
exit(1);
}
if (length($middle)<1){
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","$salutation","$surname","","$name","$email");
print "Please enter your middle initial.\n";
print_footer();
exit(1);
}
if (length($name)<2){
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","$salutation","$surname","$middle","","$email");
print "Please enter your last name.\n";
print_footer();
exit(1);
}
if (length($email)<4){
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","$salutation","$surname","$middle","$name","");
print "Email address is empty or not corectly defined.\n";
print_footer();
exit(1);
}
else {
if ($email !~ /\@/) {
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","$salutation","$surname","$middle","$name","");
print "Sorry but \"$email\" doesn't seems a valid email address.\n";
print_footer();
exit(1);
}
}
if ($agree ne "yes"){
print_header('BizInc USA - Signup error.');
print_signup("$username","$password","$confirm","$salutation","$surname","$middle","$name","$email");
print "Please read the Network Members Agreement.\n";
print_footer();
exit(1);
}
# Check if the user try to use a banned/reserved word.
foreach (@reserved){
if($username eq $_){
print_header('BizInc USA - Signup error.');
print_signup("","$password","$confirm","$salutation","$surname","$middle","$name","$email");
print "Sorry but \"$username\" is an reserved username. Please choose a different username.\n";
print_footer();
exit(113);
}
}
# Checking if the user already exists.
db_connect();
$query="SELECT id FROM basic_auth WHERE username='".$username."'";
$sth = $dbh->prepare($query);
if (!$sth) {
print_error("[DBI]: Prepare Error Occured!",$DBI::errstr);
db_disconnect();
exit(1);
}
$rc=$sth->execute;
if (!$rc) {
print_error("[DBI]: Execute Error Occured!",$DBI::errstr);
$sth->finish();
db_disconnect();
exit(1);
}
@buff=$sth->fetchrow_array;
if ($buff[0] && $buff[0] ne ""){
print_header('BizInc USA - Signup error.');
print_signup("","$password","$confirm","$salutation","$surname","$middle","$name","$email");
print "This username is already used. Please choose a different username.\n";
print_footer();
$sth->finish();
db_disconnect();
exit(2);
}
$rndstr=rand_str(16);
my $a=quotemeta($username);
my $b=quotemeta($password);
my $c=quotemeta($surname);
my $d=quotemeta($middle);
my $e=quotemeta($name);
my $f=quotemeta($email);
$query="INSERT INTO basic_auth (username,password,salutation,surname,middle,name,email,create_date,random_string) VALUES
('$a','$b','$salutation','$c','$d','$e','$f',now(),'$rndstr')";
$sth = $dbh->prepare($query);
if (!$sth) {
print_error("[DBI]: Prepare Error Occured!",$DBI::errstr);
db_disconnect();
exit(1);
}
$rc=$sth->execute;
if (!$rc) {
print_error("[DBI]: Execute Error Occured!",$DBI::errstr);
$sth->finish();
db_disconnect();
exit(1);
}
# Sending notify Email.
undef(@data);
open(DATA,"text/step101.txt");
@data=;
close(DATA);
open (MAIL,"|$sendmail");
print MAIL "From: $ownerdesc <$owneremail>\n";
print MAIL "To: $name <$email>\n";
print MAIL "Subject: [BizIncUSA] Step 1 completed!\n\n";
foreach $buff (@data){
$buff=~ s/var_salutation/$salutation/g;
$buff=~ s/var_firstname/$surname/g;
$buff=~ s/var_middle/$middle/g;
$buff=~ s/var_lastname/$name/g;
$buff=~ s/var_username/$username/g;
$buff=~ s/var_password/$password/g;
$buff=~ s/var_urlbase/$url_base/g;
$buff=~ s/var_rndstr/$rndstr/g;
print MAIL "$buff";
}
close(MAIL);
undef(@data);
open(DATA,"text/step102.txt");
@data=;
close(DATA);
print_header('BizInc USA - Sign Up Step 1 Completed');
print<<"HTML";
HTML
foreach $buff (@data){
$buff=~ s/var_salutation/$salutation/g;
$buff=~ s/var_firstname/$surname/g;
$buff=~ s/var_middle/$middle/g;
$buff=~ s/var_lastname/$name/g;
$buff=~ s/var_username/$username/g;
$buff=~ s/var_password/$password/g;
$buff=~ s/var_urlbase/$url_base/g;
$buff=~ s/var_rndstr/$rndstr/g;
print "$buff";
}
print<<"HTML";
Click here to get to the main page.
|
HTML
print_footer();
$sth->finish();
db_disconnect();
}
else {
print_header('BizInc USA - New User Signup');
print_signup('','','','','','','','');
print_footer();
}
# Local Subroutines
sub rand_str{
my @chars=('a'..'z','0'..'9');
my $random_string;
foreach (1..$_[0])
{
$random_string.=$chars[rand @chars];
}
return $random_string;
}
sub print_signup{
print<<"HTML";
HTML
}