Je kunt dit maken door bij elk bezoek het ip in de database op te slaan en te verhogen met 1. Dan kan je ook heel makkelijk laten zien hoevaak degene met dat ip geweest is. Denk alleen wel aan scholen en bedrijven die vaak op 1 ip-adres zitten.
Dit kan je heel simpel oplossen door bv in je index dit scriptje te plaatsen
<?php
// MYSQL GEGEVENS BIJWERKEN
$ip $_SERVER['REMOTE_ADDR'];
$checkquery = mysql_query("SELECT ip FROM ip_table WHERE ip = '" . $ip . "'") or die(mysql_error());
if(mysql_num_rows($checkquery) == 0) {
mysql_query("INSERT INTO ip_table (ip, count) VALUES ('" . $ip . "', '1')") or die(mysql_error());
}
elseif(mysql_num_rows($checkquery) >= 1) {
mysql_query("UPDATE ip_table SET count = count + 1 WHERE ip = '" . $ip . "'") or die(mysql_error());
}
?>
En dan waar je het bericht wilt weergeven dit scriptje te plaatsen
<?php
// CONTROLE OP IP BEZOPEK
$ip = $_SERVER['REMOTE_ADDR'];
$selectquery = mysql_query("SELECT * FROM ip_table WHERE ip = '" . $ip . "'") or die(mysql_error());
$data = mysql_fetch_assoc($selectquery);
if($data['count'] == 1) {
echo "Dit is de eerste keer dat je hier bent!";
}
elseif($data > 5) {
echo "Je bent hier nu reeds 5 keer of meer geweest!";
}
elseif($data > 10) {
echo "Je bent hier nu reeds 10 keer of meer geweest!";
}
// ETC ETC
?>
En dit is natuurlijk je database structuur
--
-- Tabel structuur voor tabel `ip_table`
--
CREATE TABLE IF NOT EXISTS `ip_table` (
`id` int(11) NOT NULL auto_increment,
`ip` varchar(15) NOT NULL,
`count` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
NOTE: Ik heb dit nog niet getest, juist snel ff in elkaar geflanst, hopelijk werkt het als er zich problemen voor doen stuur je maar een pm of post het hier...
Mvg,
Paradox
--Edit--
Midas heeft het hem uitgelegd, ik heb het script gemaakt :) (Ik was eerst maar wou het zelf schrijven i.p.v. gewoon is te zeggen hoe :p)
@ Paradox: niet bepaald de netste foutenafhandling met or die() hè??
Ook kan je beter de sql functie COUNT() gebruiken om te tellen ipv mysql_num_rows().
Tevens is je code gevoelig voor sql injection... $_SERVER['REMOTE_ADDR'] mag je niet vertrouwen! Het is misschien niet makkelijk om die als gewone gebruiker aan te passen, maar met een beetje moeite is het te doen.
Ook is het een beetje doelloos dat je de query twee keer uitvoert.. één om te kijken of er al eentje bestaat en eentje om te kijken hoevaak...
if(isIp($_SERVER['REMOTE_ADDR']){
$ip = $_SERVER['REMOTE_ADDR']; // hoeft geen mysql_real_escape, het heeft namelijk al de vorm van een IP Adres, dus kan geen sql oid bevatten.
if(($res = mysql_query("SELECT COUNT(ip) AS ip_cont FROM ip_table WHERE ip = '" . $ip . "'")){
$data = mysql_fetch_assoc($res);
$ip_count = $data['ip_count'];
// nog leeg, nieuwe invoegen
if($ip_count < 1){
if(!mysql_query("INSERT INTO ip_table (ip, count) VALUES ('" . $ip . "', '1')")){
echo 'foutje';
}
}else{
if(!mysql_query("UPDATE ip_table SET count = count + 1 WHERE ip = '" . $ip . "'")){
echo 'foutje';
}
}
if($ip_count == 0){
echo 'Dit is eerste bezoek';
}elseif($ip_count > 0){
echo 'Dit is je '.($ip_count+1).'de bezoek';
}
}else{
echo 'mysql foutje';
// evt. tijdens het programmeren mysql_error(), nooit tijdens 'production mode'
}
}
?>
Niet getest, maar het zou moeten werken ;)
Ik heb door te combineren dat ik in andere tutotials zag staan zelf iets gevonden.
En ik ga nog iets proberen zodat iedere IPadres een eigen bericht krijgt.
<?php
header("Refresh: ".$s."; URL=".$u); // $s = voor het aantal seconden ; $u = voor het bestand dat je wil openen;
// voorbeeld: header("Refresh: 5; URL=http://ww.phphulp.nl"); // deze refresh zal in 5 seconden deze pagina vervangen voor www.phphulp.nl
Het werken met IP nummer heeft wel riskante nadelen. Een thuisnetwerkje met 3 computers gaat op 1 IP nummer naar buiten. Je maakt door bijvoorbeeld te melden: "Uw laatste bezoek was gisteren om 24:00" inbreuk op privacy omdat het IP nummer niet persoonlijk is maar gekoppeld is aan hardware (computer/router). Bedrijven gaan ook op 1 IP nummer naar buiten, ook hier vertel je dus wellicht aan een ander dat zijn collega "Gister om 10:00 op de site keek voor de 20e keer". Als je een "krabbels" site begint zal de mate van privacy inbreuk wel meevallen maar een dating of porn site......