Avatar billede marie14 Nybegynder
04. august 2004 - 11:13 Der er 28 kommentarer og
3 løsninger

IP adresse

Jeg har dette script, jeg kan sætte ind på den enkelte side, hvordan får jeg den til, at tage IP nummeret på brugeren?
Det fungerer hvis jeg skifter url ud med Remote address, men den vil ikke hvis jeg prøver, at udvide databasen med et IP felt. Den fører ikke oplysningerne ind i databasen. Hvad mangler den af informationer?
Marie
<%
Dim objHitConn, strHitSQL, objHitRs, intHits, strHitFile
Set objHitConn = Server.CreateObject("ADODB.Connection")
objHitConn.Provider = "Microsoft.Jet.OLEDB.4.0"
objHitConn.Open Server.MapPath("counter.mdb")
strHitFile = Request.ServerVariables("url")
strHitSQL = "SELECT Page, Hits From Main Where Page='" & strHitFile & "'"
Set objHitRs = Server.CreateObject("ADODB.Recordset")
objHitRs.Open strHitSQL, objHitConn, 1, 2
if objHitRs.EOF Then
objHitRs.AddNew
intHits = 0
objHitRs.Fields("Page").Value = strHitFile
Else
intHits = objHitRs.Fields("Hits").Value
End if
intHits = CInt(intHits) + 1
objHitRs.Fields("Hits").Value = CStr(intHits)
objHitRs.Update
objHitRs.Close
objHitConn.Close
Set objHitRs = nothing
Set objHitConn = nothing
Call DisplayImg(intHits)
function DisplayImg(intNum)
Dim itmCur, tmpCur
Response.write ""
For itmCur = 1 To Len(intNum)
tmpCur = Mid(cStr(intNum), itmCur, 1)
Response.write ""
Next
Response.write ""
End function
%>
Avatar billede steines Nybegynder
05. august 2004 - 08:53 #1
Din counter er lavet til at holde styr på hvor mange hits der er på en given side, og ikke hvilke ip-adresser der har besøgt siderne. Hvis du indsætter besøgenes ip-adresser i den nuværende kode, vil du kun kunne gemme og få vist den sidste gæsts ip.

Alternativt kan du oprette en ekstra tabel som indeholder en liste over ip-adresser der besøger dine sider, og et id for hvilken side de har besøgt jf. din eksisterende tabel.

/Steines
Avatar billede marie14 Nybegynder
05. august 2004 - 09:14 #2
Ja, det er fordi den giver siderne ID nummer og tæller hits sammen, så kan den ikke også indeholde alle de Ip numre der har været inde på siden, det er det du mener, ikke?
Hvordan får jeg så de to tabeller til at fungere sammen?
Jeg har overvejet om denne hit counter passer bedre til mit behov, men jeg kan heller ikke få den til, at tage Ip adressen med i databasen. Den ser sådan her ud:
<%
page= "http://" & request.servervariables("SERVER_NAME")

page= page & request.servervariables("script_name")

qstring= request.servervariables("query_string")
if trim(qstring) <> "" then
page= page & "?" & qstring
end if ' end querystring routine

accessdb="hitcounterdb"
cn="DRIVER={Microsoft Access Driver (*.mdb)};"
cn=cn & "DBQ=" & server.mappath(accessdb)
Set rs = Server.CreateObject("ADODB.Recordset")

sql = "insert into hitcounter (page,hit)"
sql = sql & " values( '" & page & "',1 )"
rs.Open sql, cn
%>

<%

sql= "SELECT Sum([hit]) AS hits FROM hitcounter where page='"& page &"'"
rs.Open sql, cn

%><p>
<%= page %> <br>
has been visited <%= rs("hits") %> times
Avatar billede steines Nybegynder
05. august 2004 - 09:17 #3
Det sidste script har samme problematik som det første.

Hvilke felter ahr du i din base? (id, page, hit)?

