Schrift
[thread]209[/thread]

Formularübergabedaten auslesen: nicht mit cgi.pm...

Leser: 2


<< |< 1 2 >| >> 18 Einträge, 2 Seiten
ppm1
 2004-03-14 18:36
#1676 #1676
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
@renee

Das ist klar.

Es gibt da ja noch ne handvoll mehr möglichkeiten das mit dem CGI modul zu machen.

Aber genau das will ich ja nicht.


@Ronnie

Ist das denn schneller?
Wie funktioniert das denn damit? ICh hab die ERklärung nicht ganz verstanden...

@ALL

Sonst noch Möglichkeiten?\n\n

<!--EDIT|ppm1|1079282494-->
ppm1
 2004-03-14 20:37
#1677 #1677
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Naja....

Ich wie würde man es denn in mod_perl machen?
format_c
 2004-03-15 10:18
#1678 #1678
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Nich zu vergessen CGI::Fast.

Gruß Alex
pq
 2004-03-15 19:13
#1679 #1679
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Free Faq,15.03.2004, 16:47]Vorher muss halt das richtige Modul geladen werden:
CGI(qw(:standard));
Aber ansonsten FUNKTIONIERT ES, nur use strict, hat was dagegen.
Habe nur geschrieben, wie ich das bisher gemacht habe,...[/quote]
also das mit :standard war schon klar, bin ja nicht ganz so doof. aber
wir müssen verschiedene versionen von CGI.pm haben.
sag mir doch bitte mal, unter welchem umständen param() ein
arrayref zurückgibt?
param() ohne parameter gibt einfach nur strings zurück, mehr nicht!
ich weiss ja nicht, wie lange du den code schon benutzt, aber das geht so
nicht. hier ein beispiel mit meiner version
von CGI.pm:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
$ perl -wle'
use Data::Dumper;
use CGI qw/:standard/;
print $CGI::VERSION;
for (param()) {
 print "param: ($_)";
}' multi=1 multi=2 multi=3 einzeln=23
3.00
param: (multi)
param: (einzeln)
\n\n

<!--EDIT|pq|1079370827-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
ppm1
 2004-03-14 17:58
#1680 #1680
User since
2003-09-14
142 Artikel
BenutzerIn
[default_avatar]
Hallo

ICh wollte mal fragen was es für möglichkeiten gibt, um Daten die von einem Formular mittels get oder post (also mal für beides) übergeben werden auszulesen.

Ich machte dies immer mit

use CGI;
my $cgi->new CGI;
my $name=$cgi->param('name');
....


Aber mir ist aufgefallen, dass das eigentlich super langsam ist....


Gibt es da andere vor allem schnellere Möglichkeiten?


Patrick Müller

P.S. ICh hab auch schon mal drüber nachgedacht nur das zeug aus dem CGI.pm Modul zu übernhemen, was die Formulareverarbeitung macht, aber das ist irgendwie nicht richtig gelungen...
Ronnie
 2004-03-14 18:32
#1681 #1681
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Es gibt ansonsten noch die Möglichkeit CGI::Lite zu verwenden.
[E|B]
 2004-03-14 19:40
#1682 #1682
User since
2003-08-08
2561 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Ich glaube du meinst das:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
read(STDIN, $input, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $input);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;
}


Sollte man aber dann doch lieber CGI.pm verwenden. ;)
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]
Strat
 2004-03-14 20:31
#1683 #1683
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
schneller ist die von E|B vorgeschlagene Loesung; das Problem damit ist halt nur, dass sie eventuell Sicherheitsluecken bietet und eventuell nur einen Teil der Parameter auslesen kann...

Warum ist dir CGI.pm zu langsam? CPAN:CGI_Lite ist ein klein wenig schneller, aber der Flaschenhals einer Anwendung sind diese Module in der Regel nicht. Wenn du es genau wissen willst, dann schau dir mal das Modul CPAN:Devel::DProf an...

Wenn du eine schnelle Loesung haben willst, dann vergiss Perl/CGI und verwende mod_perl...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Free Faq
 2004-03-14 22:55
#1684 #1684
User since
2003-09-10
141 Artikel
BenutzerIn
[default_avatar]
Habs bisher immer so gemacht, aber richtig "use strict" konform is das leider nicht :rock:
Die Elsefunktion schreib ich denn noch um, in meine geliebten Hasharrays :D
Code: (dl )
1
2
3
4
5
6
7
8
for (param()){
if ($#$_ == 0) { #stricterror
$Query{$_} = param($_);
}
else {
$Query{$_} = join(" || ",param($_));
}
}
\n\n

<!--EDIT|Free Faq|1079297812-->
Haut mich nicht, ich bin ein Noob!
Relais
 2004-03-15 01:04
#1685 #1685
User since
2003-08-06
2244 Artikel
ModeratorIn
[Homepage] [default_avatar]
[E|B
,14.03.2004, 18:40]Ich glaube du meinst das:

Code: (dl )
[..URGLPUH!...]


Sollte man aber dann doch lieber CGI.pm verwenden. ;)

[E|B]: Buh, pfui, schäme Dich. Der Code kann keine Multivalues, neben vielen anderen Nachteilen, die mir gerade mal nicht einfallen.

Problemlösung: Besorge Dir ganz viel weiße Farbe und übermal die verdreckte Stelle. 8)
Erst denken, dann posten --
26. Deutscher Perl- u. Raku -Workshop 15. bis 17.04.2024 in Frankfurt/M.

Winter is Coming
<< |< 1 2 >| >> 18 Einträge, 2 Seiten



View all threads created 2004-03-14 18:36.