Avatar billede larsp Nybegynder
27. august 2001 - 10:15 Der er 4 kommentarer og
2 løsninger

Textarea konverterer &lt til <

Jeg har et problem med textarea.

Jeg har brug for at kunne indtaste URLs i et textarea.
Når jeg som en del af querystrengen indtaster &lt konverteres det til et mindre-end tegn <. Hvordan undgår jeg det?

Lars
Avatar billede jakoba Nybegynder
27. august 2001 - 10:20 #1
Det kan gå galt adskillige steder. Må vi se din kode?
Avatar billede larsp Nybegynder
27. august 2001 - 10:27 #2
Her er min formularkode:

<form action=AddScript.asp target=_top method=post>

<input type=hidden name=\"ScriptID\" value=\"<%=ScriptID%>\"><br>
Script Name: <input type=text name=\"ScriptName\" value=\"<%=ScriptName%>\"><br>
Script Language: <input type=text name=\"ScriptLanguage\" value=\"<%=ScriptLanguage%>\"><br>

<textarea name=Script rows=30 cols=120><%=ScriptCode%></textarea>
</span>
<p>
<input type=submit>
</form>

Her er modtagersiden:
option explicit

dim Connection
dim Recordset

dim ScriptID
dim ScriptName
dim ScriptLanguage
dim Script

set Connection = Server.CreateObject(\"ADODB.Connection\")
set Recordset = Server.CreateObject(\"ADODB.Recordset\")

ScriptID = Request(\"ScriptID\")
ScriptName = Request(\"ScriptName\")
ScriptLanguage = Request(\"ScriptLanguage\")
Script = Request(\"Script\")

Connection.Open Application(\"ConnStr\")

if ScriptID = \"\" then
    Recordset.Open \"Scripts\", Connection, adOpenKeySet, adLockOptimistic, adCmdTable
    Recordset.AddNew
else
    Recordset.Open \"SELECT * FROM Scripts WHERE ScriptID=\" & ScriptID, Connection, adOpenKeyset, adLockOptimistic, adCmdText
end if

Recordset(\"ScriptName\") = ScriptName
if ScriptLanguage <> \"\" then
    Recordset(\"ScriptLanguage\") = ScriptLanguage
end if
Recordset(\"Script\") = Script

Recordset.Update
Recordset.Close
Connection.Close

Som i nok kan se, så er gemmer jeg script i databasen. En del af disse scripts laver http kald (server til server), og url\'erne til disse kald indeholder f.eks.
EnASPside.asp?param=123&ltr=10liter
Avatar billede jakoba Nybegynder
27. august 2001 - 11:20 #3
Det kunne vær så simpelt som at du (eller microsoft) glemmer at skrive ; efter sekvensen:
EnASPside.asp?param=123&lt;r=10liter

du kan evt tilføje et ekstra niveau ved at skrive ampersande tegnet som sekvens:
EnASPside.asp?param=123&amp;lt;r=10liter

Prøv de to, og overvejl ellers at stille spørgsmålet i kategorien \"programmering: ASP\" hvor det vist mere hører hjemme.

mvh JakobA
Avatar billede roenving Novice
27. august 2001 - 12:24 #4
Har du overvejet at bruge parameternavne, som ikke kan konflikte ??-)

Eller selv at parse din streng og bruge f.eks. # som deletegn.

>>jakoba
Var du ikke lidt hurtig med copy/paste:
EnASPside.asp?param=123&amp;ltr=10liter

Som også burde du.

hth
jes
Avatar billede larsp Nybegynder
27. september 2001 - 09:36 #5
EnASPside.asp?param=123&amp;ltr=10liter
virker meget fint men bliver konverteret til:
EnASPside.asp?param=123&ltr=10liter
når den modtages. Det betyder at næste gang jeg vil rette i den (i textarea) står der det, som der ikke må stå nemlig &ltr i stedet for &amp;ltr.

Jeg kunne så parse det tilbage til &amp;ltr, men det går ikke, da det øvrige indhold er VBscript, som indeholder mange & tegn, som ikke skal konverteres.

Jeg må nok kigge mig om efter en anden løsning, enten undgå tegn som &lt eller ikke bruge textarea til at administrere det i, med mindre i har andre forslag.

LarsP
Avatar billede roenving Novice
28. september 2001 - 00:18 #6
Jeg ville klart gå efter at undgå &lt, f.eks. bruge vol i stedet for ltr.
;·]
jes
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