Avatar billede php-nybegynderen Nybegynder
12. november 2006 - 21:51 Der er 12 kommentarer

En besøgstæller!

Jeg har prøvet at lave en besøgstæller, men kan simpelthen ikke forstå mig på det.

Så vil jeg høre, om der er nogen der har et link til en gratis. Eller at i har et script liggende.

Det skulle helst være med:

* Besøg i alt
* Besøg i dag
* Antal online
Avatar billede coderdk Praktikant
12. november 2006 - 22:14 #1
Hvis du har lavet en tabel:

create table visits (
visitorid char(32) not null,
visittime int not null,
lastactivity int not null,
primary key (visitorid),
index (visittime),
index (lastactivity));

Kan du include følgende på alle sider:

<?php

  session_start();

  mysql_connect( "host", "bruger", "kode" );
  mysql_select_db( "database" );

  if ( empty( $_SESSION['visited'] ) )
  {
      $visitorid = md5( microtime() );
      $_SESSION['visited'] = $visitorid;
      $sql = sprintf( "INSERT INTO visits (visitorid, visittime, lastactivity) VALUES ('%s',%d)"
          ,$visitorid, time(), time() );
      mysql_query( $sql ) or die( mysql_error() );
  }
  else
  {
      $sql = sprintf( "UPDATE visits SET lastactivity = %d WHERE visitorid = '%s'"
          ,time(), $_SESSION['visited'] );
      mysql_query( $sql ) or die( mysql_error() );
  }

?>

Så burde du kunne hive alt ud som du har brug for, antal online kan du så definere som værende hvor lastactivity er mindre end 5 minutter gammel... besøg i dag er hvor visittime er over strtotime( "today" )
Avatar billede php-nybegynderen Nybegynder
12. november 2006 - 22:28 #2
Column count doesn't match value count at row 1
Avatar billede php-nybegynderen Nybegynder
12. november 2006 - 22:28 #3
Mig der er et fjols, 2 sek
Avatar billede php-nybegynderen Nybegynder
12. november 2006 - 22:31 #4
kan sq ikke få dem hevet ud
Avatar billede coderdk Praktikant
12. november 2006 - 22:44 #5
$today = strtotime( "today" );
$sql = "SELECT COUNT(visitorid) AS antal FROM visits WHERE visittime > $today";

giver dig antal i dag

$lastfive = time() - 300; // 5 minutter
$sql = "SELECT COUNT(visitorid) AS antal FROM visits WHERE lastactivity > $lastfive";

giver dig antal online

$sql = "SELECT COUNT(visitorid) AS antal FROM visits";

giver dig total...
Avatar billede coderdk Praktikant
12. november 2006 - 22:45 #6
Ja, der mangler selvfølgelig mysql_query osv, men det kan du vel selv lave ;P
Avatar billede php-nybegynderen Nybegynder
12. november 2006 - 22:47 #7
Ved ikke om mit navn siger det meste :)

Har faktisk været udmærket til det, men har glemt alt på det sidste år.
Avatar billede php-nybegynderen Nybegynder
12. november 2006 - 23:04 #8
Det kan du måske ikke lige hurtigt forklare? :)
Avatar billede coderdk Praktikant
12. november 2006 - 23:19 #9
Avatar billede coderdk Praktikant
13. november 2006 - 01:23 #10
Det med column count var også min fejl, koden skulle være:

<?php

  session_start();

  mysql_connect( "host", "bruger", "kode" );
  mysql_select_db( "database" );

  if ( empty( $_SESSION['visited'] ) )
  {
      $visitorid = md5( microtime() );
      $_SESSION['visited'] = $visitorid;
      $sql = sprintf( "INSERT INTO visits (visitorid, visittime, lastactivity) VALUES ('%s', %d, %d)"
          ,$visitorid, time(), time() );
      mysql_query( $sql ) or die( mysql_error() );
  }
  else
  {
      $sql = sprintf( "UPDATE visits SET lastactivity = %d WHERE visitorid = '%s'"
          ,time(), $_SESSION['visited'] );
      mysql_query( $sql ) or die( mysql_error() );
  }

?>
Avatar billede intenz Novice
13. november 2006 - 16:23 #11
Avatar billede coderdk Praktikant
13. november 2006 - 18:09 #12
Der er også google analytics ;)
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