Avatar billede s_f Nybegynder
24. april 2006 - 16:11 Der er 26 kommentarer og
1 løsning

Counter der tæller hver unikt besøg

Jeg skal bruge en counter skrevet i php som tæller hver unikt besøg - her mener jeg det ikke skal kunne lade sig gøre at trykke opdater i sin browser for at få den til at tælle højre op, den skal registere IP'en fra remote computeren og fx kun tælle op hvis der er gået en time siden den ip sidst var på siden..

Kom med noget kode? =)
Avatar billede jakobdo Ekspert
24. april 2006 - 17:18 #1
Du skal nok komme med lidt mere info.
Skal det gemmes i en fil eller database?
Hvad hvis der er flere brugere fra samme ip?
Skal den gemme info i en cookie?
Eller hvad vil du have?

Det kan laves på mange måder, men en 100% løsning findes ikke.
Avatar billede s_f Nybegynder
24. april 2006 - 17:37 #2
Dataerne må godt gemmes i databasen (mysql) Så jeg kan trække dem ud og evt. vise dem på forsiden.

At der er flere bruger på samme IP kan jeg ikke se jeg kan gøre noget ved, nu er det også mest privat personer min side henviser sig til, og de har som oftes max 3-4 computere på en ip..
Avatar billede jakobdo Ekspert
24. april 2006 - 17:46 #3
Jeg gider ikke kode noget for dig, men synes du evt kan starte med at kigge på f.eks. denne: http://www.udvikleren.dk/Article.aspx?tech=6&id=157
Avatar billede mr-xmas Nybegynder
24. april 2006 - 19:41 #4
<?php
include("dbconnect.php");
$ip = $_SERVER['REMOTE_ADDR'];
$besoegt_idag = mysql_query("SELECT COUNT(*) AS antal FROM counter WHERE ip='$ip' AND date_add(time,interval 24 HOUR) > NOW() ORDER BY id DESC LIMIT 0,1") or die(mysql_error());
if (!mysql_result($besoegt_idag,0)) {
mysql_query("INSERT INTO counter (time, ip) VALUES (NOW(),'$ip')");
}
$besoeg_ialt = mysql_query("SELECT COUNT(*) AS antal FROM counter");
echo "Der har været <b>".mysql_result($besoeg_ialt,0)."</b> besøg";
?>
den der skulle kunne bruges har selv brugt den
Avatar billede tuxic Nybegynder
24. april 2006 - 21:35 #5
Hvad hvis maskinen har flere brugere?
Avatar billede tuxic Nybegynder
24. april 2006 - 21:38 #6
Eller der er en router (NAT fx) imellem?
Avatar billede jakobdo Ekspert
24. april 2006 - 21:40 #7
Falder det ikke under: Hvad hvis der er flere brugere fra samme ip?
Avatar billede mr-xmas Nybegynder
24. april 2006 - 21:43 #8
jamen det er jo samme linje der har været på siden så den tæller kun engang tror ikke man kan gøre så den tjekker det på en anden måde.."
Avatar billede tuxic Nybegynder
24. april 2006 - 21:47 #9
cookies? Men jakobdo har jo allerede skrevet det meste (ser det bare først nu). Der er ingen 100% strategi.
Avatar billede mr-xmas Nybegynder
25. april 2006 - 13:39 #10
tuxic nej der er ingen 100% løsning som jakobdo hvertifald ikke hva jeg ved af

men ip er vil fint syntes jeg
Avatar billede jakobdo Ekspert
25. april 2006 - 14:48 #11
Ja, men hvad siger S_F overhovedet til det?
Avatar billede s_f Nybegynder
25. april 2006 - 18:44 #12
Hvad ved jeg overhovedet? At der ikke er nogen 100% løsning, det kan jeg da forstå på tidligere indlæg, og også tænke mig til.

Jeg skal lige have prøve det script og mx-xmas postede samt det fra udvikleren, har ikke haft tid endnu - men vender tilbage med feedback når har fået det gjort.

VH..
Avatar billede jakobdo Ekspert
25. april 2006 - 21:34 #13
Du må endelig sige til hvis noget driller eller ikke giver mening.
Avatar billede codebase Praktikant
26. april 2006 - 00:22 #14
man kunne tjekke det lokale ip også, så er det unikt selvom de har samme yderside ip.
http://www.eksperten.dk/spm/705197
Avatar billede jakobdo Ekspert
26. april 2006 - 07:24 #15
Codebase: Nu har jeg ikke testet det script der, men har du testet det rent faktisk virker? (for i mit hoved burde det ikke virke - men mit hoved ved jo hellere ikke alt)
Avatar billede codebase Praktikant
26. april 2006 - 08:54 #16
:) ja det virker. og er faktisk logisk nok. 'java' scriptet afvikles lokalt på brugerens pc.
Avatar billede jakobdo Ekspert
26. april 2006 - 16:31 #17
Jeg synes dog ikke rigtigt det er en holdbar løsning! :o)
Avatar billede codebase Praktikant
26. april 2006 - 17:09 #18
så er det da heldigt det var s_f der spurgte til en løsning og ikke dig ;)
Avatar billede s_f Nybegynder
26. april 2006 - 19:34 #19
xmas - udfra det script du poster kan jeg se der skal oprettes en tabel kaldet counter i mysql, men hvilke felter skal den mere specefik indholde? Har du en sql fil?
Avatar billede s_f Nybegynder
26. april 2006 - 20:50 #20
Xmas' script:

Jeg har oprettet Tabellen "counter" I tabellen har jeg lavet to felter "ip" og "time" har lavet filen dbconnect.php med dette indhold:
<?php
mysql_connect("localhost", "user", "pass");
mysql_select("navnpådatabase");
?>

Får dette tilbage fra browseren

Unknown column 'id' in 'order clause'


------

Kigger lige på scriptet fra udvikleren imellem tiden..
Avatar billede jakobdo Ekspert
26. april 2006 - 20:58 #21
så tilføj et felt som hedder ID - INT - AUTOINCREMENT
Avatar billede s_f Nybegynder
26. april 2006 - 21:07 #22
Så returner phpmyadmin med dette:

Fejl

SQL-forespørgsel:

ALTER TABLE `counter` ADD `id` INT NOT NULL AUTO_INCREMENT

MySQL returnerede: Dokumentation
#1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

-----

btw, scriptet fra udvikleren virkede fint, dog tæller det jo hver gang med updater siden..
Avatar billede jakobdo Ekspert
26. april 2006 - 21:33 #23
Ja, så der skal du bygge noget session ind eller sql ind.
Avatar billede s_f Nybegynder
26. april 2006 - 21:39 #24
Dertil bliver jeg nødtil at have noget hjælp, da jeg ikke ved hvordan det skal gøre..
Avatar billede s_f Nybegynder
05. maj 2006 - 09:27 #25
Grunden til at feltet ID med INT datatypen ikke kunne tilføjes er at den selvfølgelig skal sættets som primary key. Lad os få lukket dette spm, smid et svar hvis I vil have points.

Vh.
Avatar billede jakobdo Ekspert
05. maj 2006 - 13:14 #26
Svar! (hvis du synes jeg har hjulpet dig)
Avatar billede jakobdo Ekspert
12. maj 2006 - 11:14 #27
Jeg takker for point!
(ingen andre som synes de skulle have lidt point?)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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