strCode = Server.HTMLEncode(strCode)
jag vill kunna skriva asp kod i en textbox, spara den i min databas och sedan skriva ut den på en sida.
hur gör jag för att koden skall visas/sparas och inte köras eller ställa till problem i sql:en.
11 svar · 325 visningar · startad av ConnyFox
jag vill kunna skriva asp kod i en textbox, spara den i min databas och sedan skriva ut den på en sida.
hur gör jag för att koden skall visas/sparas och inte köras eller ställa till problem i sql:en.
strCode = Server.HTMLEncode(strCode)
Ok skall testa det! tack
Jag använder följande kod när jag försöker spara kod i min databas men det fungerar inte alltid.
kod = Server.HTMLEncode(request.form("add_script_kod"))
När jag försöker spara t.ex en funktion i databasen så får jag error
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-4.0.14-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'FormatAge()<br>Function FormatAge(ByVal vstrDate) 'As Lon
/stajlsajten/scriptarkiv.asp, line 14
Webbläsare:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2)
Sida:
POST 506 bytes to /stajlsajten/scriptarkiv.asp
POST Data:
add_script_rubrik=hh&add_script_beskrivning=hh&add_script_kod=%3C%25%0D%0A%27FormatAge%28%29%0D%0AFunction+FormatAge%28ByVal+vstrDate%29+%27As+Long%0D%0A%0D%0A%09%27Declare+variables%0D%0A%09Dim+lngRe . . .
Visa sql-koden som orsakar felet. Skriv ut den efter det att du har substituerat in alla värden.
ok, som ni ser så görs inget åt asp koden innan den hamnar i sql-satsen..
insert into stajl_scriptarkiv (rubrik, beskrivning, kod, forklaring, kategori, datum) values ('hh', 'hh', '<% 'FormatAge() Function FormatAge(ByVal vstrDate) 'As Long 'Declare variables Dim lngResult 'As Long 'Get and format age lngResult = Round(DateDiff("m", vstrDate, Now) / 12, 1) 'Return result FormatAge = lngResult End Function %>', 'hh', 'Asp/Vbscript', '2003-12-08 18:49:13')
; avslutar väl en rad i sql? eller? gör om dina < och > till < och > och se om det blir nån skillnad.
är det inte meningen att server.htmlencode skall göra om alla tecken till t.ex < m.m? så man kan spara i databasen?
Lyckades lösa det med en funktion en polare gav mig
function secure(value)
value = trim(value)
value = replace(value, "'", "''")
secure = value
end function
Men du... när du sparar din kod i databasen... fixar du injection?
replace(strCode, "'", "''")
och på vägen ut ur databasen
replace(strCode, "''", "'")
/red där ser man : ) men då vill jag säga:
function secure(value)
value = [red]"" &[/red] trim(value)
[red]if value = "" then exit function[/red]
value = replace(value, "'", "''")
secure = value
end function
Asså det funkar bra på asp kod men inte javascript
så nu använder jag följande men lyckas inte få replacen att funka av någon anledning. försöker jag byta ut något annat än <br> så funkar den men inte på <br>
koden = server.htmlencode(rs("kod"))
response.write "<font class='txtred'>" & replace(koden, "<br>", vbCrLf) & "</font>"
hmm ok nu funkar dte även om d e lite mer kod än vad som antagligen behövs!
koden = replace(rs("kod"), "<br>", vbCrLf)
koden = server.htmlencode(koden)
koden = replace(koden, vbCrLf, "<br>")
.write "<font class='txtred'>" & koden & "</font>"