Tror det er noget i denne stil. Ellers burde det nok kunne forklare konceptet i det.
<?php
function isOnline(minutes) {
if(!isset($_SESSION['lastAccessTime']) || (time() - 60*minutes) >= $_SESSION['lastAccessTime']) {
unset($_SESSION['lastAccessTime']);
return false;
}
$_SESSION['lastAccessTime'] = time();
return true;
}
// Usage:
if(!isOnline(5)) {
print 'Du har ikke lavet noget de sidste fem minuter.';
}
?>
Og for at svare på det næste spørgsmål. Det er samme type funktionalitet du skal bruge, men i stedet for skal du bruge databasen til at gemme session_id() og time();
Tror det andet spørgsmål kan løses ved:
<?php
Table: onlinez
+------------+-----------------------------+
| id | INT(11), med AutoIncrease |
| sessionid | VARCHAR(32) |
| lastaccess | INT(11) |
+------------+-----------------------------+
---------------------------------------------------------
class Onlines
{
function insertCurrent() {
$query = mysql_query('INSERT INTO onlinez (sessionid,lastaccess) VALUES (\\''.session_id().'\\','.time().') ON DUPLICATE KEY UPDATE lastaccess=VALUES(lastaccess)');
}
function deleteOld($minutes) {
$boundary = time()-60*$minutes;
$query = mysql_query('DELETE FROM onlinez WHERE lastaccess <= '.$boundary);
}
function getCount($minutes) {
$boundary = time()-60*$minutes;
$this->insertCurrent();
$query = mysql_query('SELECT FROM onlinez WHERE lastaccess > '.$boundary);
$this->onlines = mysql_num_rows($query);
if(!$this->onlines) {
$this->deleteOld($minutes);
}
return $this->onlines;
}
}
// Usage
$o = new Onlines();
$onlines = $o->getCount();
?>
Forudsætter at der findes en åben forbindelse til MySQL databasen og førnævnte tabel findes i databasen.
Indlæg senest redigeret d. 13.10.2007 17:58 af Bruger #10216