einen link,url encode senden mit GET für perl script
Alain
- browser
Hallo,
da ich nun weiss wo das problem liegt bei meinem Formular perlscript,stellt sich
mir die frage,wie man einen browser dazu bringt einen direkten link,url encode zu senden?
Ich kann das leider nicht mit einem submit button bzw. POST methode tun,da der link sich bereits
innerhalb eines formulars befindet.
Das problem stellt sich im Moment nur beim NS4 der den link nicht url encoded sendet.
Könnte da eventuell href=link type="application/x-www-form-urlencoded" helfen?
Grüsse
Alain
Hallo nochmal,
also ich habs nochmal angesehen und gemerkt dass der NS probleme hat mit
href links die leerzeichen beinhalten,weil der nur den link sendet bis zu ersten leerzeichen
bsp. weise wenn der link so "http://www.meinperlscript.com/perl.cgi?dass soll geschickt werden" lautet
dann sendet netscape 4.xy nur
"http://www.meinperlscript.com/perl.cgi?dass "
während bei einer action und post methode er es richtig sendet.
Wie kann man das problem lösen?
es nützt auch nichts wenn man z.b. so nen link
href="$cgiurl?command=delitem&$desc=$itemname" type="application/x-www-form-urlencoded"
setzt im perlformular
Gruss
Alain
Hallo Alain,
http://www.meinperlscript.com/perl.cgi?dass soll geschickt werden
Leerzeichen gehören nicht in eine URL, ganz egal welchen Browser Du verwendest.
So wär´s richtig:
http://www.meinperlscript.com/perl.cgi?dass+soll+geschickt+werden
Gruß Sabine
Hallo Sabi,
danke für die info,aber...
http://www.meinperlscript.com/perl.cgi?dass soll geschickt werden
Leerzeichen gehören nicht in eine URL, ganz egal welchen Browser Du verwendest.
So wär´s richtig:
http://www.meinperlscript.com/perl.cgi?dass+soll+geschickt+werden
das problem ist das dies ein spezieller link im formular ist der einen url-gecodeten link benötigt,da das script einen urlcode link erwartet.
Also das gegenteil von
$key =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
$val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
ich habe eine variablen-namen und möchte die url-coden nicht encoden :)
geht das irgendwie mit dem CGI modul vielleicht mit $cgi->query?
Grüsse
Alain
Hallo,
http://www.meinperlscript.com/perl.cgi?dass soll geschickt werden
Leerzeichen gehören nicht in eine URL, ganz egal welchen Browser Du verwendest.
So wär´s richtig:
http://www.meinperlscript.com/perl.cgi?dass+soll+geschickt+werden
muss mich nochmal korrigieren Sabine,Dein Hinweis war Gold wert ->*knuddell* ;-)
Du hattest natürlich recht mit den leerzeichen und ich hatte nen denkfehler bez. url recode gemacht.
Ich habe das natürlich jetzt so gelöst dass ich genau das gemacht habe,was perl nach dem übermitteln tut (um das formular zu verarbeiten) -> + ersetzten durch leerzeichen $urlitem =~ tr/+/ /;und andere dinge...da hab ich einfach dasselbige getan was perl tut
bsp.:
my $urlitem = "dass soll geschickt werden";
$urlitem =~ tr/ /+/;#ersetzte leerzeichen durch +
#was aus $urlitem
"dass+soll+geschickt+werden"
#macht.Und standart gepackt
$urlitem =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$urlitem =~ s/<!--(.|[^>]|\n)*-->//g;
damit hab ich dann ein fertiggestellten href link perlscript-compatibel gemacht....so dass perl diese daten richtig erkennt und auch ausführt und funktioniert jetzt mit allen browser,die ich habe -> einwandfrei.
Komisch,dass von sowas hier nie die rede war,musste auch in selfhtml stunden suchen bis ich mal auf diesen hinweis gekommen bin,jedoch nicht darauf,dass man leerzeichen durch + ersetzt,es stand lediglich wie das perl auf geschickte formular daten reagiert und sie bearbeitet.Wäre vielleicht mal ne idee für nen umgekehrten hinweis.
Möglicherweise hab ich das übersehen,die suche über self... hat jedenfalls nix gebracht nur über php.
Besten dank nochma Sabine und gute Nacht
Grüsse
Alain
Hallo,
nach unfangreicher recherche hab nun endlich ein script gefunden,
welches meine lösung voll erfüllt.
sub urlencode {
my($esc) = @_;
$esc =~ s/^\s+|\s+$//gs;
$esc =~ s/([^a-zA-Z0-9_-.])/uc sprintf("%%%02x",ord($1))/eg;
$esc =~ s/ /+/g;
$esc =~ s/%20/+/g;
return $esc;
}
Falls jemand mal sowas braucht für perl...
Grüsse
Alain
P.S.Den code hab ich von einem perlshop script
http://www.1-hit.com/online-payment-systems/free-paypal-shopping-cart-script-perl.htm