sobota, 21 maja 2011

Prosty licznik PHP

Prosty licznik oparty o klase
jak używać instrukcja poniżej



/**
* @author Rafał Podsiadły
* @license GNU
* @copyright spinacz24@gmail.com 2011-05-21
* System liczenia ilości wejść na stronę www na zasadach plików cooke
* z zachowanie ip użytkownika i domeny
*/

class Tcount {
/**
*
* @var type config : array zawierająca wszystkie dane.
*/
private $config = array();


/**
*
* @param type $user nazwa użytkownika do bazy danych
* @param type $password hasło użytkownika
* @param type $serwer nazwa serwera
* @param type $base baza danych
* @param type $cookeName nazwa cooke
* @param type $table tablea
* @param type $table cokeD - coke ważność dni.
*/
public function __construct( $user = '', $password = '', $serwer = '', $base = '', $cookeName = '', $table = '', $cokeD = 0) {
$this->__set('user', $user);
$this->__set('password', $password);
$this->__set('serwer', $serwer);
$this->__set('base', $base);
$this->__set('table', $table);

if ( $cookeName != '' ){
$this->__set('cookeName', $cookeName);

}else {
$this->__set('cookeName', 'test');

}

// dzisiaj;
$this->__set('dzisR', mktime( 0, 0, 0, date("m"), date("d"), date("Y") ) );
$this->__set('dzisW', mktime( 23, 59, 59, date("m"), date("d")+$cokeD, date("Y") ) );
$this->__set('now', time());

$this->connectBase();
}


/**
*
* @param type $name nazwa zmiennej
* @param type $value wartość
* @return type $value;
*/
public function __set( $name, $value ){
$this->config[$name] = $value;
return $value;

}


/**
*
* @param type zmienna
* @return type isset
*/
public function __get ( $name ){
if (isset ($this->config[$name]) ){
return $this->config[$name];
}else
return 0;


}

/**
*
* @return type jeśli połączenie zostało nawiazane
*/
private function connectBase(){
if ( $this->__get('serwer') != '' and $this->__get('user') != '' ){
$this->__set( 'connectLink', mysql_connect( $this->__get('serwer'), $this->__get('user'), $this->__get('password') ) );
return mysql_select_db( $this->__get('base'), $this->__get('connectLink') );
}


}


/**
*
* @return zlicza ilość wierszy w tabeli
*/
public function countBase() {
$sql = "select count(id) from ".$this->__get('table');
$count = $this->setSqlArry($sql);
return $count['0'];

}


/**
*
* @param type $sql zapytanie sql
* @return type zwraca wynik zapytania
*/
private function setSql( $sql ){
return mysql_query( $sql );

}

/**
*
* @param type $sql zapytanie sql
* @return type zwraca zwrtość tabele wartosci;
*/
private function setSqlArry($sql ){
return mysql_fetch_array( mysql_query($sql) );

}


/**
*
* @return type zwraca 0 jeśli zapytanie się powiodło 1 jeśli nie
* baza z 4 kolmunami
* id - autoincrement key
* host - adres na któr wchodzi użytkownik
* remote - id adres
* data - wartość liczbowa
*/
public function cooke (){
if ( !isset( $_COOKIE[$this->__get('cookeName')] ) ) {
setcookie ( $this->__get('cookeName'), $this->__get('table'), $this->__get('dzisW') );

$sql = 'INSERT INTO `'.$this->__get('base').'`.`'.$this->__get('table').'` (`id`, `host`, `remote`, `data`)';
$sql .='VALUES (NULL, \''.$_SERVER["HTTP_HOST"].'\', \''.$_SERVER['REMOTE_ADDR'].'\', \''.$this->__get('now').'\');';

$this->setSql($sql);
return '0';

} else {
return '1';
}

}


/**
*
* @param type $dStart od ilu dni wstecz
* @param type $dStop do którego dnia
* @return type zwraca ilosć
*/
public function today($dStart = 0, $dStop = 0){

$startR = mktime(0,0,0,date("m"),date("d")-$dStop,date("Y"));
$stopW = mktime(23,59,59,date("m"),date("d")-$dStart,date("Y"));

$sql = 'select count(id) from '.$this->__get('table').' WHERE data > \''.$startR.'\' and data < \''.$stopW.'\''; $count1 = $this->setSqlArry($sql);
return $count1[0];
}


}


$c1 = new Tcount('user', 'password', 'host', 'base', 'cooke', 'table', 0);

echo 'wszystkich wizyt '. $c1->countBase().' ';

$c1->cooke(); // 1 jest 0 został utworzony

echo ' dzis: '.$c1->today(0,0).' ';

echo ' wczoraj: '. $c1->today(1,1).' ';