Avatar billede dj_uncas Nybegynder
13. august 2006 - 19:31 Der er 14 kommentarer og
1 løsning

url encode/decode v. form.action

Hejsa

Jeg har et sært problem:

Jeg har noget krypteret data som jeg skal transportere via en QueryString variabel. Dette bliver så encoded serverside og i html source ser det ud som det skal.

Men når jeg skal hen til en anden side bruger jeg form post, og sætter action på min form således:

theForm.action = '?data=kj0389402op0809%20%20alks%3e';

Herefter er det som om javascript tager over og roder rundt med min url, så den ender med at submitte form'en med en *de*coded version af url'en!?!?

Er der nogen der kender dette problem, eller har en løsning?
Avatar billede thesurfer Nybegynder
13. august 2006 - 19:43 #1
Prøv at encode den igen: theForm.action = '?data=' + escape('kj0389402op0809%20%20alks%3e');
Avatar billede mclemens Nybegynder
13. august 2006 - 20:00 #2
Synes ikke den decoder her...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
window.onload=function(){
document.theForm.action = '?data=kj0389402op0809%20%20alks%3e';
}
</script>

</head><body>
<form action="" method="post" name="theForm">
<input type="submit" value="ok">
</form>
</body></html>
Avatar billede mclemens Nybegynder
13. august 2006 - 20:00 #3
- men det varierer måske fra browser til browser...
(testet IE 6.0 og FF 1.5.0.4)
Avatar billede mclemens Nybegynder
13. august 2006 - 20:03 #5
- Hmm, det skulle ikke være links :D
Avatar billede mclemens Nybegynder
13. august 2006 - 20:08 #6
Men dobbelt encoding som thesurfer foreslår 13/08-2006 19:43:29
er nok det du har brug for... Men umiddelbart tror jeg næsten at
du har en decoder i javascriptet - for hvis ikke du har det så
er det måske browser specifikt og så kan en dobbelt encoding
medføre at url'en er dobbelt encoded i den ene browser mens
den kun er enkelt encoded i den anden browser...
Avatar billede dj_uncas Nybegynder
13. august 2006 - 23:51 #7
Jeg kan ikke encode igen, da jeg kun har url'en som en lang string - så skal jeg til at regex'e mig igennem den, men det må kunne løses anderledes..

Jeg bruger ASP.NET hvilket generer en javascript function der submitter min form. Funktionen gør dog ikke andet end at se på om der nogen eventhandlers på onsubmit, kører dem hvis der er, og submitter herefter.

Jeg får samme resultat i både IE og FF...
Avatar billede thesurfer Nybegynder
13. august 2006 - 23:59 #8
[Jeg kan ikke encode igen, da jeg kun har url'en som en lang string]:
Det forstår jeg ikke..

Hvordan ser din form ud?
Avatar billede mclemens Nybegynder
14. august 2006 - 00:04 #9
Og hvordan får du fat i url'en? Du kan evt. hente den ind i js
ved hjælp af denne hvis den står som get variabel i url'en ...
http://www.eksperten.dk/spm/724039#rid6373520
- Og så via. thesurfer's 13/08-2006 19:43:29
dobbbelt encode den via javascript...

(kender ikke til asp.net's kapacitet og begrænsninger)
Avatar billede olebole Juniormester
14. august 2006 - 13:53 #10
<ole>

Når du sender data med en form, bruger du én metode ... enten 'get' eller 'post'. At bruge begge dele på én gang, er noget snask, der kun indbyder til fejl  ;o)

Sender du med 'get' bliver data i alle felter automatisk encoded korrekt.

Bruger du 'post', opretter du blot et hidden-field:
    <input type="hidden" name="data" value="Øvlebøvle">

På serveren spørger så du blot på dét felt ... i stedet for at kikke på, hvad dine get-variabler (query-strengen) måtte indeholde

/mvh
</bole>
Avatar billede dj_uncas Nybegynder
14. august 2006 - 14:11 #11
Jeg har dropppet url-encoding helt, da det slet ikke passer ind i mit scenarie... Nu krypterer jeg bare uden "farlige" tegn.

... og lukker spørgsmålet.
Avatar billede mclemens Nybegynder
14. august 2006 - 18:46 #12
Hehe, Thesurfer og mig var begge nygerrige efter at se årsagen
til problemet og klar på at kigge lidt efter hvad årsagen er / var ...
( [Hvordan ser din form ud?] , [Og hvordan får du fat i url'en?] )

Så kommer Olebole lige med ind i tråden - og øger samlet viden
/ erfaring af deltagerne i tråden med en faktor 10 (overdrivelse
fremmer forståelsen) ... Så går der 20 min. og du dropper du at
få problemet løst og vælger at undgå farlige tegn istedet ...

Men så længe man kan undgå et problem
er det på en måde jo også løst :D
Avatar billede thesurfer Nybegynder
14. august 2006 - 23:33 #13
Hmm.. dårlig kunde.. velkommen til blacklisten.. :-)
Avatar billede olebole Juniormester
15. august 2006 - 10:57 #14
- man kan ikke tvinge folk til at lære, hvis de insisterer på ikke at lære  ;o)
Avatar billede dj_uncas Nybegynder
15. august 2006 - 23:55 #15
Hehe - man kan jo ikke vinde hver gang ;-)

Jeg diskuterede det med min kollega, og inddragede jeres kommentarer/forslag, og vi blev enige om at løse det på den nemmeste og hurtigste måde - a.k.a ændre i krypteringen..

Det forståes at vi har en stram deadline :-(

Vi er også blevet enige om at næste gang vi skal tilbage til projektet skal vi lave hele navigations strukturen om....
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester