webForumDet fria alternativet

Hjälp med kontakta script

ASP

12 svar · 676 visningar · startad av Roosweb

Medlem sedan aug. 200679 inlägg
Frågan#1

Hej igen, sitter o knåpar på ett script men får upp detta felmeddelande:

Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression.
kontakta.asp, line 109

Här är koden:
http://www.aspsidan.se/code/default.asp?c=6853

Jag förstår inte vad jag gjort för fel :/ någon som vet?

Medlem sedan dec. 20025 483 inlägg
#2

Felmeddelandet säger att det är i kontakta.asp som felet ligger. Länken går till default.asp.

Medlem sedan aug. 200679 inlägg
#3

Här är koden:

<form method="post" action="?page=skicka">
<span class="rubrik4">Namn:</span><br />
<input type="text" name="namn" size="30"><br />
<span class="rubrik4">Efternman:</span><br />
<input type="text" name="efternamn" size="30"><br />
<span class="rubrik4">Eventuell Hemsida:</span><br />
<input type="text" name="hemsida" size="30"><br />
<span class="rubrik4">Eventuellt medlemsnamn:</span><br />
<input type="text" name="medlemsnamn" size="30"><br />
<span class="rubrik4">Kategori:</span><br />
<select name="kategori">
<option>Bannerbyte</option>
<option>Funnen Bugg</option>
<option>Ang. Siten</option>
<option>Tips</option>
<option>Önskning om innehåll</option>
<option>Övrigt</option>
</select>
<p></p>
<span class="rubrik4">Meddelandet:</span><br />
<textarea name="inlagg" cols="50" rows="10"></textarea>
<p></p>
<input type="submit" value="Skicka mail" name="skickamail">
<p>&nbsp;</p>
</form>

<%
If Request.Querystring("page")="skicka" Then

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("kontakta/kontakta1.mdb")

tid = now

strSQL="INSERT INTO tblKontakta(Namn, Datum, Efternamn, Hemsida, Medlemsnamn, Kategori, Meddelandet) VALUES('"& Request.Form("namn") &"', '"& tid &"', '"& Request.Form("efternamn") &"', '"& Request.Form("hemsida") &"', '"& Request.Form("medlemsnamn") &"', '"& Request.Form("kategori") &"', '"& Request.Form("inlagg") &"')"
Connect.Execute(strSQL)

' Stänger DB koppling
Connect.Close
Set Connect = Nothing

Response.Redirect("?page=skickat")
End If
%>

<%
If Request.Querystring("page")="skickat" Then
Response.Write ("Ditt meddelande har blivigt skickat och vi svarar snart!")
End If
%>

Jag ser inget fel :/

Medlem sedan dec. 20025 483 inlägg
#4

Det där är väl samma kod som i länken ovan? Ej kontakta.asp alltså.

Medlem sedan dec. 19996 721 inlägg
#5

Japp, du måste visa hur kontakta.asp ser ut, men innan du gör det föreslår jag att du lär lite om "SQL injection" (sök här på forumet).

Man ska ALDRIG stoppa in värden från request (.form, eller .querystring) direkt i en SQL-sträng.

Jag är rätt tjatig om detta, men det är viktigt som f-n.

Medlem sedan aug. 200679 inlägg
#6

Okej jag läste lite om SQL injections och fick till det, och när jag fick till det så fungara scriptet också hehe, så tack!

Medlem sedan juli 200659 inlägg
#7

Varför inte bara göra såhär? :

<%
If Request.Querystring("page")="skicka" Then

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("kontakta/kontakta1.mdb")

tid = now

strSQL="INSERT INTO tblKontakta(Namn, Datum, Efternamn, Hemsida, Medlemsnamn, Kategori, Meddelandet) VALUES('"& Request.Form("namn") &"', '"& tid &"', '"& Request.Form("efternamn") &"', '"& Request.Form("hemsida") &"', '"& Request.Form("medlemsnamn") &"', '"& Request.Form("kategori") &"', '"& Request.Form("inlagg") &"')"
Connect.Execute(strSQL)

' Stänger DB koppling
Connect.Close
Set Connect = Nothing

Response.Write ("Ditt meddelande skickades korrekt och vi svarar snart!")
End If
%>
Medlem sedan juni 20008 205 inlägg
#8

Maadmax skrev:

Varför inte bara göra såhär?

Därför att det öppnar en säkerhetslucka lika stor som Mordors portar, som emission påpekade.

emission skrev:

Man ska ALDRIG stoppa in värden från request (.form, eller .querystring) direkt i en SQL-sträng.

Medlem sedan juni 200032 967 inlägg
#9

Varför inte bara göra såhär? :

För att man ALLTID måste tänka på SQL injection.

Du skall för övrigt också tänka på att posta kod inom [kod]-taggar.

Medlem sedan sep. 2006867 inlägg
#10

Peter S, är inte http://www.aspsidan.se/code/default.asp?c=6853 en kodvisar-tjänst?! Har inget att göra med att hans trasiga sida hette kontakta.asp :)

Peter S skrev:

Felmeddelandet säger att det är i kontakta.asp som felet ligger. Länken går till default.asp.

Medlem sedan juli 200659 inlägg
#11

jo jag vet, men som man ser i hans kod så har han många ASP-taggar och det slöar ner servern rejält... SQL-injections går ju att lösa med en enkel function och sen köra tex: sqlskydd(strääääääng) , men det var inte det jag syftade på!

Medlem sedan juni 20019 519 inlägg
#12

Maadmax skrev:

jo jag vet, men som man ser i hans kod så har han många ASP-taggar och det slöar ner servern rejält.

en extra gör knappast någon skillnad ;) men SQL strängen ser inte säker ut, men tur är det att du kan fixa det snabbt och relativt smärtfritt med de tips du har fått ;)

Medlem sedan aug. 200679 inlägg
#13

Nepp och jag tackar för detta :)

256 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)