webForumDet fria alternativet

Spam i gästboken!

ASP

1 svar · 293 visningar · startad av ragnared

Medlem sedan apr. 2003152 inlägg
Frågan#1

Jag har en gästbok där man måste fylla i sitt namn samt fylla i en rätt siffrasom är olika gång på gång men ändå så kommer dom jävla spamen in i gästboken hur kan dom det eftersom jag sa innan så är det olika tal hela tiden ???????

	

					

					

								

					

	 <% Response.Buffer = True %>

  

              

              

<%If Request.Querystring("do")= "" Then

Randomize()

sngRandomValue = Round(1 * Rnd() * 10)

sngRandomValue2 = Round(1 * Rnd() * 10)

'Spara till Session

Session("hajen") = CInt(sngRandomValue + sngRandomValue2) ' Spara så vi vet vilket Värde det _ska_ vara på nästa sida.

%>

                            

              

  

  <center>  

  

  

<table border="0" width="423" height="79">

  <form method="post" action="gastboken.asp?do=jepp" name="gastboken"  onSubmit="return tecken()">

    <tr> 

      <td width="183" height="38"><b><font face="Verdana" size="1">Ditt namn:<br>

      <input type="text" name="namn" size="25" style="font-family: Verdana; font-size: 8pt; border: 1 solid #000000">

        </font>

        </b></td>

      <td width="229" height="38"><b><font face="Verdana" size="1">Din e-mail:</font></b><font face="Verdana" size="1"><br>

      

      <b><font color="#FF0000">

      <input type="text" name="sum0" style="font-family: Verdana; font-size: 8pt; border: 1 solid #000000"></font></b> <b><font color="#FF0000">

      <input type="hidden""text" name="ip" value="<% =Request.ServerVariables("REMOTE_ADDR")%>" style="font-family: Verdana; font-size: 8pt; border: 1 solid #000000"></b></font></td>

    </tr>

       <tr> 

      <td width="183" height="38"><b><font face="Verdana" size="1">Hemsida:<br>

      

      <input type="text" name="hemsida" size="25" style="font-family: Verdana; font-size: 8pt; border: 1 solid #000000">

      

        </font>

        </b></td>

      <td width="287" height="38"><font face="Verdana" size="1"><b>Vad blir <%= sngRandomValue %> + <%= sngRandomValue2 %>?<font color="#FF0000">&nbsp;&nbsp;*<br>

      <input type="text" name="sum" style="font-family: Verdana; font-size: 8pt; border: 1 solid #000000">

        </b></td>

    </tr>

<tr> 

      <td height="1" valign="middle" colspan="2" width="476"> <b><font face="Verdana" size="1">

		<font color="#FF0000">* = spamskydd, fyll i rätt tal.</td>

    </tr>    <tr> 

      <td height="1" valign="middle" colspan="2" width="417"> <b><font face="Verdana" size="1">

		Meddelande:</font></b><font face="Verdana" size="1"><br>

       

<textarea name="Meddelande" cols="67" rows="9" style="font-family: Verdana; font-size: 8pt; border: 1 solid #000000"></textarea>

        </font>

      </td>

    </tr>

    <tr> 

      <td valign="top" colspan="2" height="1" width="417"> <font face="Verdana" size="1">

        <input type="image" src="bilder/knapp_skicka.gif"></font>

 </td>

    </tr>

  </form>

</table>

<table border="0" width="429" >

<%

Set Conn	= Server.CreateObject("ADODB.Connection")

Set Recset = Server.CreateObject("ADODB.Recordset")

Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databaser/main.mdb")

Const perSida = 23

If Request.QueryString("page") = "" then 

page = 1 

Else 

page = Request.QueryString("page") 

End If 

RecSet.CursorLocation = 3

RecSet.CacheSize = perSida

SQL = "SELECT * From inlagg Order By Datum DESC"

Recset.Open SQL, Conn, 1, 2

If RecSet.EOF Then%>

  <tr>

    <td colspan="2" width="423">

      ----------------------------------------------------------------------

    </td>

  </tr>

  <tr>

    <td colspan="2" width="423"><i><font face="Verdana" size="1">Inget har 

	skrivit i gästboken.</font></i></td>

  </tr>

<%

Else

RecSet.MoveFirst 

RecSet.PageSize = perSida

TotalPages = RecSet.PageCount 

RecSet.AbsolutePage = page 

Count = 0 

Do While Not RecSet.EOF And Count < RecSet.PageSize 

%>

  <tr>

    <td colspan="2" width="423">

      ----------------------------------------------------------------------

    </td>

  </tr>

