/*---------------------------------------------------------------*/
|
/*
|
Titre : Classe DATABASE
|
|
URL : https://phpsources.net/code_s.php?id=142
|
Auteur : Eric Potvin
|
Date édition : 27 Sept 2005
|
*/
|
/*---------------------------------------------------------------*/
|
//version 0.1
|
|
class database {
|
|
//Variable interne de la classe
|
var $errorNum = 0;
|
var $errorMsg = null;
|
var $resource = null;
|
var $cursor = null;
|
var $number = 0;
|
|
//constructeur de la classe.
|
function database(
|
$host='localhost',
|
$user = 'web',
|
$pass = 'web',
|
$db = 'database')
|
{
|
//pour valider que l'usager n'entre pas la base
|
//de données systeme de MYSQL
|
//afin de la pirater.
|
if(strtolower($db) == 'mysql') {
|
$db = '';
|
}
|
|
if(!($this->resource = mysql_connect($host, $user, $pass))) {
|
//en cas d'échec du serveur
|
$this->errorNum = mysql_errno();
|
$this->errorMsg = mysql_error();
|
}
|
if (!mysql_select_db($db)) {
|
//en cas d'échec de la bd
|
$this->errorNum = mysql_errno();
|
$this->errorMsg = mysql_error();
|
}
|
}
|
|
//retoune le ID de l'erreur
|
function getErrorNum() {
|
return $this->errorNum;
|
}
|
//retoune le message de l'erreur
|
function getErrorMsg() {
|
return $this->errorMsg;
|
}
|
//s'assure que les champs entrés dans la base
|
//de données sont valide en ajoutant au
|
//besoins des ' - semblable à la fonction "addslashes"
|
function getEscaped($text) {
|
return mysql_escape_string($text);
|
}
|
|
//envoi une requete à la BD et retounr les résultats sous forme de tableau.
|
function query($sql = '') {
|
if(empty($sql)) {
|
return false;
|
}
|
$this->errorNum = 0;
|
$this->errorMsg = '';
|
$array = array();
|
//assigne le résultat de la requête
|
$this->cursor = mysql_query(database::getEscaped($sql), $this->resource);
|
if (!$this->cursor) {
|
$this->errorNum = mysql_errno($this->resource);
|
$this->errorMsg = mysql_error($this->resource);
|
return false;
|
}
|
|
$this->number = mysql_num_rows($this->cursor);
|
//affecteur le tableau avec les valeurs de retours.
|
while($row = mysql_fetch_assoc($this->cursor)) {
|
$array[] = $row;
|
}
|
mysql_free_result($this->cursor);
|
return $array;
|
}
|
//ferme la connection
|
function close() {
|
return mysql_close($this->resource);
|
}
|
//retourne le nombre de ligne(s)
|
function getNumRows() {
|
return $this->number;
|
}
|
//retourne le dernier ID de la dernière requête "insert" ajouté
|
function getLastId()
|
{
|
return mysql_insert_id();
|
}
|
//retourne la version de mysql
|
function getVersion()
|
{
|
return mysql_get_server_info();
|
}
|
|
}
|
|
| ?> |
Invité
11 Juin 2009 à 19:47Bonjour,
juste une erreur à signaler,
quand vous écrivez : "database::getEscaped($sql)", ligne 84, ce sont les attributs qu'il faut sécurisés, et pas la requête SQL.
un exemple :
$sql = INSERT INTO user (`login`, `pass`) VALUES ('j'ean marie', 'pass');
Si je fais : database::getEscaped($sql) :
$sql = INSERT INTO user (`login`, `pass`) VALUES (\'j\'ean marie\', \'pass\');
alors qu'il faudrait :
$sql = INSERT INTO user (`login`, `pass`) VALUES ('j\'ean marie', 'pass'); ....
Une solution :
ligne 84 : $this->cursor = mysql_query($sql, $this->resource);
Et de laisser le contrôle des attributs à l'utilisateur.
Brieuc.