tack.shtml 644 147 36 1677 6710670556 6134 XML-FORUM: Förhandsregistrering för besökare Information Management 99
XML-Forum
Hemsida | XML-Guiden | Vad är XML?

Tack för din registrering!

Biljetten kommer med posten. Seminarieprogrammet för XML-forum hittar du här på webbservern.

 

[an error occurred while processing this directive] cgi/formail.cgi 755 147 36 116446 6710670176 7062 #!/usr/local/bin/perl ############################################################################## # # # BFormMail Version 1.3b # # # # Copyright 1997 Brian Sietz bsietz@infosheet.com # # The InfoSheet Place: http://www.infosheet.com # # Created 8/14/97 # # # # Modifications Copyright (c) 1997 Brian S. Sietz, All Rights Reserved. # # This version of FormMail may be used and modified free of charge by anyone # # so long as this copyright notice and the one below by Matthew Wright remain# # intact. By using this code you agree to indemnify Brian Sietz from any # # liability arising from it's use. You also agree that this code cannot be # # sold to any third party without prior written consent of both Brian Sietz # # and Matthew M. Wright. # # # ############################################################################## # FormMail Version 1.6 # # Copyright 1995-1997 Matt Wright mattw@worldwidemart.com # # Created 06/09/95 Last Modified 05/02/97 # # Matt's Script Archive, Inc.: http://www.worldwidemart.com/scripts/ # ############################################################################## # COPYRIGHT NOTICE # # Copyright 1995-1997 Matthew M. Wright All Rights Reserved. # # # # FormMail may be used and modified free of charge by anyone so long as this # # copyright notice and the comments above remain intact. By using this # # code you agree to indemnify Matthew M. Wright from any liability that # # might arise from its use. # # # # Selling the code for this program without prior written consent is # # expressly forbidden. In other words, please ask first before you try and # # make money off of my program. # # # # Obtain permission before redistributing this software over the Internet or # # in any other medium. In all cases copyright and header must remain intact # # # # # ############################################################################## # # # # # BFormMail # # # # Took Matt's original 1.6 script and made some mods... # # # # Mods made were mostly from features in yForm # # which was Matt's original FormMail 1.5 with changes by: # # Donald E. Killen 10/2/96 and # # Ashley Bass 1/29/97 # # # # History: # # # # Added 6/29/97: # # - Added table output to HTML (orig by Don Killen in yForm) # # - Added printing of realname & email in HTML output (orig Ashley Bass)# # - Added misc form fields: # # cc - if present, a Cc: is added to the e-mail when sent # # bcc - if present, a Bcc: is added to the e-mail when sent # # - Added courtesy reply (based on code from yForm) # # Changed field names; a bit longer, but easier to understand: # # courtesy_reply - if present and email also present, reply sent # # courtesy_reply_texta, First line of courtesy reply text # # courtesy_reply_textb, Second line of courtesy reply text # # courtesy_who_we_are, Name or company underneath the "Regards" # # courtesy_our_url, URL to print after "Regards" # # courtesy_our_email, e-mail to print after "Regards" # # - Added database option (based on code from yForm) # # append_db, if present, value is the data file to append to # # db_delimiter, delimiter between fields # # - Removed FormMail display in HTML output (except error output) # # Nobody should care about who wrote the script, if they really # # want to know, they should send e-mail to the webmaster... # # # # Added 8/14/97: # # - Added support for e-mail to fax services by adding two form fields: # # faxto, if specified is the e-mail address of the fax service. # # for Faxaway, it would be a phone number@faxaway.com, i.e. # # 16097951994@faxaway.com # # faxfrom, specifies the From: field for the fax. Faxaway requires # # field to be a valid Faxaway customer. # # More information can be found in the BFormMail.readme file or # # at http://www/faxaway.com # # - Added db_fields config field to control which fields are appended # # to the database. # # - All form fields appended to database are stripped of newlines so # # that all outputted fields will be on a single record # # # # Added 1/27/98: # # - Added courtesy_who_we_are2 - same as courtesy_who_we_are but an # # extra line of text if needed. # # - Added support for another e-mail to fax service. Fax service is # # selected by the faxservice field. Currently, the faxservice field # # can specify 'faxaway' or 'faxsav'. Each service requires a slightly# # different header. The following fields fully control the form-fax # # gateway: # # faxservice, if specified enables the form-to-fax gateway and will # # specify the desired service. The current services supported # # are 'faxsav' and 'faxaway'. For more information on these # # services visit http://www.faxsav.com or http://www.faxaway.com # # Please note, faxsav requires the variable $faxstamp # # to be set - see below. # # faxnum, specifies the telephone number to send the fax. For # # security, the full e-mail address is assembled in the script. # # Both faxsav & faxaway require the format as follows: # # 16095551212 # # faxfrom, specifies the From: field for the fax. Must be from an # # authorized account from both services. For example: # # bsietz@infosheet.com # # More information can be found in the BFormMail.readme file. # # # # Added 7/16/98: # # - Added check for valid e-mail address, if specified for cc: & bcc: # # # # Added 12/9/98: # # - Fixed bug in print_blank_fields # # # # Define Variables # # Detailed Information Found In README File. # # $mailprog defines the location of your sendmail program on your unix # # system. # $mailprog = '/usr/lib/sendmail'; # @referers allows forms to be located only on servers which are defined # # in this field. This security fix from the last version which allowed # # anyone on any server to use your FormMail script on their web site. # @referers = ('webway.se','www.xml-forum.com'); #---------Define directory for CODE files $code_dir="/opt/www/data/xml-forum/data"; # BSS # The Faxsav service requires a special stamp as part of the e-mail header # # for additional security. This stamp, along with the appropriate 'from' # # field are required in order to send a fax. # # # # Replace passwd in the line below with the stamp issued from faxsav. # # visit http://www.faxsav.com for more information. # $faxstamp = 'passwd'; $faxstamp = 'NL###V'; # Done # ############################################################################## #DEBUG START #print "Content-type: text/plain\n\n"; #DEBUG END # Check Referring URL &check_url; # Retrieve Date &get_date; # Parse Form Contents &parse_form; # Check Required Fields &check_required; # Return HTML Page or Redirect User &return_html; # Send E-Mail &send_mail; #BSS # Courtesy E-Mail to Visitor &send_courtesy; #Append Database &append_database; # Send E-Fax if ($Config{'faxservice'}) { &send_mail($Config{'faxservice'}) }; #Send Subscription request to listserver if ($Config{'subscribe_listaddr'}) { &subscribe_list; } #BSS # Main ends here - only subroutines follow # ############################################################################## sub check_url { # Localize the check_referer flag which determines if user is valid. local($check_referer) = 1; # If a referring URL was specified, for each valid referer, make sure # that a valid referring URL was passed to FormMail. if ($ENV{'HTTP_REFERER'}) { foreach $referer (@referers) { if ($ENV{'HTTP_REFERER'} =~ m|https?://([^/]*)$referer|i) { $check_referer = 1; last; } } } else { $check_referer = 1; } # If the HTTP_REFERER was invalid, send back an error. if ($check_referer != 1) { &error('bad_referer') } } sub get_date { # Define arrays for the day of the week and month of the year. # @days = ('Söndagen','Måndagen','Tisdagen','Onsdagen', 'Torsdagen','Fredagen','Lördagen'); @months = ('Januari','Februari','Mars','April','Maj','Juni','July', 'Augusti','September','Oktober','November','December'); # Get the current time and format the hour, minutes and seconds. Add # # 1900 to the year to get the full 4 digit year. # ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime(time))[0,1,2,3,4,5,6]; $time = sprintf("%02d:%02d:%02d",$hour,$min,$sec); $year = $year<70 ? $year += 2000 : $year +=1900 ; # Format the date. # $date = "$days[$wday] den $mday $months[$mon] $year kl: $time"; $mon2 = $mon + 1; #$date2 = "$mday/$mon2/$year"; $date2 = "$year-$mon2-$mday"; } sub parse_form { # Define the configuration associative array. # %Config = ('recipient','', 'subject','', 'email','', 'realname','', 'redirect','', 'bgcolor','', 'background','', 'link_color','', 'vlink_color','', 'text_color','', 'alink_color','', 'title','', 'sort','', 'print_config','', 'required','', 'env_report','', 'return_link_title','', 'return_link_url','', 'print_blank_fields','', 'missing_fields_redirect','', #BSS 'cc','', 'bcc','', 'courtesy_reply','', 'courtesy_our_url','', 'courtesy_our_email','', 'courtesy_reply_texta','', 'courtesy_reply_textb','', 'courtesy_who_we_are','','courtesy_who_we_are2','', 'append_db','', 'db_delimiter','', 'db_fields','', 'faxservice','', 'faxnum','', 'faxfrom','', #BSS #Webway Codes 'code','', #Address to e-mail subscription request to #Use "email" address and "realname" 'subscribe_listaddr','', #Variable that should be "on" to send request 'subscribe_variable','', # ); # Determine the form's REQUEST_METHOD (GET or POST) and split the form # # fields up into their name-value pairs. If the REQUEST_METHOD was # # not GET or POST, send an error. # if ($ENV{'REQUEST_METHOD'} eq 'GET') { # Split the name-value pairs @pairs = split(/&/, $ENV{'QUERY_STRING'}); } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { # Get the input read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Split the name-value pairs @pairs = split(/&/, $buffer); } else { &error('request_method'); } # For each name-value pair: # foreach $pair (@pairs) { # Split the pair up into individual variables. # local($name, $value) = split(/=/, $pair); # Decode the form encoding on the name and value variables. # $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; # If they try to include server side includes, erase them, so they # aren't a security risk if the html gets returned. Another # security hole plugged up. $value =~ s///g; # If the field name has been specified in the %Config array, it will # # return a 1 for defined($Config{$name}}) and we should associate # # this value with the appropriate configuration variable. If this # # is not a configuration form field, put it into the associative # # array %Form, appending the value with a ', ' if there is already a # # value present. We also save the order of the form fields in the # # @Field_Order array so we can use this order for the generic sort. # if (defined($Config{$name})) { $Config{$name} = $value; } else { if ($Form{$name} && $value) { $Form{$name} = "$Form{$name}, $value"; } #BSS - Bug fix provided by JJ Steward: below line prevents print_blank_fields #from working correctly. # elsif ($value) { else { push(@Field_Order,$name); $Form{$name} = $value; } } } # The next six lines remove any extra spaces or new lines from the # # configuration variables, which may have been caused if your editor # # wraps lines after a certain length or if you used spaces between field # # names or environment variables. # $Config{'required'} =~ s/(\s+|\n)?,(\s+|\n)?/,/g; $Config{'required'} =~ s/(\s+)?\n+(\s+)?//g; $Config{'env_report'} =~ s/(\s+|\n)?,(\s+|\n)?/,/g; $Config{'env_report'} =~ s/(\s+)?\n+(\s+)?//g; $Config{'print_config'} =~ s/(\s+|\n)?,(\s+|\n)?/,/g; $Config{'print_config'} =~ s/(\s+)?\n+(\s+)?//g; $Config{'db_fields'} =~ s/(\s+|\n)?,(\s+|\n)?/,/g; $Config{'db_fields'} =~ s/(\s+)?\n+(\s+)?//g; #If variable "code" exists, then read from file and replace #variables - i.e. file overrides form data if (length($Config{'code'}) > 0) { $filename=$code_dir . '/' . $Config{'code'}; #DEBUG start #print "\nÖppnar fil: $filename\n"; #DEBUG end open(INFILE, $filename ); @LINES = ; close(INFILE); foreach $LINE (@LINES) { if (substr($LINE,1,1) ne "#") { chop($LINE); #DEBUG start #print "Rad: $LINE\n"; #DEBUG end @terms = split(/\=/,$LINE); $Config{$terms[0]} = $terms[1]; } } } # Split the configuration variables into individual field names. # @Required = split(/,/,$Config{'required'}); @Env_Report = split(/,/,$Config{'env_report'}); @Print_Config = split(/,/,$Config{'print_config'}); @Print_DB = split(/,/,"$Config{'db_fields'},$Form{'db_fields'}"); } sub check_required { # Localize the variables used in this subroutine. # local($require, @error); if (!$Config{'recipient'}) { if (!defined(%Form)) { &error('bad_referer') } else { &error('no_recipient') } } # For each require field defined in the form: # foreach $require (@Required) { # If the required field is the email field, the syntax of the email # # address if checked to make sure it passes a valid syntax. # if ($require eq 'email' && !&check_email($Config{$require})) { push(@error,$require); } # Otherwise, if the required field is a configuration field and it # # has no value or has been filled in with a space, send an error. # elsif (defined($Config{$require})) { if (!$Config{$require}) { push(@error,$require); } } # If it is a regular form field which has not been filled in or # # filled in with a space, flag it as an error field. # elsif (!$Form{$require}) { push(@error,$require); } } # If any error fields have been found, send error message to the user. # if (@error) { &error('missing_fields', @error) } } sub return_html { # Local variables used in this subroutine initialized. # local($key,$sort_order,$sorted_field); # If redirect option is used, print the redirectional location header. # if ($Config{'redirect'}) { print "Location: $Config{'redirect'}\n\n"; } # Otherwise, begin printing the response page. # else { # Print HTTP header and opening HTML tags. # print "Content-type: text/html\n\n"; print "\n \n"; # Print out title of page # if ($Config{'title'}) { print " $Config{'title'}\n" } else { print " Tack!\n" } print " \n \n
\n"; # Print custom or generic title. # if ($Config{'title'}) { print "