<%If Recset("Email") <> "" Then%>

  <tr>

    <td colspan="2" width="423">

      <b>

      <font face="Verdana" size="1">

      Inskickat:

      </font>

 </b>

      <font face="Verdana" size="1">

      <%=FormatDateTime(Recset("Datum"),2)%> 

      av <b><a href="mailto:<%=Recset("Email")%>" onfocus=this.blur()><%=Recset("Namn")%></a></b>

      </font>

    </td>

  </tr>

<%Else%>

  <tr>

    <td colspan="2" width="423">

      <b>

      <font face="Verdana" size="1">

      Inskickat:

      </font>

 </b> 

      <font face="Verdana" size="1">

 <%=FormatDateTime(Recset("Datum"),2)%> 

      av <b><%=Recset("Namn")%></b>

      </font>

    </td>

  </tr>

<%End If%>

  <tr>

    <td colspan="2" width="423">

      <font face="Verdana" size="1">

      <%=Replace(Server.HTMLEncode(RecSet("Meddelande")), vbCrLf, "<br>" )%>

      </font>

    </td>

  </tr>

 <tr>

    <td colspan="2" width="423">

      <font face="Verdana" size="1">

      <%If RecSet("Hemsida") <> "" Then%>

        <a href="<%=RecSet("Hemsida")%>" target="_blank" onfocus="this.blur()"> <b>

		Hemsida:</b> </a>

      <%End If%>

      </font></td>

  </tr>
 <tr>

    <td colspan="2" width="423">

      <font face="Verdana" size="1"><b>IP-nummer:</b>&nbsp;<%=Recset("ip")%></td>

  </tr>
		

<%

Count = Count + 1 

Recset.MoveNext

Loop

Recset.Close

Conn.Close

Set Recset = Nothing

Set Conn = Nothing

End If

%>

  <tr>

    <td colspan="2" width="423">

      ----------------------------------------------------------------------<font face="Verdana" size="1"><br></font></td>

  </tr>

  <tr>

     <td valign="top" colspan="2" width="423">

        <font size="1">

        <font face="Verdana">

        <% 

          If TotalPages <> 1 Then

          If (Int(page)) <> 1 Then

          %>

        <a href="fgtp90.asp?page=<%=(Int(page)-1)%>" onfocus="this.blur()"><b>

		« Bakåt</b></a>

          <%Else%>

          

          <%End If%>

          <%

          For Pages = 1 To TotalPages 

          %> 

          <%If (Int(Pages)) = (Int(page)) Then%><b><font color="#000000"><%=Pages%></font></b> <%Else%><a href="fgtp90.asp?page=<%=Pages%>" onfocus="this.blur()"><b><%=Pages%></b></a> <%End If%><%Next%> 

          <%End If%> 

          <%

          If (Int(page)) <> (Int(TotalPages)) AND Count > 0 Then

          %>

          <a href="fgtp90.asp?page=<%=(Int(page)+1)%>" onfocus="this.blur()"><b>

		Framåt »</b></a>

          <%Else%>

          

          <%End If%>

          

        </font></font>

     </td>

   </tr>

  <tr>

    <td colspan="2" width="423">

      ----------------------------------------------------------------------</td>

  </tr>

</table>

<%End If%>

<%

If Request.QueryString("do")= "jepp" Then

	If Cint(Session("hajen") + 0) = Cint(Request.form("sum") + 0) Then

		Set Conn = Server.CreateObject("ADODB.Connection")

		Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("databaser/main.mdb")

		Namn		= Request.Form("namn")
		
		ip		= Request.Form("ip")

		Email		= Request.Form("email")

		Hemsida   	= Request.Form("hemsida")

		Meddelande	= Request.Form("meddelande")

		Datum		= Now

		If Hemsida <> "" Then

			If Left(Hemsida,7) = "http://" Then

				Hemsida = Hemsida

			Else

				Hemsida = "http://" & Hemsida

			End If

		End If

		

		SQL="Insert Into inlagg"

		SQL = SQL & "(Namn, ip, Email, Hemsida, Meddelande, Datum)" 

		SQL = SQL & "Values('"& Namn &"','"& ip &"','"& Email &"','"& Hemsida &"','"&Meddelande &"',#"& Datum &"#)"

		'Response.Write SQL

		Conn.Execute(SQL)

		Conn.Close

		Set Conn = Nothing

	End If

	Response.Redirect "gastboken.asp"

End If%>
Medlem sedan juli 20003 825 inlägg
#2

Det var skapligt rörig kod du har! :-)

En variant kan vara att dela upp koden på olika sidor. Om inte annat så är det lite enklare för andra personer att läsa din kod.

Detta problemet är du inte direkt ensam om...
Det diskuterades nyligen, bland annat här:
http://www.webforum.nu/showthread.php?t=166413

Personligen förespråkar jag de fem sista i Session ID, men det är en smaksak:

response.write RIGHT(session.sessionID(),5)
254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)