'urlf', 'nrac'=>'nrac', 'dt'=>'dt'); // proprietate pt. retinerea conexiunii la MySQL protected $conn; // Constructor public function __construct($server, $user, $pass, $db) { // creaza conexiunea la MySQL (o retine in proprietatea $conn) $this->conn = new mysqli($server, $user, $pass, $db); if (mysqli_connect_errno()) { printf("Connect failed: %s\n", mysqli_connect_error()); exit; } // verifica daca in $db exista tabelul din $tb_name // daca nu exista, apeleaza metoda setTable() ca sa creeze tabelul $Tables_in_db = 'Tables_in_'.$db; if($result=$this->conn->query("SHOW TABLES IN $db WHERE `$Tables_in_db` = '$this->tb_name'")) { if(mysqli_num_rows($result)<=0) { $this->setTable(); $result->close(); } } } // metoda pt. crearea tabelului private function setTable() { // sql query pt. CREATE TABLE $sql = "CREATE TABLE `$this->tb_name` ( `". $this->tb_cols['urlf']. "` VARCHAR(88) PRIMARY KEY NOT NULL, `". $this->tb_cols['nrac']. "` INT(8) UNSIGNED DEFAULT 1, `". $this->tb_cols['dt']. "` TIMESTAMP ) CHARACTER SET utf8 COLLATE utf8_general_ci"; // executa $sql pt. a crea tabelul, in caz de esec returneaza eroarea if (!$this->conn->query($sql) === TRUE) { echo 'Eroare creare tabel: '. $this->conn->error; } } // metoda pt. insert / update contor si data a valorii din $urlf public function setAccess($urlf) { $urlf = $this->conn->real_escape_string($urlf); // filtrare caractere speciale pentru a fi utilizate in interogare SQL // sql query pt. INSERT / UPDATE $sql = "INSERT INTO `". $this->tb_name. "` (`". $this->tb_cols['urlf']. "`) VALUES ('$urlf') ON DUPLICATE KEY UPDATE `". $this->tb_cols['nrac']. "`=`". $this->tb_cols['nrac']. "`+1"; // transmite $sql query la serverul MySQL, in caz de esec returneaza eroarea if (!$this->conn->query($sql) === TRUE) { echo 'Eroare: '. $this->conn->error; } } // metoda pt. select numar de accesari si data ultimei accesari a valorii din $urlf public function getAccess($urlf) { $urlf = $this->conn->real_escape_string($urlf); // filtrare caractere speciale pentru a fi utilizate in interogare SQL // sql query pt. SELECT $sql = "SELECT `". $this->tb_cols['nrac']. "`, DATE_FORMAT(`". $this->tb_cols['dt']. "`, '%d-%m-%Y %H:%i') AS dt FROM `". $this->tb_name. "` WHERE `". $this->tb_cols['urlf']. "`='$urlf' LIMIT 1"; // efectueaza interogarea si retine rezultatul $result = $this->conn->query($sql); // daca $result contine cel putin un rand if ($result->num_rows > 0) { // adauga numar de accesari si data intr-0 variabila pt. return while($row = $result->fetch_assoc()) { $re = 'Accesari: '. $row['nrac']. ', ultima in: '. $row['dt']. ''; } } else { $re = 'Accesari: 0, ultima in: 0'; } // inchide $result, pentru a elibera memoria $result->close(); return $re; // returneaza sirul din $re } } /* Utilizare clasa CountAccess */ // datele pt. conectare la baza de date mysql (adresa_server, utilizator, parola si nume_baza_date) $server = 'localhost'; $user = 'csglobal_trafic'; $pass = '123nofelet123'; $db = 'csglobal_trafic'; // creaza conexiunea MySQL si o instanta de obiect la clasa CountAccess $objCA = new CountAccess($server, $user, $pass, $db); // daca exista $_GET['urlf'] if (isset($_GET['urlf'])) { $urlf = trim(strip_tags($_GET['urlf'])); // sterge tag-uri si spatii exterioare // apeleaza metoda setAccess() pt. insert / update numar accesari $objCA->setAccess($urlf); // Redirectioneaza browser-ul la adresa din $urlf header("Location: " . $urlf); exit; } ?>