les sites de phcha.com, rencontre, broderie et documentation

(14) Kit de survie PHP

Bonnes pratiques
Idempotence

Bonnes pratiques [haut]

Toute valeur passée en POST ou en GET doit être vérifiée avant d'être utilisée ou insérée en base.

<?php
function Authentification($nomScript, $infoLogin, $bd)
{
// vérifie que la table des sessions en cours contient une clé de session
// égale à session_id() et retourne l'internaute correspondant.
// Sinon, propose un formulaire avec mot de passe
}

session_start();

Entete(); // affiche la page HTML jusqu'à <body>

$bd = new BD (NOM, PASSE, BASE, SERVEUR);

$id = Authentification("Recherche.php", $_POST, $bd);
$id = VerifieEntreeIdInternaute($id);

if (isset($_POST['variable']))
 $variable = VerifieEntreeVariable($_POST['variable']);
else
 $variable = 1; /* give a default value */

...

PiedDePage(); // affiche la page HTML à partir de </body>
exit;
?>
Idempotence [haut]

Une valeur passée en POST et donnant lieu à une insertion dans une base, se retrouve proposée une nouvelle fois en cas de ''Reload'' de la page par le navigateur. Il peut en resulter une double insertion.

Si du point de vue fonctionnel, cette anomalie est à proscrire, il faudra mettre en oeuvre un moyen de l'éviter : faire un DELETE avant un INSERT par exemple.