Avatar billede mettecarsten Nybegynder
08. august 2006 - 15:44 Der er 12 kommentarer og
1 løsning

Udspecificering af HTTP_REFERER

Hej Eksperter

Jeg ønsker at indsamle data omkring mine besøgende og har fundet masser af oplysninger her på siden, men kan ikke få løst det sidste.

Jeg har indsat denne generelle kode på en side:

<%
HTTP_REFERER = Request.ServerVariables("HTTP_REFERER")
Response.Write HTTP_REFERER
%>

Det giver f.eks. følgende:

http://www.google.dk/search?q=kroophold&hl=da&lr=&start=30&sa=N

Jeg vil nu gerne have det hele ned i en database, men ikke som en samlet linie, men adskilt. Ud fra ovenstående eksempel, vil jeg gerne have følgende seperat:

* www.google.dk
* kroophold (altså indholdet af q=)
* 30 (altså indholdet af start=)

Hvor på nettet finder jeg yderligere information eller er der nogle, som har en færdig kode (skal være i asp)?

Virkelig på forhånd tak.
Avatar billede fennec Nybegynder
08. august 2006 - 15:55 #1
Hvad nu hvis du har en REFERER der ikke kommer fra google (f.eks jubii). Hvad så??
Avatar billede mettecarsten Nybegynder
08. august 2006 - 15:57 #2
Nu har jeg ikke prøvet det af på andre søgninger end i google, men generelt skal første punkt omhandle den side, hvor brugeren kommer fra. Håber, at det giver mening
Avatar billede fennec Nybegynder
08. august 2006 - 16:14 #3
Vi kan sagtens lave et script som deler den op når vi ved det er googlekode, men det er undtagelsen, der er problemet. Men noget i denne stil (ikke testet):

referer = "http://www.google.dk/search?q=kroophold&hl=da&lr=&start=30&sa=N"
if instr(referer,"http://www.google.dk")=1 then
  www = "http://www.google.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
  temp = mid(instr(referer,"start=")+6)
  start = left(temp,inStr(temp,"&"))
else
  'Anden url end google.dk
end if
Avatar billede mettecarsten Nybegynder
08. august 2006 - 16:59 #4
Jeg har ikke lige prøvet koden af, men generelt gør det ikke så meget, hvor brugeren kommer fra. Det vigtigste er søgeordet! Hvis jeg laver søgningen på msn.dk bliver koden:

http://search.msn.dk/results.aspx?q=kroophold&FORM=QBRE

Kan du lave en kode, som udskiller indholdet af q=, som umiddelbart er ens for både google og msn?
Avatar billede fennec Nybegynder
09. august 2006 - 10:54 #5
if instr(referer,"http://www.google.dk")=1 then
  www = "http://www.google.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
  temp = mid(instr(referer,"start=")+6)
  start = left(temp,inStr(temp,"&"))
elseif instr(referer,"http://search.msn.dk")=1 then
  www = "http://search.msn.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
else
  'Anden url end google.dk eller msn
end if
Avatar billede mettecarsten Nybegynder
09. august 2006 - 11:10 #6
Det ser rigtig godt ud. Jeg har lagt koden ind, og der kommer umiddelbart ingen fejl. Jeg ville, inden jeg arbejder videre med at få disse data ned i min database lige på skærmen have skrevet værdierne ud, men kan umiddelbart ikke gøre dette. Kan jeg ikke bare i linien under start = ... blot f.eks. skrive response.write www?
Avatar billede fennec Nybegynder
09. august 2006 - 11:49 #7
Jo, men det var nok smartere at gøre det efter if-blokken:

...
else
  'Anden url end google.dk eller msn
end if
response.write "www: "& www &"<br>"
response.write "q: "& q &"<br>"
response.write "start: "& start &"<br>"
Avatar billede mettecarsten Nybegynder
09. august 2006 - 11:59 #8
Det lyder meget fornuftigt, hvorfor jeg har indsat følgende:

<%
if instr(referer,"http://www.google.dk")=1 then
  www = "http://www.google.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
  temp = mid(instr(referer,"start=")+6)
  start = left(temp,inStr(temp,"&"))
elseif instr(referer,"http://search.msn.dk")=1 then
  www = "http://search.msn.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
else
  'Anden
end if
response.write "www: "& www &"<br>"
response.write "q: "& q &"<br>"
response.write "start: "& start &"<br>"
%>

men den udskriver ikke noget resultat??

www:
q:
start:
Avatar billede fennec Nybegynder
09. august 2006 - 12:47 #9
Ser ud til du mangler:
referer = Request.ServerVariables("HTTP_REFERER")

så referer bliver smidt i variablen.
Avatar billede mettecarsten Nybegynder
09. august 2006 - 12:55 #10
Hvis koden bliver:

referer = Request.ServerVariables("HTTP_REFERER")

if instr(referer,"http://www.google.dk")=1 then
  www = "http://www.google.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
  temp = mid(instr(referer,"start=")+6)
  start = left(temp,inStr(temp,"&"))
elseif instr(referer,"http://search.msn.dk")=1 then
  www = "http://search.msn.dk"
  temp = mid(instr(referer,"q=")+2)
  q = left(temp,inStr(temp,"&"))
else
  'Anden
end if
response.write "www: "& www &"<br>"
response.write "q: "& q &"<br>"
response.write "start: "& start &"<br>"
%>

kommer der desværre kun: HTTP 500 - Intern serverfejl
Avatar billede mettecarsten Nybegynder
09. august 2006 - 14:25 #11
Jeg har nu fundet en acceptabel løsning, som er (hvis andre kan bruge det til noget):

<%

If InStr(Request.ServerVariables("HTTP_REFERER"),"http://www.google.dk") = 1 OR InStr(Request.ServerVariables("HTTP_REFERER"),"http://www.google.com") = 1 OR InStr(Request.ServerVariables("HTTP_REFERER"),"http://search.msn.dk") = 1 OR InStr(Request.ServerVariables("HTTP_REFERER"),"http://search.msn.com") = 1 OR InStr(Request.ServerVariables("HTTP_REFERER"),"http://search.jubii.dk") = 1 Then

Streng = Request.ServerVariables("HTTP_REFERER")
Strenghost = Request.ServerVariables("HTTP_HOST")
Strengurl = Request.ServerVariables("URL")

StrSQL = "INSERT INTO 1emneord(Streng, Strenghost, Strengurl)"
StrSQL = StrSQL & "Values("
StrSQL = StrSQL & "'" & Streng & "',"
StrSQL = StrSQL & "'" & Strenghost & "',"
StrSQL = StrSQL & "'" & Strengurl & "'"
StrSQL = StrSQL & ")"

Set StrSQL = conn.execute(StrSQL)

else
' ikke fra en søgemaskine

End If
%>

Det eneste der mangler er faktisk bare, at værdien af q= (altså søgeordet / søgesætningen) blev udskilt og indsat særskilt. Jeg gik lidt kold i koderne, så nu accepterer jeg min løsning, men hvis det er nemt at udskille q=, så vil jeg da rigtig gerne have det med.

Smid et svar, så du kan få dine fortjente point. Tak for hjælpen!
Avatar billede fennec Nybegynder
10. august 2006 - 08:58 #12
.o) <-- One Eyed Jack
Avatar billede mettecarsten Nybegynder
10. august 2006 - 09:04 #13
Tak for hjælpen :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester