Schrift
[thread]6690[/thread]

Gänsefüsschen ausfiltern



<< >> 7 Einträge, 1 Seite
Chatter
 2005-02-04 18:25
#51559 #51559
User since
2005-02-04
3 Artikel
BenutzerIn
[default_avatar]
Hallo Perl-Profis

ich lese in einem Skript die Variable $beschreibung ein.

Nun darf diese Variable beim speichern unter gar keinen Umständen ein Gänsefüsschen ( " ) enthalten, da dies ein Trennzeichen der Datensätze in der Datenbank ist.

$value =~ s/\"//ge; und $value =~ s/"//ge;

funktioniert nicht.

Beim Einlesen der Formulardaten werden die " als %22 übergeben.

Wie kann ich diese " herausfiltern?

Vielen Dank

Alex
[E|B]
 2005-02-04 18:28
#51560 #51560
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
1. Mach das Flag "e" bei den regulären Ausdrücken bitte weg!
2. Lies die Formluardaten anstatt übet GET über POST ein, dann hast du das Problem erst gar nicht.
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Chatter
 2005-02-04 18:31
#51561 #51561
User since
2005-02-04
3 Artikel
BenutzerIn
[default_avatar]
Hallo

Das Flag e ist in dem Kontext  an der Stelle des Skriptes notwendig gewesen und GET brauche ich auch da mehr als 256 Zeichen übertragen werden.

Alex
[E|B]
 2005-02-04 18:45
#51562 #51562
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Willst du eine normale Formulatauswertung machen? POST hat seine Beschränkung bestimmt nicht bei 256 Zeichen.
Ansonsten lass folgenden Snippet drüber laufen:

Code: (dl )
$code =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Chatter
 2005-02-04 19:00
#51563 #51563
User since
2005-02-04
3 Artikel
BenutzerIn
[default_avatar]
Ich weiß ja auch das POST nicht bei 256 Zeichen endet, nur machen manche Browser bei URL&acute;s Probleme wenn diese länger als 256 Zeichen sind.

Deinen Codeschnipsel hatte ich auch schon drin, aber er hilft leider nicht weiter. Folgender Kontext liegt vor:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if ($ENV{'REQUEST_METHOD'} eq 'POST') {
 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else {
 $buffer = $ENV{'QUERY_STRING'};
}
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
       ($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;

$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/\"//ge;
$value =~ s/%22//ge;
$value =~ s/\%22//ge;
$value =~ s/~!/ ~!/g;
$value =~ s/\|//g;
$FORM{$name} = $value;
}


Vielleicht hilft das ja weiter? Ich verzweifel echt noch ;-)

Alex
[E|B]
 2005-02-04 19:15
#51564 #51564
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Hilfe, wieso nimmst du kein CGI.pm?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Dubu
 2005-02-04 19:32
#51565 #51565
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Chatter:
1.) Bitte, pack diesen Code weg und nimm CGI.pm, wie [E|B] schon sagte!

2.) Du scheinst GET und POST durcheinander zu bringen. Bei GET werden die Parameter in der URL uebertragen, bei POST kommen sie ueber STDIN.

3.) Das /e bei den Regexen ist definitiv nicht richtig. /e bedeutet "evaluiere die rechte Seite als Perlcode". Eine leere rechte Seite kann nicht evaluiert werden.

4.) Die "Datenbank" kommt nicht mit Anfuehrungszeichen zurecht? Sehr seltsam. Handelt es sich vielleicht um CSV-Daten? Dann solltest du Text::CSV bzw. Text::CSV_XS nehmen, vielleicht auch DBD::CSV. Dann brauchst du dir um das Quoten von Anfuehrungszeichen keine Gedanken zu machen.
<< >> 7 Einträge, 1 Seite



View all threads created 2005-02-04 18:25.