#!/usr/local/bin/perl ########################################################################## ## ## ## Smart Search version 4.23 ## ## ---------------------- ## ## By Smarter Scripts ## ## (http://www.smarterscripts.com) ## ## ## ## "Smart Search" is not a free script. If you got this from someplace ## ## other than SmarterScripts.com, please contact us, we do offer ## ## rewards for that type of information. Visit our site for up to date ## ## versions. Most CGIs are over $200, sometimes more than $500, ## ## this script is much less. We can keep this script cheap, ## ## as well as free scripts on our site, if people don't steal it. ## ## Also, no return links are required, but we appreciate it if you ## ## do find a spot for us. ## ## Thanks! ## ## ## ## Special Notice to Resellers ## ## =========================== ## ## You can use this script on any site of yours, but if you sell one ## ## of these sites, you are required to FIRST purchase a reseller ## ## license for the domain. If you don't, it's considered copyright ## ## infringement and we will prosecute any offenders. ## ## WE MONITOR EBAY.COM AUCTIONS, SO BEWARE. ## ## Reseller prices are very low, for more information, go to: ## ## http://www.smarterscripts.com/resellers.shtml ## ## ## ## (c) copyright 2002 SmarterScripts.com and R3N3 Internet Services ## ########################################################################## if ($ENV{'SERVER_SOFTWARE'} =~ /microsoft/i) { $path = $ENV{'PATH_TRANSLATED'}; $path =~ /^(.*)\\[^\\]*$/; $path = $1; chdir $path; } require 'include/functions.cgi'; &loadsettings; &loadstrings('general'); if ($settings{'debug'}) { open(DEBUG, "> $data_dir/debug.dat") } use CGI; use CGI::Carp qw/fatalsToBrowser/; $cgi = new CGI; $signup = $cgi->param('signup'); if ( $signup == 1 ) # User has submitted initial form { if ($settings{'debug'}) { print DEBUG "Signup = 1\n" } if($cgi->cookie('signedup') eq 'yes' && !$settings{'signup_multiple'}) { $string{'already_signed_up'} =~ s/<>/$settings{'wemail'}/g; $error = $string{'already_signed_up'}; if ($settings{'debug'}) { print DEBUG "Already signed up\n" } } else { &checkuserinput } if ($error eq '') { if ($settings{'debug'}) { print DEBUG "No Errors with input\n" } $cookie = $cgi->cookie( -name => 'signedup', -value => 'yes', -expires => '+4Y' ); if ($settings{'confirmemail'}) { &confirm } else { &dosuccess } } } elsif ( $signup == 2 ) # User is confirming his e-mail { &checkconfirm; } &assignuserinfo; $info{'HIDDENFORM'} = ''; $info{'HIDDENFORM'} .= ''; $info{'MESSAGE'} = $error; &dotemplate('signup_form.tpl'); sub dotemplate { my ($temp) = @_; &readtemplate('signup_header.tpl'); $info{'HEADER'} = $tpl; &readtemplate('signup_footer.tpl'); $info{'FOOTER'} = $tpl; &readtemplate($temp); $tpl =~ s/<<([^>]+)>>/$info{$1}/g; print $cgi->header(-cookie => $cookie); print $tpl; exit; } sub readconfirm { open(DATA, "$data_dir/confirm.data"); flock(DATA, $LOCK_SH); @confirm = ; flock(DATA, $LOCK_UN); close(DATA); } sub writeconfirm { open(DATA, "> $data_dir/confirm.data"); flock(DATA, $LOCK_EX); print DATA @confirm; flock(DATA, $LOCK_UN); close(DATA); } sub confirm { &readconfirm; $found = 0; foreach (@confirm) { if ($_ =~ /^\d+&&$user{'email'}&&/) { $found = 1; $_ = '' } } $time = time; push @confirm, join('&&', $time, $user{'email'}, $username, $user{'password'}, $user{'name'}, $user{'address1'}, $user{'address2'}, $user{'city'}, $user{'state'}, $user{'zip'}, $user{'country'}, $user{'phone'}, $user{'email'}, $cgi->param('referrer') ) . "\n"; &writeconfirm; $info{'URL'} = $settings{'cgi_url'} . "/signup.cgi?signup=2&t=$time"; $info{'EMAIL'} = $user{'email'}; &sendmail('signup_confirm.tpl'); &dotemplate('signup_email_sent.tpl'); } sub checkconfirm { $time = $cgi->param('t'); $found = 0; &readconfirm; foreach (@confirm) { if ( $_ =~ /^$time&&/ ) { chomp; $found = 1; ($time, $user{'email'}, $username, $user{'password'}, $user{'name'}, $user{'address1'}, $user{'address2'}, $user{'city'}, $user{'state'}, $user{'zip'}, $user{'country'}, $user{'phone'}, $user{'email'}, $user{'referrer'}) = split('&&', $_); $_ = ''; } } if (!$found) { $info{'CODE'} = $time; &dotemplate('signup_bad_code.tpl') } else { &writeconfirm; &dosuccess } } sub checkuserinput { if ($settings{'debug'}) { print DEBUG "In checkuserinput\n" } $username = $cgi->param('username'); foreach ( @userfields ) { $formuser{$_} = $cgi->param($_); $formuser{$_} =~ s/\r|\n//g; } $username =~ tr/A-Z/a-z/; $error = ''; if ($username eq '') { &adderror($string{'no_username'}) } else { $length = length($username); if ($username eq $formuser{'password'}) { &adderror($string{'user_pass_same'}) } if ($username =~ /[^\w\d]/) { &adderror($string{'username_invalid'}) } if (-e "$accounts_dir/$username") { &adderror($string{'user_exists'}) } if ($length < 4 || $length > 16) { &adderror($string{'username_length'}) } } if ($formuser{'password'} eq '') { &adderror($string{'no_password'}) } else { $length = length($formuser{'password'}); if ($length < 4 || $length > 8) { &adderror($string{'password_length'}) } if ($formuser{'password'} =~ /[^\w\d]/) { &adderror($string{'password_invalid'}) } } if ($formuser{'name'} eq '') { &adderror($string{'no_name'}) } if ($formuser{'address1'} eq '') { &adderror($string{'no_address'}) } if ($formuser{'city'} eq '') { &adderror($string{'no_city'}) } if ($formuser{'state'} eq '') { &adderror($string{'no_state'}) } if ($formuser{'zip'} eq '') { &adderror($string{'no_zip'}) } if ($formuser{'country'} eq '') { &adderror($string{'no_country'}) } if ($formuser{'phone'} eq '') { &adderror($string{'no_phone'}) } if (!&checkemail($formuser{'email'})) { &adderror($string{'email_invalid'}) } elsif ($settings{'signup_multiple'} != 1) { #make sure e-mail is not already used. $accountseval = <<'EOF'; &readuser($member); if ($user{'email'} =~ /^$formuser{'email'}$/i ) { $string{'email_exists'} =~ s/<>/$formuser{'email'}/g; &adderror( $string{'email_exists'} ); last; } EOF &accountsdir; } %user = %formuser; } sub dosuccess { #done checking, now setup files: my($thisdir) = "$accounts_dir/$username"; mkdir("$thisdir", 0777) || &error($string{'error_directory_create'}, 'ERROR', $!, 'NAME', "$thisdir"); chmod 0777, "$thisdir"; mkdir("$thisdir/logs", 0777) || &error($string{'error_directory_create'}, 'ERROR', $!, 'NAME', "$thisdir/logs"); chmod 0777, "$thisdir/logs"; mkdir("$thisdir/logs/aff", 0777) || &error($string{'error_directory_create'}, 'ERROR', $!, 'NAME', "$thisdir/logs/aff"); chmod 0777, "$thisdir/logs/aff"; &writeuser($username); open(DATA,">$thisdir/balance.data") || &error($string{'error_file_create'}, 'ERROR', $!, 'NAME', 'balance.data'); print DATA $settings{start_balance}; close(DATA); chmod 0777, "$thisdir/balance.data"; open(DATA,">$thisdir/bids.data") || &error($string{'error_file_create'}, 'ERROR', $!, 'NAME', 'bids.data'); close(DATA); chmod 0777, "$thisdir/bids.data"; $info{'USERNAME'} = $username; $info{'PASSWORD'} = $user{'password'}; $info{'EMAIL'} = $user{'email'}; &sendmail('signup_welcome.tpl'); if ($settings{'affiliate'} && ($settings{'affiliate_signup'} > 0) && ($user{'referrer'} ne '')) { require 'include/affiliate.cgi'; &afflog($user{'referrer'}, 3, $settings{'affiliate_signup'}, $username); } &dotemplate('signup_success.tpl'); } sub error { my ($str, %info) = @_; $str =~ s/<<([^>]+)>>/$info{$1}/g; print $cgi->header; print $str; exit; }