MySQL : testez le retour de mysql_connect, ou de mysqli->connect

Je reviens sur un problème qui m’a sauté aux yeux la semaine dernière, en effet en interrogeant Google on remarque que 797 000 pages (734 000 la semaine dernière) contiennent une erreur PHP car tout le monde pense que le serveur MySQL tourne toujours.. La preuve que non…

Je lance une grand campagne auprès de tous les webmasters PHP pour réduire ce nombre

Les news sur ce point seront disponible dans la catégorie MySQL Error Stop

Unissons nous pour faire reculer le fléau.

Filtrons les entrées

Afin de sécuriser au maximum vos sites, la première règle est de bien faire attention aux entrées utilisateurs. Cette partie peut être un peu fastidieuse mais c’est une des règles à respecter.

Les 3 règles les plus importantes :

  1. Initialiser vos variables utilisées dans la page.
  2. Vérifiez les variables rentrées par l’utilisateur.
  3. Vérifiez l’entrée des fonctions include / require fichiers.

La question c’est donc comment verifier vos variables simplement et efficacement.

Avant PHP 5.2, chacun avait sa propre recette de cuisine car il n’y avait aucune veritable solution dans PHP alors que tout le monde disait que c’était très important surtout suite aux nombreuses alertes qu’on voyait fleurir sur des logiciels Open Source.

Depuis PHP 5.2, l’extension filter (disponible jusqu’alors via PECL) a été inclus dans la distribution standard.

Cette extension est très pratique, elle permet par exemple de valider une adresse email sans se prendre la tête avec les dizaines d’expressions regulières que vous verez ici ou là sur Internet.

$email='nimportequoiyahoo.fr';
  $email=filter_var($email, FILTER_VALIDATE_EMAIL);
//$email est à null car l'adresse est incorrecte
$email='bonneadresse@bondomaine.com';
$email=filter_var($email, FILTER_VALIDATE_EMAIL);
//$email vaut "bonneadresse@bondomaine.com"

A retenir, on met la variable en premier argument et le filtre qu’on veut appliquer en deuxième.
Si cela retourne « null », la variable n’est pas correcte sinon elle est correcte.

Aprés on peut faire des choses plus complexe, l’utilisateur doit rentrer un entier entre 1 et 10

$categorie=filter_var($_GET['categorie'],
  array(
            //je veux uniquement un entier
            'filter'    => FILTER_VALIDATE_INT,
            //il doit etre compris dans un tableau
            'flags'     => FILTER_REQUIRE_ARRAY,
            //entre 1 et 10
            'options'   => array(
						   'min_range' => 1,
							 'max_range' => 10
							 )
           ));

Aprés dans la vie de tous les jours, vous aimeriez filtrer l’ensemble de votre formulaire en une seule fois :

// je decris mon formulaire sous forme de tableau
// avec les format attendu
$config_form = array(
    'produit'   => FILTER_VALIDATE_INT,
    'categorie'    => array('filter'    => FILTER_VALIDATE_INT,
                            'flags'     =>FILTER_REQUIRE_ARRAY,
                            'options'   => array('min_range' => 1, 'max_range' => 10)
                           )
);
 
$_POST_CLEAN = filter_input_array(INPUT_POST, $config_form);
//je recupére ainsi dans $_POST_CLEAN tout ce qui était
//dans $_POST mais maintenant les données sont
//filtrées.

A vous de jouer !



Check out our best movie collection. Latest CD, DVD, HQ DVD movie downloads. Buy and download movies instantly.