/ Forside/ Teknologi / Udvikling / PHP / Tip
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Simpel mysql counter!
shady har modtaget 15 point for dette tip
Fra : shady
Vist : 636 gange

Dato : 09-05-03 12:37

Tit er der mange der gerne vil have en counter til deres website så man kan se hvor mange der har besøgt deres website, og desværre er der ikke mange der forstår brugen af cookies eller sessions. Derfor har jeg lavet en lille nem counter der bruger mysql og som er nem og enkel at bruge uden at bruge sessions eller cookies, men derimod gør brug af den besøgendes IP adresse som den gemmer i en mysql database. Men ip'en bliver slettet igen senere...

Ideen i scriptet som jeg skriver senere er at man bruger functionen include() til at kalde scriptet frem på de sider der skal vise de besøgende...

Først og fremmest bruger vi phpMyAdmin til at oprette tabellerne! Nedestående forespørgelser kan køres i databasen i phpMyAdmins side hvor du har valgt hvilken database tabellerne skal ligge i...

Kode
CREATE TABLE counter (
name varchar(255) NOT NULL default '',
hits bigint(100) NOT NULL default '0',
PRIMARY KEY (name)
) TYPE=MyISAM;

CREATE TABLE counterlog (
id bigint(20) NOT NULL auto_increment,
remoteadress varchar(20) NOT NULL default '',
expire varchar(10) NOT NULL default '0',
name varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;


Tabellen 'counter' gør det at den tæller de besøgende på siden, mens counterlog gemmer ip'en for at php-scriptet kan hente ip'en frem for at tjekke om brugeren allerede har besøgt hjemmesiden! Brugerens brug af hjemmesiden kan selvfølgelig registreres efter nogle minutter, men det kommer jeg til senere.

Dernæst opretter du et script som hedder counterscript.php der ser således ud:
Kode
<?php
mysql_connect("localhost","root","password");
mysql_select_db("databasenavn");
//hvis du allerede har forbindelse til mysql serveren pga. andre scripts sletter du
//bare de to evenstående linier

function counter($sidenavn) {

mysql_query("DELETE FROM counterlog where expire<".time()); // sletter alle rækker der er x antal sekunder gamle
$query = mysql_query("SELECT remoteadress FROM counterlog WHERE remoteadress='$_SERVER[REMOTE_ADDR]' and name='$sidenavn'") or Die(mysql_error());

if(mysql_num_rows($query) > 0) {
$hits = mysql_result(mysql_query("SELECT hits FROM counter WHERE name='$sidenavn'"), 0, "hits") or Die(mysql_error());
echo $hits;

} elseif(mysql_num_rows($query) < 1) {
$expire = time()+300; // her bestemmer du hvor lang tid der skal gå før brugeren kan
// registreres som besøgende igen. 300 sekunder er 5 minutter!
// 3600 sekunder er en time, 216000 sekunder er et døgn!

$query = mysql_query("SELECT * FROM counter WHERE name='$forside'");
if (mysql_num_rows($query) < 1) { mysql_query("INSERT INTO counter (name) VALUES ('$sidenavn')"); };
//de to ovenstående linier tjekker om siden findes og hvis ikke oprettes den bare!

mysql_query("UPDATE counter SET hits=hits+1 where name='$sidenavn'") or Die(mysql_error());
mysql_query("INSERT INTO counterlog (remoteadress, expire, name) VALUES ('$_SERVER[REMOTE_ADDR]', '$expire', '$sidenavn')");

$hits = mysql_result(mysql_query("SELECT hits FROM counter WHERE name='$sidenavn'"), 0, "hits") or Die(mysql_error());
echo $hits;
} }

?>


Nu har du de vigigste elementer på plads og er klar til at bruge counteren.
I din index fil skriver du noget ala dette:
Kode
<?php
include("counterscript.php");

//her står så al din fine kode og det html du skal bruge
//når du så kommer til det sted hvor du vil vise hvor mange besøgende der har været skriver du:

echo 'Du er besøgende nummer <b>'.counter("forside").'</b>';

//eller hvordan du nu vil have det til at se ud!
?>


Det der så er smart ved denne counter er at du kan selv vælge om du kun vil tælle besøgende for websitet eller på den enkelte side!

Hvis du kun vil tælle besøgende for hele websitet skriver du selvfølge kun counter("website"); men hvis du gerne vil have det for hver enkelte side giver du bare et nyt navn i counteren!
F.eks.:
counter("kontaktside");
counter("forside");
counter("projektside);
osv....

Og du behøver ikke at tænke på at skulle oprette hver enkelt counterside selv, det gør den helt automatisk!

Jeg håber ovenstående var forstående og brugbart.

 
 
Bedømmelse

Fra : Rina2


Dato : 09-05-03 13:26



Bedømmelse

Fra : Landevejen


Dato : 09-05-03 13:26



Bedømmelse

Fra : 1april


Dato : 09-05-03 13:03



Bedømmelse

Fra : 2smart4y


Dato : 09-05-03 13:00



Bedømmelse

Fra : 3773


Dato : 09-05-03 12:44



Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke lave en bedømmelse til dette tip.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 177414
Tips : 31962
Nyheder : 719565
Indlæg : 6407840
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste