Ringstadjr Skrevet 16. november 2006 Del Skrevet 16. november 2006 Har noen kunnskaper om hvordan man kan lage en hit counter som bare teller unike treff ved hjelp av JSP og MySQL? Setter pris på alle svar Lenke til kommentar
pgdx Skrevet 17. november 2006 Del Skrevet 17. november 2006 Disclaimer: Jeg har aldri programmert JSP, så denne teller kun for PHP, men det bør være mye det samme. I PHP har man det som kalles SESSIONS. Det er et slags array hvor du kan lagre alt, så blir det lagret på serveren for den brukeren spesielt. Hvis du finner ut hva JSP bruker, sjekker du bare om et session allerede eksisterer, gjør det ikke det, inkrementerer du et felt i databasen din. Eksisterer det allerede, dropper du det. Databasen din trenger egentlig bare inneholde ett felt, en integer hits. En session i PHP forsvinner vanligvis når man lukker nettleseren, etter 20 minutter med idling eller hvis du går inn og eksplisitt sletter autentiserte sesjoner. Lenke til kommentar
pgdx Skrevet 17. november 2006 Del Skrevet 17. november 2006 Nå vil jeg få legge til at denne registrerer unike sesjoner, som er det man vanligvis vil ha. Vil du derimot registrere unike besøk fra unike IP-adresser, må du jo lage et felt i en database for IP-adresser, og gjøre det samme som fortalt over, men også sjekke om IP-adressen eksisterer fra før. Et tredje alternativ er å registrere unike sesjoner per unike IP-adresser, som vil være en fin blanding, og du vil kunne få både unike besøkere (feilaktig basert på IP-adresser, ettersom en fylkeskommune kan ha ganske mange folk på samme IP-adresse) og unike treff (ved å legge sammen alle IP-adressers unike sesjoner). Lenke til kommentar
Ringstadjr Skrevet 17. november 2006 Forfatter Del Skrevet 17. november 2006 Jeg er ganske ny innen JSP og PHP har jeg aldri prøvd. Takker for svaret, men vet ikke hvor mye det hjalp meg. Skjønner at session er noe som lagrer info om brukeren som er tilkoblet siden min, blant annet ip-adresse. Ved å søke litt rundt på nettet fant jeg at det også i JSP finnes noe som heter session, men vet ikke om det er det samme som i PHP. Har funnet noen eksempler kode, men det innebærer at brukeren må fylle ut et skjema før at opplysningene skal bli registrerte. Er det noen som kan fortelle meg hva jeg skal gjøre i JSP for å få det til, evt. gi meg litt kode å se Lenke til kommentar
Drømmemannen Skrevet 17. november 2006 Del Skrevet 17. november 2006 Session fungerer på samme måte i begge språk. Det er rett og slett en datastruktur som er (så godt som mulig) unik for hver klient som henvender seg til serveren. Man kan i utgangspunktet putte hva som helst inn i denne datastrukturen, som typisk er et map/assosiativ array. Jeg kan ikke JSP selv, så der kan jeg ikke hjelpe deg. Lenke til kommentar
w3edr5t Skrevet 24. november 2006 Del Skrevet 24. november 2006 (endret) Her en er simpel en.. <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.ResultSet"%> <%@page import="java.sql.Statement"%> <%@page import="java.sql.Connection"%> <%@page import="java.sql.DriverManager"%> <% //Mega _simple_ hit counter. //(Does not scale, is not robust, only supports one counter.) //Count unique number of users accessing this page. String alreadyCounted = (String)session.getAttribute("alreadyCounted"); if (alreadyCounted == null) { //Database script //create database hitcounter; //create table hits (count integer); //insert into hits values(1); //Read, increment and update hit counter. Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/hitcounter"; String username = "root"; String password = ""; Connection connection = DriverManager.getConnection(url, username, password); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from hits"); resultSet.next(); int count = resultSet.getInt(1); count++; resultSet.close(); statement.close(); PreparedStatement preparedStatement = connection.prepareStatement("update hits set count = ?"); preparedStatement.setInt(1, count); preparedStatement.executeUpdate(); System.out.println("Current hits are: " + count); preparedStatement.close(); connection.close(); //Mark this session as counted session.setAttribute("alreadyCounted", "You've been counted"); } %> Endret 24. november 2006 av w3edr5t Lenke til kommentar
Ringstadjr Skrevet 18. januar 2007 Forfatter Del Skrevet 18. januar 2007 Ok. Takker for alle svar. Jeg la saken litt på is, men nå har jeg lånt meg en bok om JSP. Tarrarattataaa! Så nå har jeg funnet ut at det er noe som heter sessions også i java og jeg tror jeg har sånn noenlunde peiling på hva jeg skal gjøre. Problemet nå er hva jeg faktisk skal telle. Som drange var inne på kunne jeg telle ip-adresser, sessioner eller en blanding(som jeg ikke helt skjønte hvordan skulle bli). Hva er vanligst? Telle sessioner? I så fall, hva er normalt et tidsintervall for en session? Lenke til kommentar
qualbeen Skrevet 22. januar 2007 Del Skrevet 22. januar 2007 Problemet med å telle antall sessions er at brukerne kan lukke nettleseren, åpne den igjen og gå inn på siden på ny. Da vil man få en ny session, og dermed registrert som en ny unik bruker... Problemet med å telle unike IP-adresser er at det er veldig enkelt å forny sin ip-adresse. Alle som kobler opp via modem/isdn får ny IP for hver pålogging, mens vi som sitter på ADSL gjerne beholder IP-adressen noe lengre. Men det skal ikke mer til enn restart av router for å fornye sin IP... (Med mindre man sitter på fast IP - noe de færreste privatpersoner her til lands gjør.) Du kan jo også opprette cookies som sådan telles. En cookie lagres på brukerens maskin. En slik cookie er latterlig lett å fjerne, sådet er enkelt å bli telt flere ganger på den måten også. Så hva er best? Tja, ikke godt å si. En blanding er kanskje ikke så dumt. Altså: sjekk om IP-adressen og Session'en er registrert fra før. Det holder med at en av de matcher for å finne ut at brukeren har vært på nettsiden tidligere. (Med mindre noen har overtatt IP-adressen til en tidligere besøkende).. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå