1

私のサイトで使用しているフォームを処理するために formmail.pl を使用しています。名前、電子メール、電話番号、テキスト領域のテキストなど、スクリプトに送信されるフィールドがいくつかあります。

現状では、送信が成功すると、電話番号とテキストエリアのデータは正しく印刷されますが、入力された名前と電子メールは印刷されません。電子メールでは、「from」ヘッダーで名前と電子メールを送信し、成功ページと同様に、電話とテキストエリアのデータのみが電子メール本文に表示されます。

どちらの場合もすべてのデータを表示したいのですが、これを処理するコードのセクションが見つからないようです。3000 行を超えるコードを除いて、formmail.pl スクリプトを投稿したいので、責任があると思われる場所だけを投稿し、誰かが私を正しい方向に向けてくれることを願っています。私は Perl にかなり慣れていないので、このサイズのスクリプトを読んで理解するのは少し圧倒されます。

sub success_page {
  my ($self, $date) = @_;

  if ($self->{FormConfig}{'redirect'}) {
    print $self->cgi_object->redirect( $self->{FormConfig}{'redirect'} );
  }
  elsif ( $self->{CFG}{'no_content'}) {
    print $self->cgi_object->header(Status => 204);
  }
  else {
    $self->output_cgi_html_header;
    $self->success_page_html_preamble($date);
    $self->success_page_fields;
    $self->success_page_footer;
  }
}

sub success_page_html_preamble {
  my ($self, $date) = @_;

  my $title = $self->escape_html( $self->{FormConfig}{'title'} || 'Success' );
  my $torecipient = 'to ' . $self->escape_html($self->{FormConfig}{'recipient'});
  $torecipient = '' if $self->{Hide_Recipient};
  my $attr = $self->body_attributes;

  print <<END;
    <head>
    <title>$title</title>
  END

  $self->output_style_element;

  print <<END;
    <link type="text/css" href="css/stylesheet.css" rel="stylesheet" /></script>
    </head>

<body>

    <p>Below is what you submitted $torecipient on $date</p>
  END
}

sub success_page_fields {
  my ($self) = @_;

  foreach my $f (@{ $self->{Field_Order} }) {
    my $val = (defined $self->{Form}{$f} ? $self->{Form}{$f} : '');
    $self->success_page_field( $self->escape_html($f), $self->escape_html($val) );
  }
}


sub success_page_field {
  my ($self, $name, $value) = @_;
  print "<p><b>$name:</b> $value</p>\n";
}

さて、少し長くなります。そのようなものは主に成功ページ用であり、メール側とはあまり関係がありませんが、誰かがそこで必要なものを見つけることができれば、メールセクションにも適用できます.

さらに情報が必要な場合はお知らせください

前もって感謝します

4

1 に答える 1

2

私自身はNMS FormMailを実際に使用したことはありませんが、ソースを見ると、次の追加の構成オプションを設定することで、必要なものを実現できるようです。

$more_config{include_config_email} = 1;
$more_config{include_config_realname} = 1;

これにより、FormMail.pl はフィールドemailrealnameフィールドを特別な意味に加えて、通常のフォーム フィールドとして扱います。

于 2013-03-02T16:31:50.697 に答える