tutaj poojawia sie pewien problem, rozumiem ze licznik ten ma okreslac ilosc logowan. napisalem ci klase zeby bylo ci latwiej z tego korzystac (ale niestety klasa wymaga php5). kod jest bardzo prosty, wymaga od ciebie podania nazwy tabeli gdzie sa dame uzytkownika i zeby w danej tabeli byla kolumna o nazwie 'logon_count' ktora bedzie przechowywala licznik, uzytkownicy w tej tabeli beda identyfikowani po wartosci kolumny 'id'. no prosciej sie juz nie da.
<?php
/**
* tutaj wykonujesz swoja czynnosc w stylu logowanie uzytkowwnika
* badz rejestracje (w tym wypadku jezeli jest to rejestracja to uzyjesz metody init counter)
*/
//muszisz podac identyfikator uzytkownika aby klasa wiedziala na ktorym uzytkownik
u ma operowac
$userCounter=new licznikLogowan($userID);
//opcjonalnie mozesz podac identyfikator polaczenia zwrocony przez mysql_connect (tutaj w zmiennej $db)
$userCounter=new licznikLogowan($userID,$db);
//jezeli uzytkownik jest dopiero zarejestrowany to trzeba mu zainicjalizowac liczn
ik
$userCounter->initCounter();
//jezeli to jest logowanie to sprawdzamy czy nie doszedla do zera
if ($userCounter->getCounterValue()>0) {
$userCounter->decreaseCounter();
} else {
//tutaj wpisujesz kod jaki ma zostac wykonany po wykonczeniu licznika
}
//a tak mozesz wyswietlic wartosc licznika
//co odpowiada wywolaniu funkcji
echo $userCounter->getCounterValue(); ?>
a ponizej kod zrodlowy klasy licznikLogowan, to w niej wpisujesz nazwe tabeli do zmiennej $_tableName
<?php
class licznikLogowan{
/**
* startowa wartosc licznika dla uzytkownika
*
* @var int
*/
private $_startValue=100;
/**
* przechowuje identyfikator polaczenia z baza danych
*
* @var MySQL Resource
*/
private $_db=null;
/**
* przechowuje nazwe tabeli z danymi o ilosci logowan
*
* @var string
*/
private $_tableName='users';
/**
* przechowuje ID uzyttkownika
*
* @var int
*/
private $_userID;
/**
* konstruktor klasy, jako parametr przyjmuje id user'a i opcjonalnie polaczenie z baza danych
*
* @param int $userID
* @param MySQL Resource $db
*/
public function __construct($userID,$db=null){
$this->_userID=$userID;
$this->_db=$db;
}
}
/**
* inicjalizuje licznik dla uzytkownika
*
* @return licznikLogowan
*/
public function initCounter(){
$sql=sprintf("UPDATE `%s` SET logon_count=%d WHERE id='%d'",$this->_tableName
,$this->_startValue
,$this->_userID
); $this->_query($sql);
return $this;
}
/**
* zwraca wartosc licznika
*
* @return int
*/
public function getCounterValue(){
$sql=sprintf("SELECT logon_count FROM `%s` WHERE id='%d'",$this->_tableName
,$this->_userID
); $query=$this->_query($sql);
return (int) $data[0];
}
/**
* obniza o jeden wartosc licznika i zwraca jego aktualna wartosc
*
* @return int
*/
public function decreaseCounter(){
$sql=sprintf("UPDATE `%s` SET logon_count=logon_count-1 WHERE id='%d'",$this->_tableName
,$this->_userID
); $this->_query($sql);
return $this->getCounterValue();
}
/**
* wewnetrzna metoda opakowujaca wykonywanie zapytan
*
* @param string $sql
* @return MySQL Result Resource
*/
private function _query($sql){
} else {
}
if ($error!='') {
throw new Exception("wystapil problem z zapytaniem '".$sql."' serwer zwrocil odpowiedz: ".$error,$errorN);
}
}
/**
* funkcja uruchamiana przy probie wyswietlenia obiektu za pomoca echo
*
* @return unknown
*/
private function __toString(){
return $this->getCounterValue();
}
}
?>