Completed
Pull Request — 1.0 (#38)
by
unknown
02:04
created

SqlConnect::protect()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 9
rs 9.6666
cc 1
eloc 4
nc 1
nop 1
1
<?php
2
/**
3
 * Classes en rapport avec les sgdb
4
 * @author Vermeulen Maxime <[email protected]>
5
 * @version 1.0
6
 */
7
8
namespace BFWSql;
9
10
/**
11
 * Classe PDO faisait la connexion
12
 * @package bfw-sql
13
 */
14
class SqlConnect implements \BFWSqlInterface\ISqlConnect
15
{
16
    /**
17
     * @var $_kernel L'instance du Kernel
18
     */
19
    protected $_kernel;
20
    
21
    /**
22
     * @var $debug Si on est en mode débug ou non 
23
     * (utile pour afficher les erreurs ou non suivant si on est en prod ou pas)
24
     */
25
    protected $debug;
26
    
27
    /**
28
     * @var $type Type de connexion (mysql/pgsql/etc)
29
     */
30
    protected $type;
31
    
32
    /**
33
     * @var $nb_query (default: 0) Nombre de requête effectué
34
     */
35
    protected $nb_query = 0;
36
    
37
    /**
38
     * @var $PDO L'objet PDO
39
     */
40
    protected $PDO;
41
    
42
    /**
43
     * Constructeur de la classe. Créer la connexion
44
     * 
45
     * @param string $host  Adresse du serveur hôte
46
     * @param string $login Le login de connexion
47
     * @param string $passe Le mot de passe de connexion
48
     * @param string $base  Le nom de la base à laquelle se connecter
49
     * @param string $type  (default: "mysql") Le type de base à laquel on se connexion (pgsql/mysql/etc) au format de pdo
50
     * @param bool   $utf8  (default: "true") Si on a la base en utf8 ou non (par défaut : true)
51
     */
52
    public function __construct($host, $login, $passe, $base, $type='mysql', $utf8=true)
53
    {
54
        $this->_kernel = getKernel();
55
        $this->debug = $this->_kernel->getDebug();
56
57
        $this->type = $type;
58
        $this->PDO = new \PDO($type.':host='.$host.';dbname='.$base, $login, $passe);
59
        //PDO create \Exception if fail.
60
        
61
        if($utf8)
62
        {
63
            $this->set_utf8();
64
        }
65
    }
66
    
67
    /**
68
     * Permet d'utiliser la base sql en utf8
69
     * 
70
     * @return void
71
     */
72
    protected function set_utf8()
73
    {
74
        $this->PDO->exec('SET NAMES utf8');
75
    }
76
    
77
    /**
78
     * Permet de protéger une requête contre les injections et autres.
79
     * 
80
     * @param string $string la requêtre sql
81
     * 
82
     * @return string la requête sql protégé
83
     */
84
    public function protect($string)
85
    {
86
        $prot = $this->PDO->quote($string);
87
        
88
        //quote complique les requêtes et les conditions en rajoutant des guillemet 
89
        //en début et fin de chaine donc on les supprime
90
        $ret = substr($prot, 1, strlen($prot)-2);
91
        return $ret;
92
    }
93
    
94
    /**
95
     * Accesseur pour accéder à $this->PDO
96
     * 
97
     * @return \PDO Instance de la classe PDO
98
     */
99
    public function getPDO()
100
    {
101
        return $this->PDO;
102
    }
103
    
104
    /**
105
     * Accesseur pour accéder à $this->type
106
     * 
107
     * @return string Le type de connexion
108
     */
109
    public function getType() 
110
    {
111
        return $this->type;
112
    }
113
    
114
    /**
115
     * Accesseur pour accéder à $this->nb_query
116
     * 
117
     * @return integer Le nombre de requête
118
     */
119
    public function getNbQuery()
120
    {
121
        return $this->nb_query;
122
    }
123
    
124
    /**
125
     * Incrémente le nombre de requête effectué
126
     * 
127
     * @return void
128
     */
129
    public function upNbQuery()
130
    {
131
        $this->nb_query++;
132
    }
133
}
134
?>
0 ignored issues
show
Best Practice introduced by
It is not recommended to use PHP's closing tag ?> in files other than templates.

Using a closing tag in PHP files that only contain PHP code is not recommended as you might accidentally add whitespace after the closing tag which would then be output by PHP. This can cause severe problems, for example headers cannot be sent anymore.

A simple precaution is to leave off the closing tag as it is not required, and it also has no negative effects whatsoever.

Loading history...
135