Hej
Jag har ett problem som jag undrar någon skulle vilja hjälpa mig att lösa. Jag har en accessdatabas som jag håller på och gör ett webformulär till så att jag kan uppdatera databasen över internet. Jag får upp alla fält som jag vill och de poster som innehåller något finns där. Dock har jag ett fält som kan innehålla tusentals tecken, (biografier) och dessa (fältet "historia") får jag bara upp typ den första raden i ett sådant fält där man kan ändra, sedan kommer resten av texten liksom utanför och man kan inte uppdatera det. Jag har försökt att lägga in "textarea" istället men det funkar inte alls. Kan man inte uppdatera stora fältmängder?
Så här ser koden ut som visar upp mina fält:
1. Stora textfält ska visas med textarea. input type=text är till för små korta "one-liners"
2. Man ska alltid köra Server.HTMLEncode(värde) på det som läggs ut i formuläret
Jag har fått till det med textarea nu, men har fått ett följdproblem.
Jag ändrade alla mina rader till
<tr><td>Historia:<br><textarea rows="20" cols="60" name="historia"><% =Server.HTMLEncode(RecSet("historia")) %></textarea></td></tr>
och det funkar bra.
Problemet är att jag har 21 kolumner och vissa av dessa är tomma i db:n - vilket de skall vara - men då får jag felet:
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'HTMLEncode'
/nina/historia/andra2.asp, line 26
Plockar jag bort alla sånna rader när jag klickar på en person, (jag skriver biografier på historiska personer) så visas det upp rätt. Den verkar inte kunna klara av de tomma fälten i databasen?
Du ska aldrig, aldrig, aldrig skriva ut något från Request.Form/QueryString utan att HTML-koda det. Så istället för <%=Request.Form("fnamn")%> får det bli <%=Server.HTMLEncode(Request.Form("fnamn"))%>
Därför att annars kan vem som helst lägga in HTML-kod (och därmed script) som kan ställa till med hyss i användarnas webbläsare. Prova att skriva in t.ex. följande kod i någon av textrutorna och tryck på submit så förstår du kanske varför:
<script>document.body.innerHTML = '\u003cmarquee style="text-decoration:blink;"\u003eDet bästa med spango är att han inte bara är så smart, utan också samtidigt så fasligt vacker.\u003c/marquee\u003e';</script>
Är man lite ondare kan man sno cookies, inloggningsinfo, etc.
ok då förstår jag
men det här formulären är ju inte något som någon annan skall ha än jag. Det är när jag skall ändra något i databasen bara, det är ju inga andra som gör det....?
men jag förstår vad du menar och tackar för hjälpen :e
Man kan ställa till oreda genom misstag också, inte bara genom illvilja :) och det är alltid fel att skaffa sig bra vanor. Använder man alltid HTMLEncode på allt är risken mindre att man glömmer det på ett Dåligt Ställe.