---
title: "Spamskydd med verifieringsnyckel"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/149258-spamskydd-med-verifieringsnyckel/page2"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "MickeA.com"
published: "2006-07-20T21:40:45.000Z"
updated: "2006-11-28T15:57:58.000Z"
replies: 57
views: 6954
page: 2
pages: 3
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/149258-spamskydd-med-verifieringsnyckel"
---

# Spamskydd med verifieringsnyckel

_Sida 2 av 3._

## #21 — MickeA.com, 2006-07-28T19:39Z

> **Siluett skrev:**
>
> jaha??

Kolla vad din Session har för värde, så den skapats schysst och inte upphört.

```
Response.Write("Sessions värde: " & Session("keyCode")) : Response.End
```

Lägg det **direkt under** *If Request.querystring("do") = "add" Then..*

Permalänk: https://www.webforum.nu/p/1845215

## #22 — Troxy, 2006-07-28T20:10Z

Det finns väl ingen inbyggd MD5-funktion i ASP?

Permalänk: https://www.webforum.nu/p/1845220

## #23 — MickeA.com, 2006-07-28T20:12Z

> **Troxy skrev:**
>
> Det finns väl ingen inbyggd MD5-funktion i ASP?

Stämmer bra, men i min zipfil finns en inkluderad fil med en funktion som gör en sträng till MD5.
Hittade funktionen någonstans för länge sen, kanske var här?

Hur som helst är den väldigt bra att använda när man tex. sparar lösenord i en databas, eller när man försöker undvika spambottar ;)

Permalänk: https://www.webforum.nu/p/1845221

## #24 — Siluett, 2006-07-31T08:04Z

> **MickeA.com skrev:**
>
> Kolla vad din Session har för värde, så den skapats schysst och inte upphört.
>
>
> ```
> Response.Write("Sessions värde: " & Session("keyCode")) : Response.End
> ```
>
> 
> Lägg det **direkt under** *If Request.querystring("do") = "add" Then..*

Du menar att jag ska skriva in det där under? Så, nu står det "Sessions värde:" på den vita sidan... Jag förstår nog inte riktigt...

Permalänk: https://www.webforum.nu/p/1845725

## #25 — MickeA.com, 2006-07-31T08:28Z

> **Siluett skrev:**
>
> ...nu står det "Sessions värde:" på den vita sidan... Jag förstår nog inte riktigt...

Något är tokigt, eftersom du inte ser något "värde", utan endast texten, innebär det att det inte finns någon session skapad.
Har du ändrat något i filen *createKey.asp*?
Något verkar det nämligen vara som inte stämmer.

Posta lite mer kod så ska jag försöka hjälpa dig!

Permalänk: https://www.webforum.nu/p/1845730

## #26 — Siluett, 2006-07-31T08:42Z

