Min fråga är egentligen tre frågor som hänger ihop lite grann.
1
Jag har märkt att en del tecken ställer till det om dom matas in i en databas (t ex '). Finns det fler tecken man bör undvika att få in i sin databas, och i så fall vilka?
2
För att lösa ovanstående problem brukar jag göra en replace och spara tecknen som något annat. Men om detta gäller många tecken blir programmeringen lite knölig
function db(str)
str = replace(str,"[b] ' [/b]","[b] ' ' [/b]")
end function
db(Request.Form("textensomskainidatabasen"))
(utan mellanslag i replacen)
Så kan du på ett enkelt sätt kontrollera så det de skriver är okej! Och vad jag vet så är det bara ' som ställer till problem, kanske | också, men det har jag aldrig varit med om.
Om man tillåter tagar som tex < B > så eller < TD > så kan man ofta messa upp rätt mycket, är det bästa sättet att köra en replace på "<" tecknerna oxå då?
När man sparar datan är det bara ' som är farliga. Vill du förhindra att någon använder html-kod så använder du Server.HTMLEncode() på datan innan du skriver ut den (inte när du sparar den). Det omvandlar < till &:lt; och > till > (tror jag det var :) ) i koden.
Man kan ju alltid göra en regExp för att kolla tecken
<%
set objRegExp = new regexp
objRegExp.ignorecase = true
objRegExp.pattern = "[^a-z0-9åäöÅÄÖ\?\=\!\@\.\,\+\ ]"
if objRegExp.test(Request.QueryString("namn")) then
Response.Write "Nu var du dum"
end if
%>
Jag hade tänkt mig att användaren skulle få reda på om han använt förbjudna tecken redan när han klickar på submit knappen. men denna koden säger ju till först efteråt? finns det något sätt man kan göra det på så att den gnäller direkt, som ett JavaScript allert gör (se nedan)
<SCRIPT LANGUAGE="JavaScript">
function checkform(){
if (document.form1.namn.value==''){
alert('Skriv ditt namn');
return false;
}
}
</SCRIPT>