Voilà je cherche à sécurisé mes requetes car je pense avoir des problème d'injection sql.
Je vous montre une de mes requetes car elle sont toute basé sur le même shéma, que puis je faire de mieux coté sécurité svp.
Connection à la base via un include :
<?php
mb_internal_encoding('UTF-8');
// Configuration locale
if(strstr($_SERVER['HTTP_HOST'], '127.0.0.1')) {
// Connexion à la base
try
{
$bdd = new PDO('mysql:host=127.0.0.1;dbname=mabase', 'root', '', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$bdd->exec('SET NAMES utf8');
}
catch(PDOException $e)
{
exit($e->getMessage());
die();
}
} else {
// Connexion à la base
try
{
$bdd = new PDO('mysql:host=*****;dbname=mabase', '****', 'mdp') or die(print_r($bdd->errorInfo()));
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
$bdd->exec('SET NAMES utf8');
}
catch(PDOException $e)
{
exit($e->getMessage());
die();
}
}
?>
Coté code une de mes requetes :
$sql = 'SELECT * FROM `loisirs` JOIN regions ON regions.region_id = loisirs.id_region WHERE loisirs.date_fin_sortie > NOW() AND loisirs.valide = 1';
if (!empty($_GET['region'])) {
$sql .= ' AND regions.url = \''.$_GET['region'].'\'';
}
if (!empty($_GET['departement'])) {
$sql .= ' AND loisirs.id_departements = '.$_GET['departement'];
}
if (!empty($_GET['loisir']) ) {
$sql .= ' AND loisirs.genre_loisir = \''.$_GET['loisir'].'\'';
}
if (!empty($_GET['ville'])) {
$sql .= ' AND loisirs.city = \''. getRealValue($_GET['ville']). '\'';
}
$req = $bdd->query($sql);
$nb = $req->rowCount();
while($ligne = $req->fetch(PDO::FETCH_ASSOC)){
// J'affiché mes données
}