| FAQ |
| Kalender |
|
|
#1 | |||
|
||||
|
Klarade millennium-buggen
|
Jag har gjort ett referrer-script i ASP och har en ganska jobbig lösning för att filtrera bort URL:er som jag inte vill ska länkas på sajten. I dagsläget ser den ut så här:
Kod:
url = TILLFIXAD Request.ServerVariables("HTTP_REFERER")
If url <> "www.sajt1.se" AND url <> "www.sajt2.se" AND url <> "www.sajt3.se" AND url <> "www.sajt4.se" AND _
url <> "www.sajt5.se" AND url <> "www.sajt6.se" AND url <> "www.sajt7.se" AND url <> "www.sajt8.se" Then
MATA IN I DATABASEN
Kod:
If url <> iLista Then MATA IN I DATABASEN Är det någon som har en smidig lösning på hur man kan "loopa" igenom en lista för att jämföra varje besök från en annan sajt? |
|||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Medlem
|
Kan du inte lagra de urler du vill filtrera bort i en databas?
Det känns som den bästa lösningen. |
||
|
|
Svara med citat
|
|
|
#3 | ||
|
|||
|
Medlem
|
Känns nästan som att en array vore som den lättaste lösningen. Sen skulle jag nog kört med en InStr istället för att kolla exakt.
Typ såhär. strFilter = "www.sida1.se,www.sida2.se,www.sida3.se" arrFilter = Split(strFilter,",") For i = 0 To UBound(arrFilter) If InStr(1, url, arrFilter(i)) > 0 Then Mata in i databasen End If Next Eller kanske Utan loop, borde också funka. strFilter = "www.sida1.se,www.sida2.se,www.sida3.se" If InStr(1, strFilter, url) > 0 Then End If |
||
|
|
Svara med citat
|
|
|
#4 | ||
|
|||
|
Har WN som tidsfördriv
|
Som tidigare nämns, databas vore det lämpligaste. Annars kan du använda Knallis förslag men istället för att fylla strängen strFilter direkt i koden så kan du lagra alla domäner i en textfil som du sen läser in och lagrar i strFilter. Då behöver du bara ändra i textfilen när du vill lägga till eller tabort en domän.
|
||
|
|
Svara med citat
|
|
|
#5 | |||
|
||||
|
Klarade millennium-buggen
|
Tack för era tips, jag lyckades lösa problemet såhär:
ReadTextFile.asp Kod:
<%
Function ReadTextFile(strFilePath)
Dim objFSO, objFile, strAllFile
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(strFilePath)
strAllFile = ""
If Not(objFile.AtEndOfStream) Then
*strAllFile = objFile.ReadAll
End If
objFile.Close
Set objFile = Nothing
Set objFSO = Nothing
strAllFile = Replace(strAllFile, Chr(13)&Chr(10), Chr(13))
strAllFile = Replace(strAllFile, Chr(10)&Chr(13), Chr(13))
ReadTextFile = Split(strAllFile, Chr(13))
End Function
%>
Kod:
<%referer = Request.ServerVariables("HTTP_REFERER")
If referer <> "" Then
Dim WordArray
WordArray = Split(referer, "/")
url = WordArray(2)
check_visitor = Request.Cookies("visitor")
If check_visitor <> "counted_for" Then
<!--#include file="ReadTextFile.asp"-->
*Const FILE_NAME="referrer-blocked.txt"
*strFilter = ReadTextFile(Server.MapPath(FILE_NAME))
For i = 0 To UBound(strFilter)
If not InStr(1, url, strFilter(i)) > 0 Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("databas\ref_db.mdb")
Set RecSet = Server.CreateObject("ADODB.RecordSet")
'Response.Write (url)
SQL = "SELECT * FROM referer WHERE url like '%"&url&"%'"
RecSet.Open SQL, Conn
'uppdatbesok = RecSet("antal") + 1
*
*If RecSet.EOF Then
* Response.Cookies("visitor") = "counted_for"
* Response.Cookies("visitor").Expires = Date() + 1
* adress = url
* besok * = 1
* SQL = "Insert Into referer (url,antal) Values('" & adress & "','" & besok & "')"
* Conn.Execute(SQL)
*Else
* Response.Cookies("visitor") = "counted_for"
* Response.Cookies("visitor").Expires = Date() + 1
* datum *= date()
* tid *= Time()
* besok = RecSet("antal") + 1
* Conn.execute("Update referer Set antal='" & besok & "' *WHERE url='" & url & "'")
*End If
*Else
End If
Next
Else
End If
Else
End If%>
|
|||
|
|
Svara med citat
|
|
|
#6 | ||
|
|||
|
Supermoderator
|
Varför använder du inte databasen till allt jobb och lägger till en IN eller snarare en NOT IN sats bara?
Ett litet tips är också att indentera koden.
__________________
Jonny Zetterström se.linkedin.com/in/jonnyz | bjz.se | sajthotellet.com | kalsongkungen.se | zretail.se | zetterstromnetworks.se | webbhotellsguide.se | ekonominyheter24.se | nyamobiltelefoner.se | gapskratt.se | antivirusguiden.se | jonny.nu |
||
|
|
Svara med citat
|
|
|
#7 | |||
|
||||
|
Klarade millennium-buggen
|
Citat:
Koden är indenterad, det är WN som tar bort alla intabbningar. Ser dock att några blanksteg finns kvar här och där. |
|||
|
|
Svara med citat
|
|
|
#8 | |||
|
||||
|
Klarade millennium-buggen
|
Citat:
|
|||
|
|
Svara med citat
|
|
|
#9 | |||
|
||||
|
Klarade millennium-buggen
|
Så här löste jag det med databas istället. Synpunkter och förbättringsförslag av koden välkomnas.
Kod:
<%referer = Request.ServerVariables("HTTP_REFERER")
If referer <> "" Then
Dim WordArray
WordArray = Split(referer, "/")
url = WordArray(2)
check_visitor = Request.Cookies("visitor")
If check_visitor <> "counted_for" Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("databasen\databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM refererfilter WHERE url like '%"&url&"%'"
RecSet.Open SQL, Conn
If RecSet.EOF Then
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Server.MapPath("databasen\ref_databasen.mdb")
Set RecSet = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM referer WHERE url like '%"&url&"%'"
RecSet.Open SQL, Conn
If RecSet.EOF Then
Response.Cookies("visitor") = "counted_for"
Response.Cookies("visitor").Expires = Date() + 1
adress = url
besok = 1
SQL = "Insert Into referer (url,antal) Values('" & adress & "','" & besok & "')"
Conn.Execute(SQL)
Else
Response.Cookies("visitor") = "counted_for"
Response.Cookies("visitor").Expires = Date() + 1
besok = RecSet("antal") + 1
Conn.execute("Update referer Set antal='" & besok & "' WHERE url='" & url & "'")
End If
RecSet.Close
Conn.Close
Set RecSet = Nothing
Set Conn = Nothing
Else
End If
RecSet.Close
Conn.Close
Set RecSet = Nothing
Set Conn = Nothing
Else
End If
Else
End If%>
|
|||
|
|
Svara med citat
|
| Svara |
|
|