$Config{'title'}

\n" } else { print "

Tack för att ni fyllde i vårat formulär

\n" } print "
\n"; print "Nedan följer det Ni skickat till $Config{'recipient'} "; print "
$date


\n"; #BSS Table output for HTML (orig Don Killen) # Also realname and email fields (orig Ashley Bass) print ""; if ($Config{'realname'}) { print ""; print "\n" } if ($Config{'email'}) { print ""; print "\n\n" } #BSS # Sort alphabetically if specified: # if ($Config{'sort'} eq 'alphabetic') { foreach $field (sort keys %Form) { # If the field has a value or the print blank fields option # # is turned on, print out the form field and value. # if ($Config{'print_blank_fields'} || $Form{$field}) { #BSS - table output #print "$field: $Form{$field}

\n"; print "

"; print "\n"; #BSS } } } # If a sort order is specified, sort the form fields based on that. # elsif ($Config{'sort'} =~ /^order:.*,.*/) { # Set the temporary $sort_order variable to the sorting order, # # remove extraneous line breaks and spaces, remove the order: # # directive and split the sort fields into an array. # $sort_order = $Config{'sort'}; $sort_order =~ s/(\s+|\n)?,(\s+|\n)?/,/g; $sort_order =~ s/(\s+)?\n+(\s+)?//g; $sort_order =~ s/order://; @sorted_fields = split(/,/, $sort_order); # For each sorted field, if it has a value or the print blank # # fields option is turned on print the form field and value. # foreach $sorted_field (@sorted_fields) { if ($Config{'print_blank_fields'} || $Form{$sorted_field}) { #BSS - table output #print "$sorted_field: $Form{$sorted_field}

