webForumDet fria alternativet

Otillåtna tecken

ASP

8 svar · 324 visningar · startad av Koggen

Medlem sedan juni 2002169 inlägg
Frågan#1

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

strang = replace(strang, "'", "´")
strang = replace(strang, "&", "och")    osv..

Finns det något smartare sätt att skriva ihop alla dessa replace så det blir mindre kod? (jag tycker det blir för knöligt även i en subrutin)

3.
Kan man anrop en subrutin i ett annat anrop av en sub... t ex

call rutin1( call rutin2( strang) )

..om ni fattar vad jag menar. Ibland skulle jag behöva applicera en subrutin på en annan subrutin utan att skriva om någon av subbarna.

Tack på förhand

Medlem sedan juli 20011 084 inlägg
#2
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.

Medlem sedan maj 20031 173 inlägg
#3

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å?

Medlem sedan mars 20025 907 inlägg
#4

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 &amp:lt; och > till &gt; (tror jag det var :) ) i koden.

Medlem sedan maj 20031 173 inlägg
#5

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>
Medlem sedan juli 20011 084 inlägg
#6

Det finns ett utmärkt JavaScript forum, gör en sökning där och du skall nog hitta svar på dina frågor.

Medlem sedan maj 20031 173 inlägg
#7

mozilla skrev:

Det finns ett utmärkt JavaScript forum, gör en sökning där och du skall nog hitta svar på dina frågor.

fast jag ville ha det i ASP kod...

Medlem sedan mars 20025 907 inlägg
#8

Om du vill ha det i asp så kan du inte få någon popup innan du har postat formuläret. Då måste du använda javascript.

Medlem sedan maj 20031 173 inlägg
#9

okey, då får jag funera lite på hur jag vill göra. tack!

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)