1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
#!/usr/bin/perl use strict; use warnings; use CGI; my $cgi = CGI->new; my $p = $cgi->param('test'); print $cgi->header, $cgi->start_html; if (defined $p && length $p) { print $cgi->p( qq/test ist: "$p"/, $cgi->br, 'das ist in Hex: ', unpack("H*", $p) ); } else { print $cgi->start_form, 'test: ', $cgi->textfield(-name => 'test'), $cgi->submit, $cgi->end_form; } print $cgi->end_html;
2011-04-28T07:30:24 GwenDragon//EDIT: Wenn ich in einem Texteditor folgende Zeichenfolge 123 RETURN NEWLINE erzeuge, in die Zwischenablage kopiere und dann in das Textfeld einfüge, erscheinen NEWLINE und RETURN als Leerzeichen, zu erkennen am Hex 20.
Da wird vielleicht der Browser die Zeichen umwandeln oder die Zwischenablage konvertiert irgendwas; ich weiß es nicht.
2011-04-28T09:47:39 LinuxerWie sieht es mit Code aus?
Wie ist das Formular definiert?
Wie werden die Daten verarbeitet?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#!/usr/bin/perl use strict; use warnings; use CGI; my $cgi = CGI->new; my $p = $cgi->param('test'); print $cgi->header, $cgi->start_html; if (defined $p && length $p) { print $cgi->p( qq/test ist: "$p"/, $cgi->br, 'das ist in Hex: ', unpack("H*", $p) ); } else { print $cgi->start_form, 'test: ', $cgi->textarea(-name=>'test', -default=>'Text eingeben', -rows=>10, -columns=>50), $cgi->submit, $cgi->end_form; } print $cgi->end_html;
2011-04-28T10:06:30 GwenDragonWenn du mein Skript verwendest mit einem mehrzeiligen Textfeld, kannst du ja auch Enter eingeben, dann wird \x0d\x0a eingefügt;
2011-04-28T10:59:13 GwenDragonEin Return oder Newline lässt sich ja nicht ins Textfeld eingeben
2011-04-28T10:59:13 GwenDragonWarum musst du auf \n bzw. \r testen?
2011-04-28T17:49:26 GwenDragonCode (perl): (dl )$email =~ s/[\x0d\x0a\t]//gs;
2011-04-28T17:42:34 Silja2011-04-28T10:59:13 GwenDragonWarum musst du auf \n bzw. \r testen?
Mehrfach habe ich gelesen, dass man insbesondere Eingabefelder in Kontaktformularen darauf prüfen soll, damit ein Bot nicht weitere Empfängeradressen einfügen kann.
Vielleicht ist da aber überholt, wenn der Browser (alle?) \r und \n in Textfeldern (gegenüber früher?) gar nicht mehr weitergibt.
2011-04-28T10:40:58 SiljaUnd offen bleibt meine Frage, ob man bei einem einzeiligen Textfeld \x0d bzw. \x0a erkennen kann.