```
<%
Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

If Request.Querystring("do")= "add" Then
	Response.Write("Sessions värde: " & Session("keyCode")) : Response.End

' POSTA FORMULÄRET, JÄMFÖR DEN HEMLIGA KODEN OCH SPARA:
	keyCode = Trim(Request.Form("keyCode"))
	If MD5(keyCode) <> Session("keyCode") Then
		Response.Write("<h1>Du har angett en felaktig verifieringsnyckel...</h1>" & VbCrLf)
	Else
		Response.Write("<h1>Du angav rätt verifieringsnyckel!</h1>" & VbCrLf)
	End If
	Session("keyCode") = ""
	Session.Abandon

	Namn       = Request.Form("namn")
	Mail          = Request.Form("mail")
	Msg	        = Fixa(Request.Form("msg"))
	Ip   	  = Request.Servervariables("REMOTE_ADDR")
	Url   	  = Request.Form("url")
	If Url <> "" Then
		If Left(Url,7) = "http://" Then
			Url = Url
		Else
			Url = "http://" & Url
		End If
	End If
   Conn.Execute("Insert Into message(namn, mail, url, msg,ip) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"')")
   Response.Redirect "aktuellt.asp"

Else
%>
<!-- VISA FORMULÄR //-->
<H1>MEDDELANDE</H1>
<form method="post" action="message.asp?do=add" name="message"  onSubmit="return Gb()">
<b>Namn:</b><br><input type="text" name="namn" size="20" class="form">
<b>E-mail:</b> <br><input type="text" name="mail" size="20" class="form">
<b>Hemsida:</b> <br><input type="text" name="url" size="20" class="form">
<b>Meddelande:</b><br><textarea name="msg" cols="16" rows="3" class="form"></textarea>
<img src="createKey.asp" alt="" /><br /><br />
Ange lösenordet ovan för att kunna posta ditt inlägg
<input type="text" name="keyCode" value="" />
<input type="submit" value="Posta inlägg" class="form" onclick="if(this.form.keyCode.value!=''){this.form.submit();}" /></form>
<%

' VISA RESTEN AV INLÄGGEN:
	Set Recset = Server.CreateObject("ADODB.Recordset")

	Sidan = Request.QueryString("next")
	If Sidan = "" then 
		sida = 1 
	Else 
		sida = Sidan 
	End If 

	With RecSet
		.CursorLocation = 3
		.CacheSize = InlaggPerSida
	End With

	SQL = "Select * From message Order By datum desc"
	RecSet.Open SQL, Conn

	If RecSet.EOF Then
%>
	<i>Inga meddelanden.</i>

<%
	Else
%>

<%
		With RecSet
			 .MoveFirst 
			 .PageSize = InlaggPerSida
			 .AbsolutePage = sida
		End With

		Sidor =  RecSet.PageCount
		If Sidor > 1 Then
%>

<%
		End If
		X = 0
		Do While Not RecSet.EOF And X < RecSet.PageSize%>
		<b><%=Recset("namn")%></b> <%If RecSet("url") <> "" Then%><a href="<%=RecSet("url")%>" target="_blank"><img src="bilder/homepg.gif" border="0" alt="<%=RecSet("url")%>"></a> <%End If%> <%If RecSet("mail") <> "" Then%><a href="mailto:<%=RecSet("mail")%>"><img src="bilder/email.gif" border="0" alt="<%=RecSet("mail")%>"></a><%End If%>
		<br><%=FormatDateTime(RecSet("datum"),2)%>
		<br><%=Link(RecSet("msg"))%>
		<br><img src="bilder/line.gif" width="150" border="0" height="1">

<%
		X = X + 1 
		Recset.MoveNext
		Loop
		If Sidor > 1 Then
%>

<%
			 For Sid = 1 To Sidor
				 If (Int(Sid)) = (Int(sida)) Then%><b><%=FixDigits(Sid,2)%></b><%Else%> <a href="message.asp?next=<%=Sid%>"><%=FixDigits(Sid,2)%></a> <%End If
			 Next
%>

<%
		End If
		Recset.Close
		Set Recset = Nothing
	End If
End If
Conn.Close
Set Conn=Nothing
%>
```

det enda jag ändrat i keyCode är antal tecken.

Permalänk: https://www.webforum.nu/p/1845732

## #27 — MickeA.com, 2006-07-31T10:28Z

> **Siluett skrev:**
>
> det enda jag ändrat i keyCode är antal tecken.

Hmm, okej, men eftersom du inte fick ut något värde av koden jag gav dig, så existerar inte sessionen.

Lägg

```
Response.Write(Session("keyCode")) : Response.End
```

Direkt efter

```
If Request.Querystring("do") = "add" Then...
```

När du sedan postar formuläret bör du få en vit sida med ett värde, typ:

```
4nkn4knk54n4l5nlnvgpvofdmofm454
```

Något liknande iaf. för i denna session sparas den slumpade koden som är MD5-krypterad.

Får du inte ut något värde alls, så har du antingen stavat fel på sessionens namn, eller inte startat någon session.

Testa och återkom!

Permalänk: https://www.webforum.nu/p/1845758

## #28 — stjernfeldt, 2006-08-01T15:43Z

???

Jag får inte ihop det...

Permalänk: https://www.webforum.nu/p/1846118

## #29 — MickeA.com, 2006-08-01T18:10Z

> **stjernfeldt skrev:**
>
> Jag får inte ihop det...

Ehh, kom gärna med en vettig fråga så lovar jag att komma med ett vettigt svar.
Det är inte lätt att hjälpa någon som inte talar om vad han / hon behöver hjälp med, vad som inte går, vad mna förväntat sig ska hända etc.

Visa lite kod och säg vad du vill åstadkomma, så lovar jag att göra allt jag kan för att hjälpa till.

Permalänk: https://www.webforum.nu/p/1846140

## #30 — Siluett, 2006-08-02T08:22Z

