René: Tabellen - CGI - Sendmail

Hallo alle miteinander!
Ich habe da ein Problem: Wenn ich aus einem Formular heraus die eingegebenen Daten über ein CGI-Script auswähle und wieder zur Kontrolle in einer neuen Tabelle anzeigen lasse, gehen mir alle Wörter nach einem Leerzeichen verloren (z.B. Brandenburger Strasse 12 wird wieder angezeigt als Brandenburger). Das gleiche geschieht auch, wenn ich die eingegebenen Daten mit sendmail versende. Woran könnte das liegen? Danke für die Mühe!

René

Hier Teile des Scripts:

read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});
...
@Formularfelder = split(/&/, $Daten); #Felder einlesen
foreach $Feld (@Formularfelder)
{
  ($name, $value) = split(/=/, $Feld);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s/<!--(.\n)*-->//g;
  $Formular{$name} = $name;
  $Formular{$value} = $value;
  print "<tr valign=top><td width=10%>$Formular{$name}:</td><td width=5%></td><td width=10%><input readonly type=text size=30 name=$Formular{$name} value=$Formular{$value}></td></tr>\n";
}

  1. Hi,

    read(STDIN, $Daten, $ENV{'CONTENT_LENGTH'});

    argh.

    <Gebetsmühle>
    Laß diesen Uralt-Code, er ist fehlerhaft. Benutze das CGI-Modul:

    #!/usr/bin/perl -w
    use strict;
    use CGI qw(:standard *table);
    print header, start_html('Testseite'), startform, start_table;
    foreach (param) { print tr(td({-width=>'10%'}, $_:), td({width=>'5%'}, textfield(-name=>$_, -size=>30, -value=>param($_), -readonly))); }
    print end_table, endform, end_html;

    Ungetesteter Quickhack.

    print "<tr valign=top><td width=10%>$Formular{$name}:</td><td width=5%></td><td width=10%><input readonly type=text size=30 name=$Formular{$name} value=$Formular{$value}></td></tr>\n";

    Ich würde mir an Deiner Stelle mal den ausgegebenen HTML-Quellcode ansehen. Dein Fehler dürfte Dir ziemlich schnell auffallen, wenn Du die Grundregeln von HTML beherrschst.

    Cheatah