Toon posts:

[ASP] "&" in Querystring zorgt voor problemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Even een simpel voorbeeld om mijn probleem te illustreren:

Ik wil een string d.m.v een post terug naar de server sturen. Die string kan een "&" teken bevatten. Dit is tevens het teken dat gebruikt wordt om verschillende velden van elkaar te onderscheiden. Hoe kan ik dit oplssossen zodat wel gewoon de "&" op de server aankomt.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Kijk anders eens wat er met andere tekens gebeurt... %hexcode? Nu alleen nog ff de hexcode van & opzoeken :)

Een betere oplossing zou trouwens de speciale urlencode functies zijn aangezien er nog meer tekens een speciale betekenis hebben.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Nibble
  • Registratie: Juli 2001
  • Laatst online: 09:06
Ik vindt het een beetje vaag daar ik nooit met dit probleem zit, terwijl ik toch ook asp code geschreven heb, maar nooit een "&" teken nodig heb gehad om een veld te scheiden, maar dit met ,'s doe.
kijk eens op www.mysql.org
daar is qua sql veeeeeel te vinden, ook nuttig voor asp-ers.
Misschien wordt je daar wat wijzer.

T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:58

Janoz

Moderator Devschuur®

!litemod

Het gaat hier juist om de & in blaat.html?var1=hoi&var2=doei

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Janoz heeft gelijk. Ondanks dat het woord "Query" er in zit wil dit nog niet zeggen dat het om SQL gaat. :))

Verwijderd

Topicstarter
encodeURI(string) haalt geen "&" tekens uit een string.

  • Nibble
  • Registratie: Juli 2001
  • Laatst online: 09:06
Oh op die manier!
maar : "blaat.html?var1=hoi&var2=doei" is toch een GET
en geen POST.. :?

Anders kun je het oplossen door de plaats waart je je data in de DB fietst een replace uit te voeren.
Je replaced eerst alle "&" tekens met bv "@!" dan submit je en op het moment dat je data in de db gefietst wordt verander je die weer terug op dezelfde manier.

(ok, misschien omslachtige workaround, mar het zou kunnen)

Maar je zou het niet nodig moeten hebben als je met posts werkt hoor.

T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.


Verwijderd

Topicstarter
Een POST vormt onderwater ook een grote string waarin de verschillende velden met een "&" gescheiden worden. Maar anyhow, jouw methode om alle "&"-tjes door een ander caracter te vervangen is inderdaad een methode, maar dan wel een vieze. Ik hoop/verwacht dat er een mooiere moet zijn. escape(string) haalt de '&' weg, maar help ook andere characters om zeep, dat is dus niet de bedoeling

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11:02
Op vrijdag 03 mei 2002 14:43 schreef Janoz het volgende:
Een betere oplossing zou trouwens de speciale urlencode functies zijn aangezien er nog meer tekens een speciale betekenis hebben.
Zelfs als ze geen speciale betekenis hebben, moeten zekere karakters gecodeerd worden, volgens RFC 2396. Als je niet 100% zeker weet dat al je gegevens uit unreserved characters bestaan (alfanumerieke karakers en nog wat leestekens) zou je altijd moeten url-encoden.

  • hvdwal
  • Registratie: Maart 2001
  • Laatst online: 17-08-2021
Je moet de QueryString ff coderen: Server.URLEncode(Str). Wanneer je hem vervolgens met een Request.QueryString weer opvraagd zal 'ie automatisch weer gedecodeerd worden.

edit:
jikes... ik zeg weer dingen die al gezegd zijn, ik mot beter leren lezen

Verwijderd

Topicstarter
Hoe doe ik dit url-encoden in javascript dan? Niet met encodeURI, want die laat de "&" staan.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 11:02
Op vrijdag 03 mei 2002 15:05 schreef tommie36 het volgende:
Hoe doe ik dit url-encoden in javascript dan? Niet met encodeURI, want die laat de "&" staan.
Dat weet Google.

  • hvdwal
  • Registratie: Maart 2001
  • Laatst online: 17-08-2021
Met de JavaScript functie 'escape(str)' kun je een string url-encoden. Met de functie 'unescape(str)' kun je 'm vervolgend weer decoden (client-side).

Verwijderd

gewoon post gebruiken inplaats van get. Nooit problemen mee. En anders gewoon en replace-functie gebruiken.
Pagina: 1