> **MickeA.com skrev:**
>
> Hmm, okej, men eftersom du inte fick ut något värde av koden jag gav dig, så existerar inte sessionen.
> 
> Lägg
>
> ```
> Response.Write(Session("keyCode")) : Response.End
> ```
>
> 
> Direkt efter
>
> ```
> If Request.Querystring("do") = "add" Then...
> ```
>
> 
> När du sedan postar formuläret bör du få en vit sida med ett värde, typ:
>
> ```
> 4nkn4knk54n4l5nlnvgpvofdmofm454
> ```
>
> 
> Något liknande iaf. för i denna session sparas den slumpade koden som är MD5-krypterad.
> 
> Får du inte ut något värde alls, så har du antingen stavat fel på sessionens namn, eller inte startat någon session.
> 
> Testa och återkom!

Aha... ja nu står det ju faktiskt

Sessions värde: 4e5f787e252753f0596c6bd309abef4a

när jag skrev som innan:

```
If Request.Querystring("do")= "add" Then
	Response.Write("Sessions värde: " & Session("keyCode")) : Response.End
```

Permalänk: https://www.webforum.nu/p/1846274

## #31 — MickeA.com, 2006-08-02T08:47Z

Precis, nu börjar vi närma oss ;)
Raden du nu har under *if reguest.querystring("do") ="add" then...*, but ut den mot följande:

```
Response.Write("Sessionens värde: " & Session("keyCode") & "<br />")
Response.Write("Mitt inmatade värde: " & MD5(Trim(Request.Form("keyCode"))))
Response.End
```

Nu ska du få två värden, det övre är precis som förut sessionens värde och det under är det värde du matar in i den textruta där nyckeln skall skrivas in.
Du måste alltså fylla i det värde som står på bilden som skapas.

När du sedan postar, jämför de två värdena som skrivs ut, dom ska vara identiska.

Är dom inte det, har du antingen skrivit in fel kod, eller så har du gjort någon annat med scriptet.
Klistra in ditt resultat här sedan.

Får du samma värde på både raderna, är allt frid och fröjd och du kan köra den här ifsatsen där värdena jämförs.

Permalänk: https://www.webforum.nu/p/1846286

## #32 — stjernfeldt, 2006-08-02T10:22Z

Jag försöker hänga med i diskutionen här över...jag har samma problem...

Permalänk: https://www.webforum.nu/p/1846310

## #33 — stjernfeldt, 2006-08-02T10:42Z

Som sagt, jag har samma problem som "siluett" .
Jag driver en hemsida åt en klubb, lite asp har jag fattat men är ej haj på det...
så här ser min kod ut, kan du lägga in dessa komponenter så man får en verifieringsnyckel?

```
<%Set Conn = Server.CreateObject("ADODB.Connection") 
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

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

<table border="0" width="400" align="center" cellpadding="3" cellspacing="0">
  <form method="post" action="<%=INC%>?do=add" name="gastbok"  onSubmit="return Gb()">
    <tr> 
      <td colspan="2" style="border-bottom: 1px solid #000000"><font size="2"><b>Gästboken</b></font></td></tr>
    <tr> 
      <td width="80"><b>Ditt namn:</b><br><input type="text" name="namn" size="25"></td>
      <td><b>Rubrik:</b><br><input type="text" name="rubrik" size="25"></td>
  </tr>
    <tr>
      <td><b>Din e-mail:</b> valfritt<br><input type="text" name="mail" size="25"></td>
      <td><b>Hemsida:</b> valfritt<br><input type="text" name="url" size="25"></td>
    </tr>
    <tr> 
      <td valign="top" colspan="2"> <b>Meddelande:</b><br><textarea name="msg" cols="60" rows="8"></textarea>

</td>
    </tr>
    <tr> 
      <td colspan="2"><input type="submit" value="Posta inlägg"></td>
    </tr>
  </form>
</table>

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

' Sidscriptet är nerladdat från [url]http://www.fatmilk.nu/[/url] 
' Skrivet av Ludvig "geek" Lindblom 
' [email]geek@fatmilk.nu[/email] 

Sidan = Request.QueryString("next")
If Sidan = "" then 
    sida = 1 
Else 
    sida = Sidan 
End If 

With RecSet
    .CursorLocation = 3
    .CacheSize = InlaggPerSida
End With

SQL = "Select * From gastbok Order By datum desc"
RecSet.Open SQL, Conn

If RecSet.EOF Then%>
<br>
<table border="0" width="500" align="center" cellpadding="3" cellspacing="0">
  <tr>
    <td><i>Inget har skrivit i gästboken.</i></td>
  </tr>
</table>
<%Else%>
<br>
<%With RecSet
     .MoveFirst 
     .PageSize = InlaggPerSida
     .AbsolutePage = sida
End With

Sidor =  RecSet.PageCount
If Sidor > 1 Then%>

<table border="0" width="500" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">
  <tr>
     <td valign="top" background="man.gif">
     <%For Sid = 1 To Sidor
         If (Int(Sid)) = (Int(sida)) Then%><b><%=FixDigits(Sid,2)%></b><%Else%> <a href="<%=INC%>?next=<%=Sid%>"><%=FixDigits(Sid,2)%></a> <%End If
     Next%>
     </td>
   </tr>
</table>
<br>
<%End If
X = 0
Do While Not RecSet.EOF And X < RecSet.PageSize%>
<table border="0" width="500" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">
  <tr>
    <td background="man.gif" width="300"><b><%=Recset("rubrik")%></b> | <%=Recset("namn")%></td><td align="right" background="man.gif" width="100"><img src="bilder/klocka.gif" border="0" alt="<%=FormatDateTime(RecSet("datum"),2)%> (<%=FormatDateTime(RecSet("datum"),4)%>)"> <%If RecSet("url") <> "" Then%><a href="<%=RecSet("url")%>" target="_blank"><img src="bilder/homepg.gif" border="0" alt="<%=RecSet("url")%>"></a> <%End If%><%If RecSet("mail") <> "" Then%><a href="mailto:<%=RecSet("mail")%>"><img src="bilder/email.gif" border="0" alt="<%=RecSet("mail")%>"></a><%End If%></td>
  </tr>
  <tr>
    <td colspan="2"><%=Link(RecSet("msg"))%></td>
  </tr>
<%If Recset("svar") <> "" Then%>
  <tr>
    <td colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><b>Svar:</b> <i><%=Replace(RecSet("svar"), vbCrLf, "<br>")%></i></td>
  </tr>
<%End If%>
</table>

<br>
<%X = X+ 1 
Recset.MoveNext
Loop
If Sidor > 1 Then%>

<table border="0" width="500" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">
  <tr>
     <td valign="top" background="man.gif">
     <%For Sid = 1 To Sidor
         If (Int(Sid)) = (Int(sida)) Then%><b><%=FixDigits(Sid,2)%></b><%Else%> <a href="<%=INC%>?next=<%=Sid%>"><%=FixDigits(Sid,2)%></a> <%End If
     Next%>
     </td>
   </tr>
</table>

<%End If
Recset.Close
Set Recset = Nothing
End If

ElseIf Request.QueryString("do") = "add" Then

   Namn       = Request.Form("namn")
   Rubrik      = Fixa(Request.Form("rubrik"))
   Mail          = Request.Form("mail")
   Msg	        = Fixa(Request.Form("msg"))
   Ip   	  = Request.Servervariables("REMOTE_ADDR")
   Url   	  = Request.Form("url")
   If Url <> "" Then
     If Left(Url,7) = "http://" Then
       Url = Url
     Else
       Url = "http://" & Url
     End If
   End If

   Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
   Response.Redirect INC
End If

Conn.Close
Set Conn=Nothing%>

</table>
```

Permalänk: https://www.webforum.nu/p/1846313

## #34 — MickeA.com, 2006-08-02T11:31Z

> **stjernfeldt skrev:**
>
> Som sagt, jag har samma problem som "siluett" .
> Jag driver en hemsida åt en klubb, lite asp har jag fattat men är ej haj på det...
> så här ser min kod ut, kan du lägga in dessa komponenter så man får en verifieringsnyckel?

 Jaha, ni sitter med samma gästboksscript.
Det är inte "bara att lägga in".

Till att börja med så måste dessa komponenter (i det här fallet AspJpeg) finnas installerat på server där sidan ligger.
Så, börja med att kolla att du har det stödet, och isf. vilken version av AspJpeg. Finns inte det är det bara onödigt arbete att lägga in "min kod", eftersom det ändå inte kommer funka utan denna komponent.

Permalänk: https://www.webforum.nu/p/1846331

## #35 — stjernfeldt, 2006-08-02T16:00Z

Det funkar med AspJpeg på mitt Hotell