\n"; print "

"; print "\n"; #BSS } } } # Otherwise, default to the order in which the fields were sent. # else { # For each form field, if it has a value or the print blank # # fields option is turned on print the form field and value. # foreach $field (@Field_Order) { if ($Config{'print_blank_fields'} || $Form{$field}) { #BSS - table output #print "$field: $Form{$field}

\n"; print "

"; print "\n"; #BSS } } } #BSS print "
Namn:$Config{'realname'}
E-post:$Config{'email'}
$field:$Form{$field}
$sorted_field:$Form{$sorted_field}
$field:$Form{$field}

\n"; #BSS print "


\n"; # Check for a Return Link and print one if found. # if ($Config{'return_link_url'} && $Config{'return_link_title'}) { print "

\n"; } # Print the page footer. # print <<"(END HTML FOOTER)";

(END HTML FOOTER) } } sub send_mail { # Localize variables used in this subroutine. # #BSS local ($faxservice) = @_; local($print_config,$key,$sort_order,$sorted_field,$env_report); # Open The Mail Program open(MAIL,"|$mailprog -t"); if ($faxservice) { if ($faxservice eq 'faxaway') { print MAIL "To: $Config{'faxnum'}\@faxaway.com\n"; print MAIL "From: $Config{'faxfrom'}\n"; } if ($faxservice eq 'faxsav') { print MAIL "To: $Config{'faxnum'}\@faxsav.com\n"; print MAIL "X-STAMP: $faxstamp\n"; print MAIL "X-FAXSENDER: $Config{'faxfrom'}\n"; } } else { print MAIL "To: $Config{'recipient'}\n"; print MAIL "From: $Config{'email'} ($Config{'realname'})\n"; if ($Config{'cc'} && check_email($Config{'cc'})) { print MAIL "Cc: $Config{'cc'}\n" }; if ($Config{'bcc'} && check_email($Config{'bcc'})) { print MAIL "Bcc: $Config{'bcc'}\n" }; } #BSS # Check for Message Subject if ($Config{'subject'}) { print MAIL "Subject: $Config{'subject'}\n\n" } else { print MAIL "Subject: WWW formulär\n\n" } print MAIL "Nedan är resultatet i formuläret. Det är skickat av:\n"; print MAIL " $Config{'realname'} ($Config{'email'})\n den $date\n"; #BSS if ($Config{'faxservice'}) { print MAIL "Detta brev faxades även till: $Config{'faxnum'}\n"; } #BSS print MAIL "-" x 75 . "\n\n"; if (@Print_Config) { foreach $print_config (@Print_Config) { if ($Config{$print_config}) { print MAIL "$print_config: $Config{$print_config}\n\n"; } } } # Sort alphabetically if specified: # if ($Config{'sort'} eq 'alphabetic') { foreach $field (sort keys %Form) { # If the field has a value or the print blank fields option # # is turned on, print out the form field and value. # if ($Config{'print_blank_fields'} || $Form{$field} || $Form{$field} eq '0') { print MAIL "$field: $Form{$field}\n\n"; } } } # If a sort order is specified, sort the form fields based on that. # elsif ($Config{'sort'} =~ /^order:.*,.*/) { # Remove extraneous line breaks and spaces, remove the order: # # directive and split the sort fields into an array. # $Config{'sort'} =~ s/(\s+|\n)?,(\s+|\n)?/,/g; $Config{'sort'} =~ s/(\s+)?\n+(\s+)?//g; $Config{'sort'} =~ s/order://; @sorted_fields = split(/,/, $Config{'sort'}); # For each sorted field, if it has a value or the print blank # # fields option is turned on print the form field and value. # foreach $sorted_field (@sorted_fields) { if ($Config{'print_blank_fields'} || $Form{$sorted_field} || $Form{$sorted_field} eq '0') { print MAIL "$sorted_field: $Form{$sorted_field}\n\n"; } } } # Otherwise, default to the order in which the fields were sent. # else { # For each form field, if it has a value or the print blank # # fields option is turned on print the form field and value. # foreach $field (@Field_Order) { if ($Config{'print_blank_fields'} || $Form{$field} || $Form{$field} eq '0') { print MAIL "$field: $Form{$field}\n\n"; } } } print MAIL "-" x 75 . "\n\n"; # Send any specified Environment Variables to recipient. # foreach $env_report (@Env_Report) { if ($ENV{$env_report}) { print MAIL "$env_report: $ENV{$env_report}\n"; } } close (MAIL); } #subscribe_list sub subscribe_list { if ($Config{$Config{'subscribe_variable'}} eq 'on') { # Open The Mail Program open(MAIL,"|$mailprog -t"); print MAIL "To: $Config{'subscribe_listaddr'}\n"; print MAIL "From: $Config{'email'} ($Config{'realname'})\n"; print MAIL "X-sender: Requested by web form\n"; print MAIL "Subject: subscribe\n"; print MAIL "\n\nsubscribe\n"; } close (MAIL); } sub check_email { # Initialize local email variable with input to subroutine. # $email = $_[0]; # If the e-mail address contains: # if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ || # the e-mail address contains an invalid syntax. Or, if the # # syntax does not match the following regular expression pattern # # it fails basic syntax verification. # $email !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/) { # Basic syntax requires: one or more characters before the @ sign, # # followed by an optional '[', then any number of letters, numbers, # # dashes or periods (valid domain/IP characters) ending in a period # # and then 2 or 3 letters (for domain suffixes) or 1 to 3 numbers # # (for IP addresses). An ending bracket is also allowed as it is # # valid syntax to have an email address like: user@[255.255.255.0] # # Return a false value, since the e-mail address did not pass valid # # syntax. # return 0; } else { # Return a true value, e-mail verification passed. # return 1; } } sub body_attributes { # Check for Background Color if ($Config{'bgcolor'}) { print " bgcolor=\"$Config{'bgcolor'}\"" } # Check for Background Image if ($Config{'background'}) { print " background=\"$Config{'background'}\"" } # Check for Link Color if ($Config{'link_color'}) { print " link=\"$Config{'link_color'}\"" } # Check for Visited Link Color if ($Config{'vlink_color'}) { print " vlink=\"$Config{'vlink_color'}\"" } # Check for Active Link Color if ($Config{'alink_color'}) { print " alink=\"$Config{'alink_color'}\"" } # Check for Body Text Color if ($Config{'text_color'}) { print " text=\"$Config{'text_color'}\"" } } ############################################################################# # # # BSS: Send courtesy email to the visitor thanking him, etc. # # # # Not sure if this portion of code was written by Ashley Bass or by # # Donald Killen, but was taken from yForm # # # # Code is basically the same, just some variable name changes to be # # more self explainatory. # # # sub send_courtesy { if ($Config{'courtesy_reply'} && $Config{'email'}) { open (MAIL,"|$mailprog -t"); print MAIL "To: $Config{'email'} ($Config{'realname'})\n"; print MAIL "From: $Config{'courtesy_our_email'}\n"; if ($Config{'subject'}) { print MAIL "Subject: Tack för att ni skickade vårt $Config{'subject'}\n\n"; $subjflag = 1; } else { print MAIL "Subject: Tack! - $date\n\n"; $subjflag = 0; } print MAIL "$date Fyllde ni i "; if ( $subjflag ) { print MAIL "vårt\n `$Config{'subject'}` formulär.\n\n"; } else { print MAIL "vårt formulär.\n\n"; } if ($Config{'courtesy_reply_texta'}) { print MAIL "$Config{'courtesy_reply_texta'}\n"; } if ($Config{'courtesy_reply_textb'}) { print MAIL "$Config{'courtesy_reply_textb'}\n\n"; } print MAIL "Hälsningar,\n"; print MAIL "$Config{'courtesy_who_we_are'}\n"; print MAIL "$Config{'courtesy_who_we_are2'}\n"; print MAIL "$Config{'courtesy_our_email'}\n"; print MAIL "$Config{'courtesy_our_url'}\n"; close (MAIL); } } ############################################################################# # # # BSS: Append to a Database file # # # # Originally appeared in yForm written by Ashley Bass 1/29/97 # # # sub append_database { local($print_db,$field); if ($Config{'append_db'}) { if (-w $Config{'append_db'}) { &lockit ("$Config{'append_db'}.lock"); open (DATABASE, ">>$Config{'append_db'}"); print DATABASE "$Config{'db_delimiter'}"; print DATABASE "$date2$Config{'db_delimiter'}"; print DATABASE "$time$Config{'db_delimiter'}"; foreach $print_db (@Print_DB) { if ($Config{$print_db}) { $field = $Config{$print_db}; $field =~ s/\r\n/ /gs; print DATABASE "$field"; } if ($Form{$print_db}) { $field = $Form{$print_db}; $field =~ s/\r\n/ /gs; print DATABASE "$field"; }; print DATABASE "$Config{'db_delimiter'}"; }; print DATABASE "\n"; close (DATABASE); &unlockit ("$Config{'append_db'}.lock"); } } } sub lockit { local ($lock_file) = @_; local ($endtime); $endtime = 20; $endtime = time + $endtime; while (-e $lock_file && time < $endtime) { sleep(1); } open(LOCK_FILE, ">$lock_file") || &file_open_error ("$lock_file", "Lock File Routine", __FILE__, __LINE__); # flock(LOCK_FILE, 2); # 2 exclusively locks the file } ####################################################################### sub unlockit { local ($lock_file) = @_; # flock(LOCK_FILE, 8); # 8 unlocks the file close(LOCK_FILE); unlink($lock_file); } ####################################################################### sub file_open_error { local ($bad_file, $script_section, $this_file, $line_number) = @_; print "Content-type: text/html\n\n"; &CgiDie ("I am sorry, but I was not able to access $bad_file.") } sub error { # Localize variables and assign subroutine input. # local($error,@error_fields) = @_; local($host,$missing_field,$missing_field_list); if ($error eq 'bad_referer') { if ($ENV{'HTTP_REFERER'} =~ m|^https?://([\w\.]+)|i) { $host = $1; print <<"(END ERROR HTML)"; Content-type: text/html Bad Referrer - Access Denied

Bad Referrer - Access Denied
The form attempting to use FormMail resides at $ENV{'HTTP_REFERER'}, which is not allowed to access this cgi script.

If you are attempting to configure FormMail to run with this form, you need to add the following to \@referers, explained in detail in the README file.

Add '$host' to your \@referers array.


FormMail V1.6 © 1995 - 1997 Matt Wright
A Free Product of Matt's Script Archive, Inc.
(END ERROR HTML) } else { print <<"(END ERROR HTML)"; Content-type: text/html FormMail v1.6
FormMail
Copyright 1995 - 1997 Matt Wright
Version 1.6 - Released May 02, 1997
A Free Product of Matt's Script Archive, Inc.
(END ERROR HTML) } } elsif ($error eq 'request_method') { print <<"(END ERROR HTML)"; Content-type: text/html Error: Request Method
Error: Request Method
The Request Method of the Form you submitted did not match either GET or POST. Please check the form and make sure the method= statement is in upper case and matches GET or POST.

FormMail V1.6 © 1995 - 1997 Matt Wright
A Free Product of Matt's Script Archive, Inc.
(END ERROR HTML) } elsif ($error eq 'no_recipient') { print <<"(END ERROR HTML)"; Content-type: text/html Error: No Recipient
Error: No Recipient
No Recipient was specified in the data sent to FormMail. Please make sure you have filled in the 'recipient' form field with an e-mail address. More information on filling in recipient form fields can be found in the README file.
FormMail V1.6 © 1995 - 1997 Matt Wright
A Free Product of Matt's Script Archive, Inc.
(END ERROR HTML) } elsif ($error eq 'missing_fields') { if ($Config{'missing_fields_redirect'}) { print "Location: $Config{'missing_fields_redirect'}\n\n"; } else { foreach $missing_field (@error_fields) { $missing_field_list .= "
  • $missing_field\n"; } print <<"(END ERROR HTML)"; Content-type: text/html Error: Blank Fields
    Error: Blank Fields
    The following fields were left blank in your submission form:

      $missing_field_list

    These fields must be filled in before you can successfully submit the form.

    Please use your browser's back button to return to the form and try again.


    (END ERROR HTML) } } exit; } ig{'subject'}\n\n"; $subjflag = 1; } else { print MAIL "Subject: Tack! - $date\n\n"; $subjflag = 0; } print MAIL "$date Fyllde ni i "; if ( $subjflag ) { print MAIL "vårt\n `$Cdata/boka 644 147 36 4162 6710674040 5671 #Innehåller en rad variabler #------------ #Den här filen anges med namn i variabel i formulär # #------------ # Fält du inte använder kan kommenteras ut med # '#'-tecken i _första_ position #Mottagare av formulär recipient=p02@webway.se cc=oej@nc-forum.com #bcc=epostadress #------------------------------------------------------- #Variabler för att skicka tackbrev via e-post till ifyllare #E-postadress _måste_ finnas i fältet "email" courtesy_reply=yes courtesy_reply_texta=Tack för din beställning! courtesy_reply_textb=Din biljett kommer i vanlig post. courtesy_who_we_are=Exponova AB/Information Management 99 courtesy_who_we_are2=via XML-Forum (http://www.xml-forum.com) courtesy_our_url=http://www.exponova.se/im99 courtesy_our_email=info@exponova.se #Ärenderad på brev subject=Biljettbeställning Infoman 99 (via XML-Forum) #Redirect till tacksida #redirect=http://www.xml-forum.com/tack.shtml #----------------- #Följande fält används endast om redirect ej är definierad #Om inte redirect, titel på svarssida title=Tack för din registrering! #Länk för att komma tillbaka - visas för användaren return_link_url=http://www.xml-forum.com/ return_link_title=XML-Forum [hemsida] #Bakgrunds-bild #background=URL till bakgrund.gif #Färg bgcolor=#ffffc0 text_color=red link_color=blue vlink_color=green alink_color=green #Fält som måste vara ifyllda required=namn,email,postadress,postnr,ort #Sida att gå till om fält saknas #missing_fields_redirect=error-form.shtml #Sortering i svarsbrev sort=order:namn,foretag,postadress,postnr,ort,land,telefon,telefax,url,email,befattning,bransch #Rapportera blanka fält? 1=ja 0=nej print_blank_fields=1 #Rapportera variabler från UNIX Environment & CGI env_report=REMOTE_HOST,HTTP_USER_AGENT #------------------------------------------------ #Lägg data på fil append_db=/opt/www/data/xml-forum/data/infoman.dat db_delimiter=| db_fields=namn,foretag,postadress,postnr,ort,land,telefon,telefax,url,email,befattning,bransch #------------------------------------------------- #Prenumerationsvariabler subscribe_listaddr=p02@webway.se subscribe_variable=skrep data/data.dat 666 147 36 0 6710670221 6341 data/infoman.dat 666 147 36 1061 6710673711 7156 |1999-4-25|20:49:37|||webway||lkj|lkj||||oej@webway.se| |1999-4-25|20:50:36|||webway||192 54|Sollentuna||||oej@webway.se| |1999-4-25|20:57:32|Olle JOhansson|webway||192 54|Sollentuna||||oej@webway.se||| |1999-4-25|20:58:17|Olle E. Johansson|Webway AB||192 54|Sollentuna|Telefon|Telefax||p02@webway.se|b01|br01| |1999-4-25|20:59:19|Olle E. Johansson|Webway AB|frestavägen 69|192 54|Sollentuna|Telefon|Telefax||p02@webway.se|b01|br01| |1999-4-25|21:15:03|Olle E. Johansson|Webway AB|frestavägen 69|192 54|Sollentuna|-LAND|Telefon|Telefax||p02@webway.se|b01|br01| data/svar 644 147 36 1265 6710662675 5744 #Innehåller en rad variabler #Den här filen anges med namn i variabel i formulär # # # #Mottagare av formulär recipient=oej@webway.se #Ärenderad på brev subject=Hej på dej #Redirect till tacksida redirect=http://www.intranetica.com #Fält som måste vara ifyllda required=realname,email #Sortering i svarsbrev sort=order:Meddelandet,Adress,Postnr,Stad,Tel,Fax print_blank_fields=1 #------------------------------------------------ #Lägg data på fil append_db=data.dat db_delimiter=| db_fields=realname,email #------------------------------------------------- #Prenumerationsvariabler subscribe_listaddr=p02@webway.se subscribe_variable=skrep in before you can successfully submit the form.

    Please use your browser's back button to return to the form and try again.


    (END ERROR HTML) } } exit; } ig{'subject'}\n\n"; $subjflag = 1; } else { print MAIL "Subject: Tack! - $date\n\n"; $subjflag = 0; } print MAIL "$date Fyllde ni i "; if ( $subjflag ) { print MAIL "vårt\n `$Cdata/boka 644 147 36 4162 6710674040 5671 #Innehåller en rad variabler #------------ #Den här filen anges med namn i variabel i formulär # #------------ # Fält du inte använder kan kommenteras ut med # '#'-tecken i _första_ position #Mottagare av formulär recipient=p02@webway.se cc=oej@nc-forum.com #bcc=epostadress #------------------------------------------------------- #Variabler för att skicka tackbrev via e-post till ifyllare #E-postadress _måste_ finnas i fältet "email" courtesy_reply=yes courtesy_reply_texta=Tack för din beställning! courtesy_reply_textb=Din biljett kommer i vanlig post. courtesy_who_we_are=Exponova AB/Information Management 99 courtesy_who_we_are2=via XML-Forum (http://www.xml-forum.com) courtesy_our_url=http://www.exponova.se/im99 courtesy_our_email=info@exponova.se #Ärenderad på brev subject=Biljettbeställning Infoman 99 (via XML-Forum) #Redirect till tacksida #redirect=http://www.xml-forum.com/tack.shtml #----------------- #Följande fält används endast om redirect ej är definierad #Om inte redirect, titel på svarssida title=Tack för din registrering! #Länk för att komma tillbaka - visas för användaren return_link_url=http://www.xml-forum.com/ return_link_title=XML-Forum [hemsida] #Bakgrunds-bild #background=URL till bakgrund.gif #Färg bgcolor=#ffffc0 text_color=red link_color=blue vlink_color=green alink_color=green #Fält som måste vara ifyllda required=namn,email,postadress,postnr,ort #Sida att gå till om fält saknas #missing_fields_redirect=error-form.shtml #Sortering i svarsbrev sort=order:namn,foretag,postadress,postnr,ort,land,telefon,telefax,url,email,befattning,bransch #Rapportera blanka fält? 1=ja 0=nej print_blank_fields=1 #Rapportera variabler från UNIX Environment & CGI env_report=REMOTE_HOST,HTTP_USER_AGENT #------------------------------------------------ #Lägg data på fil append_db=/opt/www/data/xml-forum/data/infoman.dat db_delimiter=| db_fields=namn,foretag,postadress,postnr,ort,land,telefon,telefax,url,email,befattning,bransch #------------------------------------------------- #Prenumerationsvariabler subscribe_listaddr=p02@webway.se subscribe_variable=skrep data/data.dat 666 147 36 0 6710670221 6341 data/infoman.dat 666 147 36 1061 6710673711 7156 |1999-4-25|20:49:37|||webway||lkj|lkj||||oej@webway.se| |1999-4-25|20:50:36|||webway||192 54|Sollentuna||||oej@webway.se| |1999-4-25|20:57:32|Olle JOhansson|webway||192 54|Sollentuna||||oej@webway.se||| |1999-4-25|20:58:17|Olle E. Johansson|Webway AB||192 54|Sollentuna|Telefon|Telefax||p02@webway.se|b01|br01| |1999-4-25|20:59:19|Olle E. Johansson|Webway AB|frestavägen 69|192 54|Sollentuna|Telefon|Telefax||p02@webway.se|b01|br01| |1999-4-25|21:15:03|Olle E. Johansson|Webway AB|frestavägen 69|192 54|Sollentuna|-LAND|Telefon|Telefax||p02@webway.se|b01|br01| data/svar 644 147 36 1265 6710662675 5744 #Innehåller en rad variabler #Den här filen anges med namn i variabel i formulär # # # #Mottagare av formulär recipient=oej@webway.se #Ärenderad på brev subject=Hej på dej #Redirect till tacksida redirect=http://www.intranetica.com #Fält som måste vara ifyllda required=realname,email #Sortering i svarsbrev sort=order:Meddelandet,Adress,Postnr,Stad,Tel,Fax print_blank_fields=1 #------------------------------------------------ #Lägg data på fil append_db=data.dat db_delimiter=| db_fields=realname,email #------------------------------------------------- #Prenumerationsvariabler subscribe_listaddr=p02@webway.se subscribe_variable=skrep