Gegen das Reloaden schützt mein Script natürlich nicht. Aber da könntest du ja, mit MySQL arbeiten.
Beispiel:
Tabelle page:
id int(11) auto_increment
url varchar(255)
Tabelle visited:
id int(11) auto_increment
page_id int(11)
user_id int(11)
index.php:
PHP-Code:
<?php
session_start();
$_SESSION['time'] = time();
echo '<a href="page2.php?page_id=' . $page_id . '"><img src="banner.jpg"></a>';
?>
Die Variable page_id enthält die id der Seite, die du aufrufen willst.
page2.php:
PHP-Code:
<?php
session_start();
$page_id = $_GET['page_id'];
if(($_SESSION['time']-time())>=20) {
$sql = "SELECT
COUNT(ID) AS anzahl
FROM
visited
WHERE
page_id = $page_id AND
user_id = $user_id";
$row = mysql_fetch_array(mysql_query($sql), MYSQL_ASSOC);
// User mit dieser Ip hat die Seite noch nicht aufgerufen
if($row['anzahl'] == 0) {
// Punkte gutschreiben, weiterleiten
}
?>
user_id ist die id, die der User in der Datenbanktabelle user hat.
Vorrausetzung ist natürlich, dass der Bereich nur für eingeloggte Benutzer verfügbar ist und jeder Benutzer eine eindeutige id hat. Aber davon bin ich ausgegangen, da es ansonsten auch schwer wird, die Punkte gutzuschreiben.