webForumDet fria alternativet

Ser detta korrekt ut?

ASP

6 svar · 281 visningar · startad av tank82

Medlem sedan feb. 2003210 inlägg
Frågan#1

Undrar om detta ser korrekt ut, kodar inte så mycket .asp så jag vet inte riktigt om det är kodat på "rätt" sätt. God jul :)

<%
									  
namn = Request.Form("namn")
mail = Request.Form("mail")
meddel = Request.Form("meddel")
									  
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db.mdb")
SQL = "INSERT INTO meddelande (namn,mail,meddel) VALUES ('" & namn & "','" & mail & "','" & meddel & "')"
Set rs = Conn.Execute(SQL)
									  
Response.Redirect "index.asp"
									  
rs.Close
Set rs = nothing
									  
Conn.Close
Set Conn = nothing %>
Medlem sedan apr. 20022 743 inlägg
#2

Nej, du måste ha redirect efter du stängt databasen ordentligt, annars skickas den innan den hinner stänga.

Medlem sedan feb. 2003210 inlägg
#3

Nej, du måste ha redirect efter du stängt databasen ordentligt, annars skickas den innan den hinner stänga.

Ok är detta bättre?

<%
									  
namn = Request.Form("namn")
mail = Request.Form("mail")
meddel = Request.Form("meddel")
									  
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db.mdb")
SQL = "INSERT INTO meddelande (namn,mail,meddel) VALUES ('" & namn & "','" & mail & "','" & meddel & "')"
Set rs = Conn.Execute(SQL)									  
rs.Close
Set rs = nothing
						  
Conn.Close
Set Conn = nothing %>

<% Response.Redirect "index.asp" %>
Medlem sedan apr. 20022 743 inlägg
#4

Ja förutom att du stänger och öppnar asp-tolken..

<%
									  
namn = Request.Form("namn")
mail = Request.Form("mail")
meddel = Request.Form("meddel")
									  
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db.mdb")
SQL = "INSERT INTO meddelande (namn,mail,meddel) VALUES ('" & namn & "','" & mail & "','" & meddel & "')"
Set rs = Conn.Execute(SQL)									  
rs.Close
Set rs = nothing
						  
Conn.Close
Set Conn = nothing

Response.Redirect "index.asp" 
%>
Medlem sedan juni 200032 967 inlägg
#5
  1. Glöm inte att skydda dig mot SQL injections. I alla värden någon kan ange som ska in i en SQL-sats måste apostrof byta mot dubbla apostrofer (escape).

  2. Använd OLEDB-drivaren istället för den gamla Access-drivern. Bättre, snabbare och stabilare enligt vad jag läst.

  3. Skapa inget recordset när du exekverar INSERT, UPDATE eller DELETE. Eftersom inget data ska returneras är recordsetet onödigt.

mvh

Medlem sedan nov. 20031 018 inlägg
#6
<%
Function secure(txt) 
txt = Replace(txt, "'", "''") 
secure = txt 
End Function

									  
namn = Request.Form("namn")
mail = Request.Form("mail")
meddel = Request.Form("meddel")
									  
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("db.mdb")
SQL = "INSERT INTO meddelande (namn,mail,meddel) VALUES ('" & secure(namn) & "','" & secure(mail) & "','" & secure(meddel) & "')"

Conn.Execute(SQL),,128
						  
Conn.Close : Set Conn = nothing

Response.Redirect "index.asp" 
%>
Medlem sedan nov. 20017 144 inlägg
#7

Skulle dessutom byta ut access-drivern mot microsoft.jet providern.
(@nders punkt 2.)
I övrigt så tycker jag att det ser ut som ett skolexempel på ett bra databasförfarande. :)

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)