/Steines
Avatar billede marie14 Nybegynder
05. august 2004 - 09:21 #4
Ja, id, page, hit
Avatar billede dragox Nybegynder
05. august 2004 - 09:23 #5
hvilken database? mysql eller access
Avatar billede marie14 Nybegynder
05. august 2004 - 09:29 #6
access
Avatar billede steines Nybegynder
05. august 2004 - 10:01 #7
Prøv at tilføge en række "ip" til din base, og så bruge nedenstående sql-sætning i stedet.

sql = "insert into hitcounter (page,hit,ip)"
sql = sql & " values( '" & page & "',1, '" & Request.servervariables("REMOTE_ADDR") & "')"

/Steines
Avatar billede steines Nybegynder
05. august 2004 - 10:02 #8
Glemte lige at rækken ip skal være af typen tekst

/Steines
Avatar billede dragox Nybegynder
05. august 2004 - 10:05 #9
hat kopiret dette fra min egen tagwall:


<% if request.Form("tagwall") = "tagwall" then
    Function fncTextChange1(strText)
            strTekst = Trim(strText)
            fncTextChange1 = Replace(strTekst,"""","''")
            fncTextChange1 = Replace(strTekst,"'","''")
            fncTextChange1 = Replace(fncTextChange1,"  "," &nbsp;")
            fncTextChange1 = Replace(fncTextChange1,">","&gt;")
            fncTextChange1 = Replace(fncTextChange1,"<","&lt;")
            fncTextChange1 = Replace(fncTextChange1,vbCrLf,"<BR>")
            fncTextChange1 = Replace(fncTextChange1,"å","&aring;")
            fncTextChange1 = Replace(fncTextChange1,"æ","&aelig;")
            fncTextChange1 = Replace(fncTextChange1,"ø","&oslash;")
            fncTextChange1 = Replace(fncTextChange1,"Å","&Aring;")
            fncTextChange1 = Replace(fncTextChange1,"Æ","&AElig;")
            fncTextChange1 = Replace(fncTextChange1,"Ø","&Oslash;")
        End Function
    indhold = fncTextChange1(request.form("text"))
objConn.Execute = "Insert into tagwall (tid, dato, ip, af, emne, hp, email, text) Values('"&time()&"','"&date()&"','"&request.ServerVariables("REMOTE_ADDR")&"','"&request.Form("navn")&"','"&request.Form("emne")&"','"&request.Form("hp")&"','"&request.Form("email")&"','"&indhold&"')"
response.Redirect("tagwall.asp")
end if
%>
Avatar billede dragox Nybegynder
05. august 2004 - 10:06 #10
<% IP = Request.ServerVariables("REMOTE_HOST") %>
    <br>
    IP = <%response.write ip%>
Avatar billede marie14 Nybegynder
05. august 2004 - 10:59 #11
Steines virker og tager udgangspunkt i det jeg har i forvejen, hvilket gør det meget nemmere for mig, så du skal have mine point. Må jeg komme med 1 eller 2 tillægsspørgsmål? Hvordan skriver jeg det, hvis jeg vil have folks browsertype og skærmopløsning med?
Mvh. Marie
Avatar billede steines Nybegynder
05. august 2004 - 11:18 #12
Hvis du vil have deres browsertype og skærmopløsning med kan du skrive flg.:

Tilføj en række "browser" af typen tekst til din db.

sql = "insert into hitcounter (page,hit,ip,browser)"
sql = sql & " values( '" & page & "',1, '" & Request.servervariables("REMOTE_ADDR") & "', '" & Request.servervariables("HTTP_USER_AGENT") & "')"

Det skulle gemme oplysningerne om deres browser.

Jeg har fundet flg. om skærmopløsning, men får en tom streng retur.

response.write "RES: " & request.servervariables("HTTP_UA_PIXELS")

Prøv det og se om det virker hos dig.

/Steines
Avatar billede marie14 Nybegynder
05. august 2004 - 11:37 #13
Ja, det med browseren virker jo bare perfekt. Hvad angår skærmopløsning skal jeg selvfølgelig have et felt mere i databasen, men kunne du være lidt mere præcis, hvad angår skærmopløsningen? Hvordan "fletter" jeg det ind i det eksisterende?
Mvh. Marie
Avatar billede steines Nybegynder
05. august 2004 - 11:46 #14
Tilføj en række "oploesning" af typen tekst til din db.


if (request.servervariables("HTTP_UA_PIXELS") <> "") then
begin
  oploesning = request.servervariables("HTTP_UA_PIXELS")
else
  oploesning = "Ej oplyst"
end if

sql = "insert into hitcounter (page,hit,ip,browser,oploesning)"
sql = sql & " values( '" & page & "',1, '" & Request.servervariables("REMOTE_ADDR") & "', '" & Request.servervariables("HTTP_USER_AGENT") & "', '" & oploesning & "')"

Det er ikke sikkert du får andet end "Ej oplyst" men det er sådan du kan bruge det.

/Steines
Avatar billede steines Nybegynder
05. august 2004 - 11:48 #15
Du skal lige slette "begin" i if-løkken..... :)

if (request.servervariables("HTTP_UA_PIXELS") <> "") then
  oploesning = request.servervariables("HTTP_UA_PIXELS")
else
  oploesning = "Ej oplyst"
end if

sql = "insert into hitcounter (page,hit,ip,browser,oploesning)"
sql = sql & " values( '" & page & "',1, '" & Request.servervariables("REMOTE_ADDR") & "', '" & Request.servervariables("HTTP_USER_AGENT") & "', '" & oploesning & "')"
Avatar billede marie14 Nybegynder
05. august 2004 - 15:28 #16
Hej Steines
Jeg har dette Javascript, der virker. Hvordan får jeg databasen til, at tage det?
<script type="text/javascript">

if (document.all) {
  browserwidth  = document.body.clientWidth;
  browserheight = document.body.clientHeight;               
} else {
  browserwidth  = window.innerWidth;
  browserheight = window.innerHeight;     
}

screenheight = screen.height
screenwidth  = screen.width

document.write ('<p>Skærmopløsning: ' + screenwidth + ' * ' + screenheight + ' pixels</p>')
document.write ('<p>Browservindue: ' + browserwidth + ' * ' + browserheight + ' pixels</p>')

</script>
Avatar billede steines Nybegynder
06. august 2004 - 09:24 #17
Hej marie

Det tog lige lidt tid at lure det sidste, men her er et forsøg.

<form name="formular" action="./test.asp" method="post">
    <input type="hidden" name="opl">
</form>

<script type="text/javascript">
<!--

function FindesCookie(navn)
{
  var aCookie = document.cookie.split("; ");
  for (var i=0; i < aCookie.length; i++)
  {
    var aCrumb = aCookie[i].split("=");
    if (navn == aCrumb[0]) 
      return true;
  }
  return false;
}


if (!FindesCookie('sendt'))
{
    document.formular.opl.value = screen.width + '*' + screen.height;
    document.cookie = 'sendt=ja';   
    document.forms[0].submit();
}


-->
</script>



<%
Function GetInput(i)
    GetInput=""
    if i<>"" then
        GetInput=Request.QueryString(i)
        if GetInput="" or IsNull(GetInput) then GetInput=Request.Form(i)
    end if
End Function

sql = "insert into hitcounter (page,hit,ip,browser,oploesning)"
sql = sql & " values( '" & page & "',1, '" & Request.servervariables("REMOTE_ADDR") & "', '" & Request.servervariables("HTTP_USER_AGENT") & "', '" & GetInput("opl") & "')"
%>

Indsæt formen i toppen af siden.

/Steines
Avatar billede marie14 Nybegynder
06. august 2004 - 10:59 #18
Hej Steines
Det virker!!! Alletiders!!
Findes der en mere enkelt metode end, at lægge det på den enkelte side?
Du har lavet en cookie oplysningerne bliver gemt i ikke?
En ting, der undrer mig er, at den tager kun opløsningen med første gang man er inde på siden, mens alle de andre oplysninger tager den med hver gang, man klikker på siden, det er ikke fordi det betyder så meget, men det kunne være rart, at vide hvorfor.
Mvh. Marie
Avatar billede marie14 Nybegynder
06. august 2004 - 11:11 #19
Der er en anden lille sjov ting. Oplysningerne som kommer ind vedr. date time, der er klokken ca. 15 min. foran? Mærkeligt ikke?
Mvh. Marie
Avatar billede steines Nybegynder
06. august 2004 - 11:24 #20
Grunden til at den kun tager opløsningen med er fordi cookien ligger på pc'en og javascriptet kun bliver kørt hvis der ikke er en cookie. Counteren burde jo heller ikke øges med en hvér gang en bruger besøger siden, men ex. kun én gang i døgnet.

Det med tiden og de 15 minutter, er fordi den tager tiden på serveren og ikke tiden på din pc.

/steines
Avatar billede steines Nybegynder
06. august 2004 - 11:25 #21
Du kan vha. asp-koden include siden på din hovedside. Der er jo ikke nogen synlig kode, så det vil ikke kunne ses.

/Steines
Avatar billede marie14 Nybegynder
06. august 2004 - 11:32 #22
Nej, det ved jeg, men jeg ville gerne kunne se antal hits på den enkelte side.
Hvordan kan jeg styre at counteren kun tæller f.eks 1 gang i døgnet?
Hvad skal jeg i øvrigt skrive hvis, jeg vil have hits på f.eks downloadning af pdf filer fra mine sider? Jeg vil godt oprette disse spørgsmål for sig, så du kan få point for dem, hvis du vil have det?
Det er rart at støde på en der er dygtig OG god til at forklare.
Mvh. Marie
Avatar billede steines Nybegynder
06. august 2004 - 11:39 #23
Hmmmm..... Hvis du vil have tællere på dine downloads, skal du gemme dine filnavne i en tabel i databasen kunne se ud som flg.: id, filnavn, antal_downloads

Du skal så lave en side hvor du laver en liste over dine filer, og et link som øger tælleren og sender filen.

Mht. at de kun skal tælles en gang i døgnet, kan du lede efter den cookie du opretter på deres pc. Hvis den er der skal tælleren ikke øges.

Det er nok en god idé at oprette nye spørgsmål. Ikke så meget pga. mine point, men for at andre brugere med lignende problemer kan søge efter løsninger på disse.

/Steines
Avatar billede marie14 Nybegynder
06. august 2004 - 12:08 #24
Puhha, det var lidt af en mundfuld.
Jeg opretter spørgsmålene under hits på downloadning, ok?
Hvor mange point vil du have? :-)
Mvh. Marie
Avatar billede steines Nybegynder
06. august 2004 - 12:09 #25
;o) Det må du om marie. Jeg har lavet koden så den kune tæller én gang i døgnet.

/Steines
Avatar billede marie14 Nybegynder
06. august 2004 - 12:12 #26
Ok, 200. Jeg skylder dig også lidt for de tidligere spørgsmål.
Vi ses under det nye spørgsmål.
Avatar billede marie14 Nybegynder
06. august 2004 - 14:29 #27
Hvor blev du af?
Avatar billede steines Nybegynder
09. august 2004 - 08:06 #28
Hvad har du kaldt opgaven? Kan ikke finde den
Avatar billede marie14 Nybegynder
09. august 2004 - 09:10 #29
Jeg kaldte den Hits på downloading. Jeg har ikke været i nærheden af en pc i weekenden, så derfor først nu....
Mvh. Marie
Avatar billede steines Nybegynder
11. august 2004 - 12:40 #30
Du kan kontakte mig på email: dr_derude[snabel-a]hotmail[punktum]com
Avatar billede marie14 Nybegynder
11. august 2004 - 12:41 #31
Alletiders, tak.
Mvh. Marie
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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