> **MickeA.com skrev:**
>
> Jaha, ni sitter med samma gästboksscript.
> Det är inte "bara att lägga in".
> 
> Till att börja med så måste dessa komponenter (i det här fallet AspJpeg) finnas installerat på server där sidan ligger.
> Så, börja med att kolla att du har det stödet, och isf. vilken version av AspJpeg. Finns inte det är det bara onödigt arbete att lägga in "min kod", eftersom det ändå inte kommer funka utan denna komponent.

Permalänk: https://www.webforum.nu/p/1846411

## #36 — MickeA.com, 2006-08-02T16:33Z

> **stjernfeldt skrev:**
>
> Det funkar med AspJpeg på mitt Hotell

Ok, men om du laddar hem filerna från min hemsida, du hittar länk i det första inlägget i denna tråd.

Försök sedan att lägga in det som behövs, det finns massor med hjälp i denna tråd.
Jag tror att det är bäst för din egen skull, att du försöker själv, annars lär man sig inget.
Ge inte upp om det inte går på direkten, försök igen och fråga här om du ändå inte får till det.
Glöm då inte att bifoga relevant kod och en förklaring vad det är som händer.

Permalänk: https://www.webforum.nu/p/1846419

## #37 — Siluett, 2006-08-02T18:32Z

> **MickeA.com skrev:**
>
> Precis, nu börjar vi närma oss ;)
> Raden du nu har under *if reguest.querystring("do") ="add" then...*, but ut den mot följande:
>
>
> ```
> Response.Write("Sessionens värde: " & Session("keyCode") & "<br />")
> Response.Write("Mitt inmatade värde: " & MD5(Trim(Request.Form("keyCode"))))
> Response.End
> ```
>
> 
> Nu ska du få två värden, det övre är precis som förut sessionens värde och det under är det värde du matar in i den textruta där nyckeln skall skrivas in.
> Du måste alltså fylla i det värde som står på bilden som skapas.
> 
> När du sedan postar, jämför de två värdena som skrivs ut, dom ska vara identiska.
> 
> Är dom inte det, har du antingen skrivit in fel kod, eller så har du gjort någon annat med scriptet.
> Klistra in ditt resultat här sedan.
> 
> Får du samma värde på både raderna, är allt frid och fröjd och du kan köra den här ifsatsen där värdena jämförs.

Jaha du... \*sucka\* det gick ju inte... 

Sessionens värde: 

Microsoft VBScript runtime error '800a000d' 

Type mismatch: 'MD5' 

/dog/message.asp, line 56 

och line 56 är ju givetvis

```
	Response.Write("Mitt inmatade värde: " & MD5(Trim(Request.Form("keyCode"))))
```

Permalänk: https://www.webforum.nu/p/1846464

## #38 — MickeA.com, 2006-08-02T22:09Z

Hejhej
Det här känns som *the never ending story*, men har vi kommit såhär långt tänker jag inte ge upp förrän det funkar...
Ditt felmeddelande beror med all säkerhet att filen "MD5_crypt.asp" inte kunde hittas.
Kolla så att du **verkligen** inkulderar filen och att den ligger **högst upp** i **alla** aspfiler som använder funktionen.
Du måste alltså **även inkludera** filen i filer som lägger till / visar inlägg i din gästbok.
Inkludera filen, testa igen och återkom!

Permalänk: https://www.webforum.nu/p/1846520

## #39 — emission, 2006-08-02T22:57Z

MD5-hashningen tillför ingenting till varken funktion eller säkerhet (såvida man inte har en hackad webbserver, och då är man illa ute ändå), så jag tycker verkligen att den biten bör tas bort. Den förvirrar och tar onödig processorkraft!

Permalänk: https://www.webforum.nu/p/1846529

## #40 — Troxy, 2006-08-02T23:24Z

Rätta mig om jag har fel, men: om man inte har tillgång till ASPJpeg, borde man inte istället kunna göra någon enklare kontroll på att det är en människa? Exempelvis en fråga i stil med "Vad är det för dag imorgon?" typ?

Permalänk: https://www.webforum.nu/p/1846533

---

Tråden på webben: https://www.webforum.nu/amne/asp/149258-spamskydd-med-verifieringsnyckel/page2  
Föregående sida: https://www.webforum.nu/amne/asp/149258-spamskydd-med-verifieringsnyckel.md  
Nästa sida: https://www.webforum.nu/amne/asp/149258-spamskydd-med-verifieringsnyckel/page3.md
