Avatar billede aneez Nybegynder
27. september 2000 - 15:57 Der er 15 kommentarer og
1 løsning

igen html i form?

Hvordan kan jeg gøre så mit output af mine tekst form felter ikke understytter html?
Jeg har lavet en lille chat hvor man ikke skal kunne skrive html når man skriver. Kan dette ikke gøres ved at sætte en eller anden begrænsning på mine tekst form felter?
Avatar billede erikjacobsen Ekspert
27. september 2000 - 16:00 #1
Du kan ikke bede browseren sætte en begrænsning på dine felter. På serversiden
kan du derimod med fordel putte brugerens tekst igennem en funktion som
HTMLentities (i PHP, men den hedder bare noget andet i ASP), som f.eks. laver
et < om til &lt; 

På den måde vil det brugeren taster, også selv om det er < og andet html, komme ud
som han skrev det.
Avatar billede geeeet Nybegynder
27. september 2000 - 18:07 #2
Desværre kan du kun gøre det som erikjacobsen siger, her er asp-løsningen:

function strip(theString)
    theString = Replace(theString,\"\'\", \"&#039;\")
    theString = Replace(theString,\"<\", \"&lt;\")
    theString = Replace(theString,\">\", \"&gt;\")
    strip = theString
end function

Den fjerner <>\' tilføj selv flere...
Avatar billede aneez Nybegynder
27. september 2000 - 18:15 #3
geeeet: hvis jeg nu har et felt der hedder say hvodan kan jeg så bruge det eksempel så outputet ikke understøtter html?
hvis man da kan det?
Avatar billede geeeet Nybegynder
27. september 2000 - 18:41 #4
Det kommer an på hvilket serverside sprog du kan bruge på dit site...
Hvis du laver det i asp, kan jeg godt lave det, hvis det er i php må du vist stille spørgsmålet i php-kategorien...

/Geeeet
Avatar billede aneez Nybegynder
27. september 2000 - 20:09 #5
geeet det er asp....
Avatar billede geeeet Nybegynder
27. september 2000 - 20:10 #6
ok, laver det lige...
15. min

/Geeeet
Avatar billede geeeet Nybegynder
27. september 2000 - 20:17 #7
Her er siden som du skriver i:

<html>
<head>
    <title></title>
</head>

<body>

<form name=\"form\" action=\"resultat.asp\" method=\"get\">

<input type=\"text\" name=\"text1\"><br>

<textarea name=\"text2\"></textarea><br>

<input type=\"submit\">

</form>

</body>

</html>


----------- her kommer siden som samler resultatet op --------

<%
function strip(theString)
    theString = Replace(theString,\"\'\", \"&#039;\")
    theString = Replace(theString,\"<\", \"&lt;\")
    theString = Replace(theString,\">\", \"&gt;\")
    strip = theString
end function

text1 = strip(request(\"text1\"))
text2 = strip(request(\"text2\"))

%>
<html>
<head>
    <title></title>
</head>

<body>

her er resultatet:<br><br>

<%=text1%>

<br><br>

<%=text2%>

</body>
</html>


That should be worth 30 points :-)

/Geeeet
Avatar billede erikjacobsen Ekspert
27. september 2000 - 20:32 #8
Der *er* nu ingen grund til at gøre det så besværligt. Der er jo netop en funktion
i ASP (ja, også i ASP) til at lave den kodning, som du skriver, geeet. Og den tager
altså alle potentielt giftige tegn med. Man skriver

  text1 = server.htmlencode(request(\"text1\"))
Avatar billede geeeet Nybegynder
27. september 2000 - 20:34 #9
Okay, jeg brugte den anden, da jeg ikke lige kunne fuske om den tog \' med...
Du kender tilfældigvis ikke jsp\'s modstykke til asp\'s urlencode ???

/Geeeet
Avatar billede erikjacobsen Ekspert
27. september 2000 - 21:00 #10
Den tager nok ikke \' med, altså server.htmlencode, for det er ikke nødvendigt. Det kræver
selvfølgelig at man bruger den \"rigtige\" dobbeltstrof rundt om sine parametre i HTML-tags.

JSP - hvad er det .... ? (just joking - men jeg kender ikke nok til det til at kunne svare på
dit spørgsmål)
Avatar billede geeeet Nybegynder
27. september 2000 - 21:03 #11
Den er nødt til at tage \' med, da jeg også bruger min funktion til mine sql-sætninger,
og der bliver det fucked up hvis den ikke er erstattet...

Derfor har jeg den med...

Man kan evt. lave en kombi af de to, altså først en htmlencode og derefter erstatte \'

Det er vel næsten ligemeget hvad man gør, bare man får dem væk ! :-)

/Geeeet
Avatar billede erikjacobsen Ekspert
27. september 2000 - 21:09 #12
Det er rigtigt mht SQL, men så er det jo kun \' der er problemet, og så er HTMLencode overkill.
Jeg mener forøvrigt heller ikke man skal lave HTMLencode *før* man putter i databasen, men
kun når man viser det til brugeren. Det kunne jo være man engang skulle bruge data til noget
andet, og så er det smart at have det originale format.
Avatar billede aneez Nybegynder
28. september 2000 - 15:45 #13
Hmm.... jeg ved ikke om det er noget jeg kan bruge til noget... men jeg vil da kigge på det og se om det er :))
Avatar billede aneez Nybegynder
03. oktober 2000 - 15:44 #14
hmm.... ja kunne ikke bruge noget af det til noget... og da jeg er i STOR point nød i øjeblikket har jeg tænkt mig at trække pointne tilbage..
Avatar billede geeeet Nybegynder
03. oktober 2000 - 15:47 #15
Kunne ikke bruge noget af det???
Begge svar er 100% korrekte !!!

Det er ikke fordi at jeg vil have point for alt, og at jeg forsøger at hamster eller noget, men jeg er bare af det princip at når man får et korrekt svar, så giver man point ligemeget om man skal bruge det eller ej...

Erik og jeg har jo brugt tid på det her...

/Geeeet
Avatar billede erikjacobsen Ekspert
03. oktober 2000 - 20:04 #16
Helt i orden aneez. Jeg er tilbøjelig til at være enig med geeet, så du er hermed
et nyt medlem på min \"sorte\" liste. Jeg vil dermed garantere, at jeg ikke tager
nogle af dine points, så længe jeg kan huske dit navn ;-)
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