PolaczDoBazy(); $baza->rozlaczbaze(); */ /* $_SESSION['baza']['operationtime'] - przechowuje czas wykonania funkcji w milisekundach insert into user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)values('localhost','filtry',PASSWORD('filtry'),'','',''); insert into db(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Alter_priv)values('localhost','filtry','filtry','y','y','y','y','y','y','y'); flush privileges; create database filtry CHARACTER SET UTF8; */ class baza { var $serwer; var $login; var $haslo; var $baza; var $port; var $polaczenie; var $pokazzapytania; var $pokazbledy; var $bladpolaczenia; var $pokazzapytaniabezbledow; var $logtype; var $raport; var $komunikatbladupolaczenia; var $numerzdarzenia; //---------------------------------------------------------------------------------------------------- public function baza($pathtoconfig,$pokazzapytania2=true,$pokazbledy2=true,$pokazzapytaniabezbledow2=true,$logtype) { $przed=microtime(); if(file_exists($pathtoconfig)) { include_once($pathtoconfig); $this->serwer=$serwer; $this->login=$login; $this->haslo=$haslo; $this->baza=$baza; $this->port=$port; $this->pokazzapytania=($pokazzapytania && $pokazzapytania2)?true:false; $this->pokazbledy=($pokazbledy && $pokazbledy2)?true:false; $this->pokazzapytaniabezbledow=($pokazzapytaniabezbledow && $pokazzapytaniabezbledow2)?true:false; $this->logtype=$logtype;//all, error, good } else { //echo("Błędna ścieżka do pliku konfiguracyjnego bazy.
Class: baza; Function: baza
"); exit; } $_SESSION['baza']['operationtime']=microtime()-$przed; } //---------------------------------------------------------------------------------------------------- public function retpolaczenie() { return $this->polaczenie; } //---------------------------------------------------------------------------------------------------- public function PolaczDoBazy() { //polaczenie z baza //zwraca 1 gdy wszystko ok //zwraca -1 gdy nie udało się przyłączyć do serwer //zwraca -2 gdy nie udało się wybrać bazy danych $oldreporting=error_reporting(0); $mysqli = new mysqli($this->serwer,$this->login,$this->haslo,$this->baza,$this->port); if(!$mysqli->connect_errno) { //gdy udało się połączyć $mysqli->query("SET NAMES utf8"); $this->polaczenie=$mysqli; $ret=1; } else $ret=-1;//błąd połączenia error_reporting($oldreporting); $this->bladpolaczenia=$ret; //-------------------- $this->komunikatbladupolaczenia=$mysqli->connect_errno." - ".$mysqli->connect_error; } //-------------------------------------------------------- public function RozlaczBaze() { $this->polaczenie->close(); } //---------------------------------------------------------------------------------------------------- public function showraport() { $rettext=""; if(!$this->polaczenie && $this->pokazbledy) $rettext.="
Brak połączenia z bazą: ".$this->komunikatbladupolaczenia."
"; $rettext.="
".$this->raport."
"; return $rettext; } //-------------------------------------------------------- public function pobierzdane($zapytanie,$sql=1,$err=1) { $this->gennrzdarzenia(); $przed=microtime(); if($this->polaczenie) { $rettext=$this->polaczenie->query($zapytanie); if($rettext && $rettext->num_rows>0) { if($this->pokazzapytaniabezbledow) $this->komunikat($zapytanie,$sql,$err); $_SESSION['baza']['operationtime']=microtime()-$przed; $this->savelog($zapytanie,$this->checkpoint(debug_backtrace())); return $rettext; } $this->komunikat($zapytanie,$sql,$err); $_SESSION['baza']['operationtime']=microtime()-$przed; $this->savelog($zapytanie,$this->checkpoint(debug_backtrace())); if($this->logtype=="all") $this->syslog(debug_backtrace(),$zapytanie); } return 0; } //---------------------------------------------------------------------------------------------------- public function operacja($zapytanie,$sql=1,$err=1) { $this->gennrzdarzenia(); $rettext=false; //tak mozna to zapisac do wywolania //echo("Dodaje baner: ".$baza->operacja("insert into banery(link)values('costam');")); $przed=microtime(); if($this->polaczenie) { if($this->polaczenie->query($zapytanie)) { if($this->polaczenie->affected_rows>0) { if($this->pokazzapytaniabezbledow) $this->komunikat($zapytanie,$sql,$err); $_SESSION['baza']['operationtime']=microtime()-$przed; $this->savelog($zapytanie,$this->checkpoint(debug_backtrace())); $rettext=true; } elseif($this->error()=="")//jezeli nie ma bledu to tez zwracam true { if($this->pokazzapytaniabezbledow) $this->komunikat($zapytanie,$sql,$err); $_SESSION['baza']['operationtime']=microtime()-$przed; $this->savelog($zapytanie,$this->checkpoint(debug_backtrace())); $rettext=true; } else { if($this->pokazzapytaniabezbledow) $this->komunikat($zapytanie,$sql,$err); $_SESSION['baza']['operationtime']=microtime()-$przed; $this->savelog($zapytanie,$this->checkpoint(debug_backtrace())); $rettext=false; } } else { $this->komunikat($zapytanie,$sql,$err); $_SESSION['baza']['operationtime']=microtime()-$przed; $this->savelog($zapytanie,$this->checkpoint(debug_backtrace())); $rettext=false; } } return $rettext; } //---------------------------------------------------------------------------------------------------- public function lastid() { $id=""; $przed=microtime(); if($this->polaczenie->affected_rows>0) $id=$this->polaczenie->insert_id; $_SESSION['baza']['operationtime']=microtime()-$przed; return $id; } //---------------------------------------------------------------------------------------------------- public function install($nazwatablicy,$pola,$sql=1,$err=1,$primarykey="") { if($this->polaczenie) { $wynik=$this->polaczenie->query("describe $nazwatablicy"); if($wynik->num_rows<=0) { //jezeli nie ma to po prostu zalozyc $regulkatworzaca="create table $nazwatablicy ("; foreach($pola as $i=>$val) { if($pola[$i][3]!="")$pola[$i][3]="default ".$pola[$i][3]; $regulkatworzaca.="$i ".$pola[$i][0]." ".$pola[$i][1]." ".$pola[$i][2]." ".$pola[$i][3]." ".$pola[$i][4].","; } $regulkatworzaca=substr($regulkatworzaca,0,-1); if($primarykey!="")$regulkatworzaca.=",PRIMARY KEY ($primarykey)"; $regulkatworzaca.=")ENGINE=InnoDB DEFAULT CHARSET=utf8;"; if($this->polaczenie->query("$regulkatworzaca")) { $this->komunikat($regulkatworzaca,$sql,$err); //echo("Tablica zalożona"); } else $this->komunikat($regulkatworzaca,$sql,$err); } else { $wynik=$this->polaczenie->query("describe $nazwatablicy;"); if($wynik->num_rows>0) { //pobieram pola z tablicy while ($wierszwyniku = $wynik->fetch_assoc()) { $pole=$wierszwyniku['Field']; $typ=$wierszwyniku['Type']; $puste=$wierszwyniku['Null']; $key=$wierszwyniku['Key']; $default=$wierszwyniku['Default']; $extra=$wierszwyniku['Extra']; if($puste=='NO')$puste='not null';else $puste=''; if($key=='PRI')$key='primary key';else $key=''; if($default=='NULL')$default=''; if($default!="" && $default!="CURRENT_TIMESTAMP" && !is_numeric($default))$default="'$default'"; $tablefields[$pole][0]=$typ; $tablefields[$pole][1]=$puste; $tablefields[$pole][2]=$key; $tablefields[$pole][3]=$default; $tablefields[$pole][4]=$extra; $tablefields[$pole][5]=$pole; //if($tablefields[$pole][1]=="not null")$tablefields[$pole][1]=""; } //-------------------- foreach($pola as $i=>$val) { //if($pola[$i][1]=="")$pola[$i][1]="not null"; //-------------------- if($i!="" && $tablefields[$i][5]=="") { if($pola[$i][3]!="")$pola[$i][3]="default ".$pola[$i][3]; $regulkatworzaca=$pola[$i][5]." ".$pola[$i][0]." ".$pola[$i][1]." ".$pola[$i][2]." ".$pola[$i][3]." ".$pola[$i][4]; if($this->polaczenie->query("alter table $nazwatablicy add $regulkatworzaca;")) { $this->komunikat("alter table $nazwatablicy add $regulkatworzaca;",$sql,$err); //echo("nowa kolumna została dodana
"); } else $this->komunikat("alter table $nazwatablicy add $regulkatworzaca;",$sql,$err); } else { $tablefields[$i][6]=true; if($pola[$i][1]=="null")$pola[$i][1]=""; if($tablefields[$i][3]=="'0000-00-00 00:00:00'")$tablefields[$i][3]="0"; if($tablefields[$i][0]!=$pola[$i][0] || $tablefields[$i][1]!=$pola[$i][1] || $tablefields[$i][2]!=$pola[$i][2] || $tablefields[$i][3]!=$pola[$i][3] || $tablefields[$i][4]!=$pola[$i][4]) { //echo("

".$tablefields[$i][0]."!=".$pola[$i][0]." || ".$tablefields[$i][1]."!=".$pola[$i][1]." || ".$tablefields[$i][2]."!=".$pola[$i][2]." || ".$tablefields[$i][3]."!=".$pola[$i][3]." || ".$tablefields[$i][4]."!=".$pola[$i][4]."

"); $this->komunikat($tablefields[$i][0]."!=".$pola[$i][0]." || ".$tablefields[$i][1]."!=".$pola[$i][1]." || ".$tablefields[$i][2]."!=".$pola[$i][2]." || ".$tablefields[$i][3]."!=".$pola[$i][3]." || ".$tablefields[$i][4]."!=".$pola[$i][4],$sql,$err); if($pola[$i][3]!="")$pola[$i][3]="default ".$pola[$i][3]; $regulkatworzaca=$pola[$i][5]." ".$pola[$i][0]." ".$pola[$i][1]." ".$pola[$i][2]." ".$pola[$i][3]." ".$pola[$i][4]; if($this->polaczenie->query("alter table $nazwatablicy change ".$tablefields[$i][5]." $regulkatworzaca;")) { $this->komunikat("alter table $nazwatablicy change ".$tablefields[$i][5]." $regulkatworzaca;",$sql,$err); //echo("Kolumna zostala poprawiona"); } else $this->komunikat("alter table $nazwatablicy change ".$tablefields[$i][5]." $regulkatworzaca;",$sql,$err); } } } //-------------------- foreach($tablefields as $key=>$val) { if($val[6]!=true) { //usuwam pole $regulkatworzaca="alter table $nazwatablicy drop $key;"; if($this->polaczenie->query($regulkatworzaca)) $this->komunikat("Kolumna została usunięta $key $nazwatablicy
",$sql,$err); else $this->komunikat($regulkatworzaca,$sql,$err); } } } } } /*else echo("Brak połączenia z bazą danych");*/ } //---------------------------------------------------------------------------------------------------- public function error() { return $this->polaczenie->connect_error; } //---------------------------------------------------------------------------------------------------- public function iloscwynikow() { return $this->polaczenie->affected_rows; } //-------------------------------------------------------- private function komunikat($zapytanie,$sql,$err) { //komunikat uzywany do wyswietlania bledow przy operacjach z baza oraz logowania do pliku //przygotowuje dane $zapytanie=str_replace(",",", ",$zapytanie); //zabezpieczam zapytanie przed wyswietleniem pozbywam sie <> $zapytanie=$this->zabezpieczznaki($zapytanie); //-------------------- $error=$this->polaczenie->connect_error; if($error=="") if($this->iloscwynikow()>0) $error=$this->iloscwynikow()." wierszy"; else $error="0 wierszy"; $error=$this->zabezpieczznaki($error); //-------------------- //zmienna sql i err nadpisuja standardowe ustawienia if(($this->pokazzapytania && $sql) || ($this->pokazbledy && $err)) { $this->raport.=("

"); $this->raport.="$this->numerzdarzenia
"; if($this->pokazzapytania && $sql) $this->raport.=("» $zapytanie «
"); if($this->pokazbledy && $err) $this->raport.=("» $error «
"); $this->raport.=("

"); //echo("»$nrbledu "); } } //---------------------------------------------------------------------------------------------------- private function zabezpieczznaki($input) { $input=str_replace("<","<",$input); $input=str_replace(">",">",$input); return $input; } //---------------------------------------------------------------------------------------------------- // tu sa funkcje tworzące logi //---------------------------------------------------------------------------------------------------- private function RootPath() { $path_full = dirname($_SERVER['PHP_SELF']); $path_tab = explode("/", $path_full); $path_count = count($path_tab); $path=""; for($i=2;$iRootPath()."/logs")) if(!mkdir($this->RootPath()."/logs")) $jestkatalognalogi=false; //-------------------- $sciezkadoplikuzlogamigood=$this->RootPath()."/logs/good_".date("Y_m_d").".log"; $sciezkadoplikuzlogamierror=$this->RootPath()."/logs/error_".date("Y_m_d").".log"; $sciezkadoplikuzlogamilongtime=$this->RootPath()."/logs/longtime.log"; //-------------------- if($this->polaczenie) { $error=$this->polaczenie->connect_error; if($error=="") if($this->iloscwynikow()>0) $error=$this->iloscwynikow()." wierszy"; else $error="0 wierszy"; } //-------------------- if($jestkatalognalogi) { $this->czysclogi($this->RootPath()."/logs"); //-------------------- loguje długe czasowo zapytania if($_SESSION['baza']['operationtime']>1)//1s { $plik=fopen($sciezkadoplikuzlogamilongtime,"a+"); fwrite($plik,$checkpoint."\n$zapytanie\n$error\n\n"); fclose($plik); } //-------------------- if($this->logtype=="all") { if($this->polaczenie) { if($this->polaczenie->connect_error=="") { $plik=fopen($sciezkadoplikuzlogamigood,"a+"); if($znacznik) fwrite($plik,"--------------------$checkpoint---------------------\n"); else fwrite($plik,$checkpoint."\n$zapytanie\n$error\n\n"); fclose($plik); } if($this->polaczenie->connect_error!="") { $plik=fopen($sciezkadoplikuzlogamierror,"a+"); if($znacznik) fwrite($plik,"--------------------$checkpoint---------------------\n"); else fwrite($plik,$checkpoint."\n$zapytanie\n$error\n\n"); fclose($plik); } } } elseif($this->logtype=="error") { if($this->polaczenie->connect_error!="") { $plik=fopen($sciezkadoplikuzlogamierror,"a+"); if($znacznik) fwrite($plik,"--------------------$checkpoint---------------------\n"); else fwrite($plik,$checkpoint."\n$zapytanie\n$error\n\n"); fclose($plik); } } elseif($this->logtype=="good") { if($this->polaczenie->connect_error=="") { $plik=fopen($sciezkadoplikuzlogamigood,"a+"); if($znacznik) fwrite($plik,"--------------------$checkpoint---------------------\n"); else fwrite($plik,$checkpoint."\n$zapytanie\n$error\n\n"); fclose($plik); } } } } //---------------------------------------------------------------------------------------------------- private function czysclogi($katalog) { $d = dir($katalog); while(false!==($entry = $d->read())) { if($entry!="." && $entry!="..") { if((filemtime($katalog."/".$entry)+15552000)numerzdarzenia=$nr; } //---------------------------------------------------------------------------------------------------- public function pobierzwiersz($wynik) { $row = $wynik->fetch_row(); return $row; } //---------------------------------------------------------------------------------------------------- public function backup($pathtofile) { //użycie //$this->strona->baza->backup("./logs/kopiabazy.php.".date("Y_m_d_H_i")); //pobieram nazwy tablic $tablice=$this->pobierzdane("show tables;"); if($tablice) { $plik=fopen($pathtofile,"w"); while(list($tablica)=$this->pobierzwiersz($tablice)) { //tu jest filter tablic; Pomijam statystyki if($tablica=="statystyki_a" || $tablica=="statystyki_d" || $tablica=="statystyki_j" || $tablica=="statystyki_l" || $tablica=="statystyki_m" || $tablica=="statystyki_p")continue; $sklad=""; //pobieram nazwy kolumn w tablicach $kolumny=$this->pobierzdane("describe $tablica;"); if($kolumny) { $i=0; $typy=""; while(list($kolumna,$typ)=$this->pobierzwiersz($kolumny)) {//tworze sklad kolumn $sklad.=$kolumna.","; $typy[$i++]=substr($typ,0,strpos($typ,"(")); } $sklad=substr($sklad,0,strlen($sklad)-1); //pobieram dane z bazy zgodnie z skladem $wynik=$this->pobierzdane("select $sklad from $tablica;"); if($wynik) { while($liniawyniku=$this->pobierzwiersz($wynik)) { $wartosci=""; foreach($liniawyniku as $key=>$wartosc) { $wartosc=str_replace("'",""",$wartosc); $wartosc=str_replace("\"",""",$wartosc); $wartosc=str_replace("\r\n","
",$wartosc); switch($typy[$key]) { case "int": $wartosci.=$wartosc.","; break; case "integer": $wartosci.=$wartosc.","; break; case "varchar": $wartosci.="'$wartosc',"; break; case "text": $wartosci.="'$wartosc',"; break; case "timestamp": $wartosci.="'$wartosc',"; break; default: $wartosci.="'$wartosc',"; } } $wartosci=substr($wartosci,0,strlen($wartosci)-1); fwrite($plik,"$"."this->polaczenie->query(\"insert into $tablica($sklad)values($wartosci);\",\$polaczenie);\n"); } } } else echo("Tablica $tablica nie zawiera kolumn
"); } fclose($plik); } else echo("Brak tablic
"); return true; } //---------------------------------------------------------------------------------------------------- public function syslog($trace, $dane) { //$this->strona->syslog(debug_backtrace(), $dane); $chceckpoint=$this->checkpoint($trace); $jestkatalognalogi=true; if(!file_exists($this->RootPath()."/logs")) if(!mkdir($this->RootPath()."/logs")) $jestkatalognalogi=false; if($jestkatalognalogi) { $plik=fopen($this->RootPath()."/logs/databaselog",'a'); fwrite($plik, $chceckpoint."\n".$dane."\n\n"); fclose($plik); } } //---------------------------------------------------------------------------------------------------- } } else die("Klasa już istnieje: ".__FILE__); ?> Critical error
type = 1
message = Uncaught Error: Class 'baza' not found in /www/rrtechnologies/www/www/helpdesk/silnik/silnik.php:38 Stack trace: #0 /www/rrtechnologies/www/www/helpdesk/index.php(29): silnik->silnik() #1 /www/rrtechnologies/www/www/helpdesk/index.php(57): index->show() #2 {main} thrown
file = /www/rrtechnologies/www/www/helpdesk/silnik/silnik.php
line = 38