Commit c2cd5b76c7b5bdb05c21f70f8d249a0a202a9549

Authored by Leandro Arndt
1 parent a06dd354
Exists in mysqli

Classe DB

Introdução da classe DB (que utiliza mysqli e evita injeção de SQL), criação do arquivo correspondente, e adaptação dos arquivos inc/database.php para utilizar mysqli a partir dessa classe.
class/db.class.php 0 → 100644
@@ -0,0 +1,43 @@ @@ -0,0 +1,43 @@
  1 +<?php
  2 +/**********************************************************************************
  3 + Sistema e-SIC Livre: sistema de acesso a informação baseado na lei de acesso.
  4 +
  5 + Copyright (C) 2014 Prefeitura Municipal do Natal
  6 +
  7 + Este programa é software livre; você pode redistribuí-lo e/ou
  8 + modificá-lo sob os termos da Licença GPL2.
  9 +***********************************************************************************/
  10 +
  11 +class DB {
  12 + private static $mysqli;
  13 + private function __construct() {}
  14 +
  15 + static function conn() {
  16 + if (!self::$mysqli) {
  17 + self::$mysqli = new mysqli('p:'.DBHOST, DBUSER, DBPASS, DBNAME);
  18 + }
  19 + return self::$mysqli;
  20 + }
  21 +
  22 + public function execQuery($query) {
  23 + // Resolve o problema da injeção de SQL:
  24 + $rs = mysqli_query(DB::conn(), mysqli_real_escape_string(DB::CONN(), $query));
  25 + return $rs;
  26 + }
  27 +
  28 + public function rs_to_array($result, $numass=MYSQL_BOTH) {
  29 + $got = array();
  30 +
  31 + if(mysqli_num_rows($result) == 0)
  32 + return $got;
  33 +
  34 + mysqli_data_seek($result, 0);
  35 +
  36 + while ($row = mysqli_fetch_array($result, $numass)) {
  37 + array_push($got, $row);
  38 + }
  39 +
  40 + return $got;
  41 + }
  42 +}
  43 +?>
0 \ No newline at end of file 44 \ No newline at end of file
inc/database.php
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 ***********************************************************************************/ 9 ***********************************************************************************/
10 10
11 require_once("config.php"); 11 require_once("config.php");
  12 +require_once("../class/db.class.php");
12 13
13 function db_open() { 14 function db_open() {
14 15
@@ -25,28 +26,24 @@ function db_close($conn) { @@ -25,28 +26,24 @@ function db_close($conn) {
25 //retorna objeto de conexao com o banco para transações 26 //retorna objeto de conexao com o banco para transações
26 function db_open_trans() 27 function db_open_trans()
27 { 28 {
28 - //conecta ao mysqli  
29 - $mysqli = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);  
30 - 29 + $mysqli = DB::conn();
31 /* check connection */ 30 /* check connection */
32 if (mysqli_connect_errno()) { 31 if (mysqli_connect_errno()) {
33 die("Falha na conexao: ". mysqli_connect_error()); 32 die("Falha na conexao: ". mysqli_connect_error());
34 } 33 }
35 34
36 $mysqli->autocommit(false); 35 $mysqli->autocommit(false);
37 -  
38 - return $mysqli;  
39 -  
40 -}  
41 36
  37 + return $mysqli; // mantido para facilitar a transição do código para a global
42 38
  39 +}
43 40
44 function execQuery($query) { 41 function execQuery($query) {
45 - $conn = db_open();  
46 -  
47 - $rs = mysql_query($query, $conn); // or die (mysql_error()); 42 + $conn = db_open();
48 43
49 - db_close($conn); 44 + $rs = mysql_query($query, $conn); // or die (mysql_error());
  45 +
  46 + db_close($conn);
50 return $rs; 47 return $rs;
51 } 48 }
52 49
restrito/inc/database.php
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 ***********************************************************************************/ 9 ***********************************************************************************/
10 10
11 require_once("config.php"); 11 require_once("config.php");
  12 +include_once(DIR_CLASSES_LEIACESSO."/db.class.php");
12 13
13 function db_open() { 14 function db_open() {
14 15
@@ -25,28 +26,24 @@ function db_close($conn) { @@ -25,28 +26,24 @@ function db_close($conn) {
25 //retorna objeto de conexao com o banco para transações 26 //retorna objeto de conexao com o banco para transações
26 function db_open_trans() 27 function db_open_trans()
27 { 28 {
28 - //conecta ao mysqli  
29 - $mysqli = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);  
30 - 29 + $mysqli = DB::conn();
31 /* check connection */ 30 /* check connection */
32 if (mysqli_connect_errno()) { 31 if (mysqli_connect_errno()) {
33 die("Falha na conexao: ". mysqli_connect_error()); 32 die("Falha na conexao: ". mysqli_connect_error());
34 } 33 }
35 34
36 $mysqli->autocommit(false); 35 $mysqli->autocommit(false);
37 -  
38 - return $mysqli;  
39 -  
40 -}  
41 36
  37 + return $mysqli; // mantido para facilitar a transição do código para a global
42 38
  39 +}
43 40
44 function execQuery($query) { 41 function execQuery($query) {
45 - $conn = db_open();  
46 -  
47 - $rs = mysql_query($query, $conn); // or die (mysql_error()); 42 + $conn = db_open();
48 43
49 - db_close($conn); 44 + $rs = mysql_query($query, $conn); // or die (mysql_error());
  45 +
  46 + db_close($conn);
50 return $rs; 47 return $rs;
51 } 48 }
52 49