2010-09-28 1 views
-1

Пока он отправляет электронное письмо, но независимо от того, что я делаю, он не будет перенаправлять (ошибки сервера), и мне нужно перенаправить его на страницу пользовательских ошибок.Как я могу mod formmail, чтобы страница с ошибкой все еще отправляла и отправляла по электронной почте и переадресовывала?

Как мне изменить это, чтобы оно работало?

Оригинальный код:

# If any error fields have been found, send error message to the user. # 
    if (@error) { &error('missing_fields', @error) } 

новый код:

if (@error) { # Print HTTP header and opening HTML tags.       # 
     print "Content-type: text/html\n\n"; 
     print "<html>\n <head>\n"; 

     # Print out title of page           # 
     if ($Config{'title'}) { print "<title>$safeConfig{'title'}</title>\n" } 
     else     { print "<title>Thank You</title>\n"  } 

     print " </head>\n <body"; 

     # Get Body Tag Attributes           # 
     &body_attributes; 

     # Close Body Tag              # 
     print ">\n <center>\n"; 

     # Print custom or generic title.          # 
     if ($Config{'title'}) { print "<h1>$safeConfig{'title'}</h1>\n" } 
     else { print "<h1>Thank You For Filling Out This Form</h1>\n" } 

     print "</center>\n"; 

     print "Below is what you submitted to $safeConfig{'recipient'} on "; 
     print "$date<p><hr size=1 width=75\%><p>\n"; 

     # If a sort order is specified, sort the form fields based on that. # 
     if ($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) { 
       local $sfname = &clean_html($sorted_field); 

       if ($Config{'print_blank_fields'} || $Form{$sorted_field} ne '') { 
        print "<b>$sfname:</b> $Form{$sorted_field}<p>\n"; 
       } 
      } 
     } 

     # Otherwise, use the order the fields were sent, or alphabetic.  # 
     else { 

      # Sort alphabetically if requested. 
      if ($Config{'sort'} eq 'alphabetic') { 
       @Field_Order = sort @Field_Order; 
      } 

      # 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) { 
       local $fname = &clean_html($field); 

       if ($Config{'print_blank_fields'} || $Form{$field} ne '') { 
        print "<b>$fname:</b> $Form{$field}<p>\n"; 
       } 
      } 
     } 

     print "<p><hr size=1 width=75%><p>\n"; 

     # Check for a Return Link and print one if found.     # 
     if ($Config{'return_link_url'} && $Config{'return_link_title'}) { 
      print "<ul>\n"; 
      print "<li><a href=\"$safeConfig{'return_link_url'}\">$safeConfig{'return_link_title'}</a>\n"; 
      print "</ul>\n"; 
     } 

     # Print the page footer.            # 
     print <<"(END HTML FOOTER)"; 
     <hr size=1 width=75%><p> 
     <center><font size=-1><a href="http://www.scriptarchive.com/formmail.html">FormMail</a> V1.92 &copy; 1995 - 2002 Matt Wright<br> 
A Free Product of <a href="http://www.scriptarchive.com/">Matt's Script Archive, Inc.</a></font></center> 
     </body> 
     </html> 
(END HTML FOOTER) 
    } 
} 
sub send_mail { 
    # Localize variables used in this subroutine.       # 
    local($print_config,$key,$sort_order,$sorted_field,$env_report); 

    # Open The Mail Program 
    open(MAIL,"|$mailprog 1>&2"); 

    print MAIL "To: $Config{'recipient'}\n"; 
    print MAIL "From: $Config{'email'} ($Config{'realname'})\n"; 

    # Check for Message Subject 
    if ($Config{'subject'}) { print MAIL "Subject: $Config{'subject'}\n\n" } 
    else     { print MAIL "Subject: WWW Form Submission\n\n" } 

    print MAIL "Below is the result of your feedback form. It was submitted by\n"; 
    print MAIL "$Config{'realname'} ($Config{'email'}) on $date\n"; 
    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"; 
      } 
     } 
    } 

    # If a sort order is specified, sort the form fields based on that.  # 
    if ($Config{'sort'} =~ /^order:.*,.*/) { 

     # Remove extraneous line breaks and spaces, remove the order:  # 
     # directive and split the sort fields into an array.     # 
     local $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} ne '') { 
       print MAIL "$sorted_field: $Form{$sorted_field}\n\n"; 
      } 
     } 
    } 

    # Otherwise, print fields in order they were sent or alphabetically.  # 
    else { 

     # Sort alphabetically if specified:         # 
     if ($Config{'sort'} eq 'alphabetic') { 
      @Field_Order = sort @Field_Order; 
     } 

     # 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} ne '') { 
       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); 

} 

sub return_html { 
    # Local variables used in this subroutine initialized.     # 
    local($key,$sort_order,$sorted_field); 

    # Now that we have finished using form values for any e-mail related  # 
    # reasons, we will convert all of the form fields and config values  # 
    # to remove any cross-site scripting security holes.      # 
    local($field); 
    foreach $field (keys %Config) { 
     $safeConfig{$field} = &clean_html($Config{$field}); 
    } 

    foreach $field (keys %Form) { 
     $Form{$field} = &clean_html($Form{$field}); 
    } 


    # If redirect option is used, print the redirectional location header. # 
    if ($Config{'redirect'}) { 
     print "Location: $safeConfig{'redirect'}\n\n"; 
    } 
+0

Я не могу найти этот код в любой версии [FormMail] (http: // nms-cgi .sourceforge.net/scripts.shtml). – daxim

+0

его в строке 283 – Jamie

+3

@Jamie См. Http://nms-cgi.sourceforge.net/faq_nms.html#What_is_this_i_nms_i_thing_all_about И посмотрите на http://search.cpan.org/perldoc/CGI::ContactForm –

ответ

0

ниже работал на линии 805:

print "Location: " . &clean_html($Config{'missing_fields_redirect'}) . "\n\n"; 
&send_mail; 

, а затем добавить это в форме

<input type="hidden" name="missing_fields_redirect" value="http://www.example.com"> 

но, как говорится в комментариях, лучше всего обновить до TFMail (что мне нужно будет сделать сам в ближайшее время)

 Смежные вопросы

  • Нет связанных вопросов^_^