Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

5476 Beiträge in 1178 Themen- von 498 Mitglieder - Neuestes Mitglied: Rithaquesri

22.05.2012 10:09
ProfiHost - SupportforumTechnikProgrammiersprachenFeedback Formular
Seiten: [1]   Nach unten
Drucken
Autor Thema: Feedback Formular  (Gelesen 2209 mal)
hansele
Newbie
*
Offline Offline

Beiträge: 32


Profil anzeigen WWW
« am: 18.09.2003 10:54 »

Hallo,
ich würde beim Feedback-Formular gerne eine Auswahl an Empfängern (Email) einfügen, d.h. der User kann entscheiden wer den Kommentar (Auswahlliste) erhalten soll.
Wie kann ich das ins ProfiHost Feedback-Formular einbauen?
Gespeichert
Carsten
Jr. Member
**
Offline Offline

Beiträge: 52


Profil anzeigen
« Antworten #1 am: 04.10.2003 01:40 »

Das gleiche Problem hatte ich kürzlich auch.
Wenn du das Skript postest, dann schreib ich, was da noch zusätzlich reingehört.
Gruß, Carsten
Gespeichert
hansele
Newbie
*
Offline Offline

Beiträge: 32


Profil anzeigen WWW
« Antworten #2 am: 04.10.2003 02:58 »

Hallo Carsten,

das wäre ja super!
Zitat

#!/usr/bin/perl

&ReadParse(*FORM);

my $sendmail = "/usr/sbin/sendmail -i -t";

# check all fields
my @list = split(/, /, $FORM{'required'});
for(@list) {
 if ($FORM{$_} eq "") {&error;}
}

# send Mail

open(MAIL, "| $sendmail");
print MAIL "Return-Path: ".''."\n";
print MAIL "To: ".''."\n";

if ($FORM{email} =~ /^[a-z0-9\_\.\-]*\@[a-z\-\.]*\.\w+$/i) {
 print MAIL "From: $FORM{email}\n";
} else {
 print MAIL "From: ".''."\n";
}

print MAIL "Subject: $FORM{'subject'}\n\n";

foreach (keys %FORM) {
 print MAIL "$_: $FORM{$_}\n";
}

close(MAIL);

# zweite Mail an den Kunden
if (("1" eq "1") && ($FORM{email} =~ /^[a-z0-9\_\.\-]*\@[a-z\-\.]*\.\w+$/i)) {

open(MAIL, "| $sendmail");
print MAIL "Return-Path: ".'select'."\n";
print MAIL "To: ".$FORM{email}."\n";
print MAIL "From: $FORM{email}\n";
 
print MAIL "Subject: Bestätigung $FORM{'subject'}\n\n";

foreach (keys %FORM) {
 print MAIL "$_: $FORM{$_}\n";
}
close(MAIL);

}


&ok;
exit;

## SUBS

sub ok {
print "Location: $FORM{'redirect'}\n\n";
exit;
}

sub error {
print "Location: $FORM{'missing_fields_redirect'}\n\n";
exit;
}

sub ReadParse {
  local (*in) = @_ if @_;
  local ($i, $key, $val);

  # Read in text
  if (&MethGet) {
    $in = $ENV{'QUERY_STRING'};
  } elsif (&MethPost) {
    read(STDIN,$in,$ENV{'CONTENT_LENGTH'});
  }

  @in = split(/[&;]/,$in);

  foreach $i (0 .. $#in) {
    # Convert plus's to spaces
    $in[$i] =~ s/\+/ /g;

    # Split into key and value.  
    ($key, $val) = split(/=/,$in[$i],2); # splits on the first =.

    # Convert %XX from hex numbers to alphanumeric
    $key =~ s/%(..)/pack("c",hex($1))/ge;
    $val =~ s/%(..)/pack("c",hex($1))/ge;

    # Associate key and value
    $in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator
    $in{$key} .= $val;

  }

  return scalar(@in);
}

# MethGet
# Return true if this cgi call was using the GET request, false otherwise

sub MethGet {
  return ($ENV{'REQUEST_METHOD'} eq "GET");
}

# MethPost
# Return true if this cgi call was using the POST request, false otherwise

sub MethPost {
  return ($ENV{'REQUEST_METHOD'} eq "POST");
}

Vielen Dank schonmal für die Hilfe!!!
Gespeichert
Carsten
Jr. Member
**
Offline Offline

Beiträge: 52


Profil anzeigen
« Antworten #3 am: 04.10.2003 19:15 »

In deinem Formular musst du ein Feld (per Radiobutton) "recipient" zusätzlich definieren, und dann eine Zahl übermitteln. Siehe evtl. Selfhtml.
Die Zahl wird genommen, damit von außen die echte Emailadresse nicht sichtbar ist. "1" wird dann adresse1@domain.invalid in meinem Beispiel.

Folgendes musst du ändern, pass auf die Backslashes vor dem @ auf.

Aus
Zitat

# check all fields
my @list = split(/, /, $FORM{'required'});
for(@list) {
 if ($FORM{$_} eq "") {&error;}
}

# send Mail


wird
Zitat

# check all fields
my @list = split(/, /, $FORM{'required'});
for(@list) {
 if ($FORM{$_} eq "") {&error;}
}

my $recipient;
if ($FORM{recipient} == 1) { $recipient = "adresse1\@domain.invalid"; }
elsif ($FORM{recipient} == 2) { $recipient = "adresse2\@domain.invalid"; }
elsif ($FORM{recipient} == 3) { $recipient = "adresse3\@domain.invalid"; }
elsif ($FORM{recipient} == 4) { $recipient = "adresse4\@domain.invalid"; }
else { $recipient = "webmaster\@domain.invalid"; }

# send Mail


Die Variable $recipient muss dann dort stehen, wo sendmail gesagt wird, wohin die Email soll, aus deinen

Zitat

print MAIL "To: ".''."\n";


(was übrigens so nicht funktioniert)

wird dann
Zitat

print MAIL "To: $recipient\n";


war jetzt alles sehr knapp, wenns Probleme gibt, poste noch mal.
Carsten
Gespeichert
Seiten: [1]   Nach oben
Drucken
Gehe zu: