#!/usr/bin/perl -w use CGI qw(:standard -debug); use CGI::Carp qw(fatalsToBrowser); ########### Credits ################# # Script written by R. Todd Vandenbark ##################################### # ----------- define variables ---------- my $form; # input form my $orgName; # organization name my $contact; # contact name my $cphone; # contact phone my $contem; # contact email my @errstr=""; # error string # --------- initialize error flags ---- $badOrg=0; $badname=0; $badphone=0; $badem=0; $error=0; # ---- files -------------- $orgfile = '../../org.txt'; $tempfile= '../tempfile.txt'; # --- get and clean input ---- $form = "editorg.cgi"; $orgName = param("orgName"); chomp $orgName; $orgName = &cleaninput($orgName); $contact = param("contactName"); chomp $contact; $contact = &cleaninput($contact); $cphone = param("cphone"); chomp $cphone; $contem = param("contactEmail"); chomp $contem; $contem = &cleaninput($contem); # ----- check name ------- $badname = &ckname($contact); # ------ check phone ------- $cphone =~ s/^\s+// ; # strip leading spaces $cphone =~ s/\s+$// ; # strip trailing spaces # if ($cphone !~ /^\(?\d{3}[)-]? \d{3}[-]?\d{4}$/x) if ($cphone !~ /^\W{0,1}\d{3}\W{0,1}\s{0,1} \W{0,1}\s{0,1}\d{3}\s{0,1} \W{0,1}\s{0,1}\d{4}$/x ) { $badphone=1; $error++; push (@errstr, " phone $cphone ");} # ------ check org --------- if ($orgName !~ /^[\w]+[ -]?\w*[ -]?\w*$/i) { $badOrg=1; $error++; push (@errstr, "org $orgName ");} # ------ check email ------ if ($contem !~ /^[\w.]+@\w[\w.-]+\w\.[A-Za-z]{2,4}$/) { $badem=1; $error++; push (@errstr, "email $contem ");} # ----- process & output results ---- if (!$error) { # replace file data &update1(); $title = "Update complete."; $content = '

Update another OR back to Main Menu

'; } else { # return to form foreach (@errstr) { $errors .= $_; } # -- end foreach -- $title = "Invalid entry"; $content = '

Please '. ''. ' go back and try again

'. "

Invalid $errors

"; } &pgprint(); # ------------ subroutines used ----------- sub cleaninput { my $string = $_[0]; $string =~ s/<([^>]|\n)*>//g ; # strip HTML $string =~ s/^\s+// ; # strip leading spaces $string =~ s/\s+$// ; # strip trailing spaces return $string; } sub ckname { my $input = $_[0]; my $result=0; # returns bad/good name result if ($input !~ /^[\w]+[ -]?\w*[ -]?\w*$/i) { $result=1; $error++; push (@errstr, " name: $input"); } return $result; } sub update1 { my ($orgName2, $contact2, $contem2, $contph2); open (MEGADATA, "<$orgfile") || die "Can't open $orgfile: $!\n"; open (TMPMEGADATA, ">$tempfile") || die "Can't open temporary file $tempfile: $!\n"; while ( ) { ( $orgName2, $contact2, $contem2, $contph2 ) = split( /:/, $_ ); if ($orgName eq $orgName2) { # found org $tmpout = join( ":", $orgName, $contact, $contem, $cphone); $tmpout .= "\n"; print (TMPMEGADATA "$tmpout") || die "Can't append $tmpout to $orgfile: $!\n"; } else { $tmpout = join(":", $orgName2, $contact2, $contem2, $contph2 ); print (TMPMEGADATA $tmpout) || die "Error writing $tempfile: $!\n"; } } # ---- end while loop ----- close MEGADATA; # close files close TMPMEGADATA; unlink $orgfile || die "Can't delete old $orgfile: $!\n"; rename $tempfile, $orgfile || die "Can't rename $tempfile to $orgfile: $!\n"; } # ---- end update1 sub ----------- sub pgprint { $logo = ''; my $css = ''; print header(); print start_html (-title => $title, -head => $css, -class => 'oneColFixCtrHdr'); print '
'; print '
'; print "$content"; print <
Report a problem.
Main menu. Help function EOF print '
'. ''. '
'; print end_html(); }