---
title: "Ip spärr script?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/72488-ip-spärr-script"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "tomas21"
published: "2003-03-28T18:58:23.000Z"
updated: "2003-03-29T10:47:15.000Z"
replies: 13
views: 311
page: 1
pages: 1
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/72488-ip-spärr-script"
---

# Ip spärr script?

## #1 — tomas21, 2003-03-28T18:58Z

Hejsan!
Jag håller på en gästbok som kommer att innehålla ett ip ban script. Jag har nästan fått det att funka jag har för nuvarande koden nedan:

```
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../secret/secret.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")

SQLsats = "SELECT * FROM BannedIpnr ORDER by Ipnr desc"
RecSet.Open SQLsats, Connect, adOpenStatic, adLockOptimistic

Do Until RecSet.EOF
If RecSet("Ipnr") = Request.Servervariables("REMOTE_ADDR") Then
Response.Write"Du är spärrad"
Else
Response.Write"Du är inte spärrad"
End If
RecSet.MoveNext
Loop
%>
```

Scriptet kollar i databasen om besökarens ip nummer finns där. Om den inte finns kommer den att skriva ut "Du är inte spärrad" om den finns där kommer den att skriva ut "Du är spärrad". Problemet nu är att om jag lägger in 2 ip nummer i databasen som inte är min kommer den att skriva ut "Du är inte spärrad" 2 gånger. Samma sak gäller om jag är spärrad. Det jag undrar över är om det att göra så att den avbryter Do Until loopen så fort den har hittat IP nummret om den finns i databasen och skriver ut "Du är spärrad" bara en gång. Samt om den loopar igenom hela databasen och inte hittar IP nummret då ska den skriva ut "Du är inte spärrad" endast en gång även om databasen innehåller flera andra IP nummer.

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

## #2 — Sebbe, 2003-03-28T19:02Z

```
Do Until RecSet.EOF
  strIp = strIp & RecSet("Ipnr")
  RecSet.MoveNext
Loop

If InStr(strIp,Request.Server.Variables("REMOTE_ADDR")) > 0 Then
  Response.Write("Du är spärrad")
Else
  Response.Write("Du är inte spärrad")
End If
```

**/red** Write ska det va, inte Wrute! Fy på mig! :r

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

## #3 — tomas21, 2003-03-28T19:03Z

Ska testa det.

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

## #4 — tomas21, 2003-03-28T19:06Z

Tackar tror det fungerar ska testa det lite mera :)

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

## #5 — tomas21, 2003-03-28T19:07Z

Två frågor bara vad betyder strIp och inStr

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

## #6 — Sebbe, 2003-03-28T19:07Z

**/red** Den redigerar vi bort :)

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

## #7 — Sebbe, 2003-03-28T19:08Z

> **tomas21 skrev:**
>
> Två frågor bara vad betyder strIp och inStr

strIp är en variabel och InStr är en funktion som kollar om en viss textsnutt finns i en text typ :)

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

## #8 — tomas21, 2003-03-28T19:11Z

Men vad händer här

```
InStr(strIp,Request.Servervariables("REMOTE_ADDR")) > 0
```

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

## #9 — Sebbe, 2003-03-28T19:14Z

InStr letar igenom variabeln strIp, som innehåller alla IP-adresser i databasen, och om positionen den hittade besökarens IP-adress är större än 0 (om texten man letar efter inte finns är positionen 0) så ska den skriva ut att man är blockad. Lär mer [här](http://www.devguru.com/Technologies/vbscript/quickref/instr.html).

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

## #10 — tomas21, 2003-03-28T19:16Z

Tack så mycket nu förstår jag mycket mer. Jag har nu lärt mig hur man lägger in alla poster ur en databas i en variabel :) :)

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

## #11 — Sebbe, 2003-03-28T19:18Z

Man lär sig något varje dag :)

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

## #12 — solbulle, 2003-03-28T19:49Z

Borde väl egentligen vara bättre att kolla direkt i sql-frågan?

```
<%
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../secret/secret.mdb")
Set RecSet = Server.CreateObject("ADODB.Recordset")
RecSet.Open "SELECT * FROM BannedIpnr WHERE Ipnr = '" & Request.Servervariables("REMOTE_ADDR") & "'", Connect 
if not RecSet.eof then passed = true else passed = false
RecSet.close
set RecSet = nothing
Connect.close
set Connect = nothing
If passed then
  Response.Write("Du är spärrad")
Else
  Response.Write("Du är inte spärrad")
End If
%>
```

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

## #13 — Sebbe, 2003-03-28T19:53Z

> **solbulle skrev:**
>
> Borde väl egentligen vara bättre att kolla direkt i sql-frågan?
>
>
> ```
> <%
> Set Connect = Server.CreateObject("ADODB.Connection")
> Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../secret/secret.mdb")
> Set RecSet = Server.CreateObject("ADODB.Recordset")
> RecSet.Open "SELECT * FROM BannedIpnr WHERE Ipnr = '" & Request.Servervariables("REMOTE_ADDR") & "'", Connect 
> if not RecSet.eof then passed = true else passed = false
> RecSet.close
> set RecSet = nothing
> Connect.close
> set Connect = nothing
> If passed then
>   Response.Write("Du är spärrad")
> Else
>   Response.Write("Du är inte spärrad")
> End If
> %>
> ```

Nu ska vi inte va sånna §e ;)

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

## #14 — OveRRidE, 2003-03-29T10:47Z

> Nu ska vi inte va sånna

Jodå, det är helt korrekt. 

Att köra ut alla adresserna till en sträng verkar inte vara den bästa lösningen när man kan ställa en jämförelse mot databasen direkt istället. Strängfunktioner är inte kända för att vara snabba. ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/72488-ip-spärr-script
