Chris: Umleitung auf eine andere Seite

Hallo zusammen,

für das nachfolgende Skript möchte ich eigentlich nicht, dass der User nur die Meldung bekommt "Mail wurde versendet", sondern ich möchte, dass der User auf eine Danke"html"seite umgeleitet wird.

Wie lautet der Befehl dazu? Wäre super wenn Ihr helfen könntet.

Anbei der Code:

#!/usr/bin/perl

my $from = "Absender";
my $email = "XXX@XXX.de";
my $subject = "Feedback-Formular";

my $key = '';
my $val = '';
my %in = ();
my $in = '';
if ( $ENV{REQUEST_METHOD} eq 'POST'){
read(STDIN, $in, $ENV{CONTENT_LENGTH});
}else{
$in = $ENV{QUERY_STRING};#GET lesen
}

for(split/&/,$in){##Input nach Paaren splitten key=val
($key , $val) = split/=/;#splitten nach key=val
$key =~ y/+/ /;# + durch Space ersetzen
$key =~ s/%(..)/pack("c",hex($1))/ge;#Sonderzeichen decodieren
$val =~ y/+/ /;# + durch Space ersetzen
$val =~ s/%(..)/pack("c",hex($1))/ge;

$in{$key} .= $val;
}

print "Content-type: text/html\n\n";

open (MAIL,"|/usr/sbin/sendmail -t");
print MAIL "From:$from\n";
print MAIL "To:$email\n";
print MAIL "Subject:$subject\n\n";
print MAIL"Anrede => $in{'anrede'}\n";
print MAIL"Name => $in{'name'}\n";
print MAIL"Vorname => $in{'vorname'}\n";
print MAIL"Strasse => $in{'strasse'}\n";
print MAIL"Hausnummer => $in{'hausnummer'}\n";
print MAIL"PLZ => $in{'plz'}\n";
print MAIL"Wohnort => $in{'wohnort'}\n";
print MAIL"Emailadresse => $in{'emailadresse'}\n";
print MAIL"Text => $in{'text'}\n";
print MAIL"Wunsch => $in{'wunsch'}\n";
print MAIL"Bewertung => $in{'vote'}\n";

close (MAIL);

print "Mail wurde gesendet";

Gruss Chris.

  1. Hallo,

    ersetzte

    print "Mail wurde gesendet";

    durch
    print "Location: danke.html\n\n";

    Bis dann...

    Alex :)

    1. hi alex,

      dankeschön.

      gruss und ein schönes wochenende.

      chris

    2. Hi, ich schon wieder:

      print "Location: danke.html\n\n";

      mit diesem befehl bekomme ich im browser die location angezeigt.

      ich meine jedoch, dass der user nach dem abdrücken des submit buttons auf die dankeseite umgeleitet wird.

      oder habe ich was falsch verstanden?

      plz help.

      dankeschön. chris

    3. Hi,

      sorry, falsch eingefügt. klappt alles :)

      cu chris

  2. use Mosche;

    my $key = '';
    my $val = '';
    my %in = ();
    my $in = '';
    if ( $ENV{REQUEST_METHOD} eq 'POST'){
    read(STDIN, $in, $ENV{CONTENT_LENGTH});
    }else{
    $in = $ENV{QUERY_STRING};#GET lesen
    }

    for(split/&/,$in){##Input nach Paaren splitten key=val
    ($key , $val) = split/=/;#splitten nach key=val
    $key =~ y/+/ /;# + durch Space ersetzen
    $key =~ s/%(..)/pack("c",hex($1))/ge;#Sonderzeichen decodieren
    $val =~ y/+/ /;# + durch Space ersetzen
    $val =~ s/%(..)/pack("c",hex($1))/ge;

    $in{$key} .= $val;
    }

    _Bitte_ verzichte auf diesen Code, und benutze CGI.pm:

    use CGI;
    my $q = new CGI;

    Parameter bekommst du dann mit $q->param('dein_key');

    Wenn du weiterhin dein %in behalten willst, benutze folgendes:

    my %in;
      $in{$_} = $q->param($_) foreach $q->param();

    Ich möchte darauf hinweisen, dass dieser Code es dir erlaubt, auf den gesamten _Schmus_ da oben zu verzichten, er ist aber nicht sehr performant, da jedesmal deine gesamten Parameter ausgelesen werden, obwohl du vielleicht nicht alle brauchst. Es ist aber mit _Sicherheit_ besser als dein Code.

    use Tschoe qw(Matti);