par
olvlvl » 20 févr. 2013, 12:41
Plusieurs remarques :
1. Ne fait JAMAIS d'extract sur une source dont tu ne connais pas la provenance. Il suffit qu'un petit malin utilise le nom d'une variable présente dans ton code pour faire n'importe quoi.
2. mysql_real_escape_string(htmlspecialchars(ltrim(strip_tags($pseudo)))); C'est complètement inutile. Utilise "mysql_real_escape_string" lorsque tu souhaite enregistrer la valeur en base de données. Mais je te conseille vivement de te mettre à
PDO et d'utiliser les requêtes préparées. Utilise "htmlspecialchars" lorsque tu veux afficher la données sur ta page. "strip_tags" n'a que rarement d'intérêt, surtout si tu utilises "htmlspecialchars" pour échapper les données que tu souhaite afficher. Pourquoi "ltrim" ? Utilise plutôt "trim" sur les chaines de caractères, cela te permettra de te débarrasser des caractères vides en début ET en fin de chaine.
3. Ton motif est correct même si celui-ci serait mieux: "#^(\d{2})/(\d{2})/(\d{4})$#". Si tu veux simplement vérifier le motif tu peux supprimer les parenthèses, elles ne sont utiles que lorsque tu souhaites "capturer" les valeurs. Définir un motif c'est bien, l'utiliser c'est mieux : if (preg_match($motif, $_POST['date_de_naissance'])) ...
4. C'est bien d'utiliser empty(), mais si tu supprime "extract" je te conseille la méthode suivante :
$params = $_POST + array
(
'pseudo' => null,
'password' => null,
'email' => null,
'prenom' => null,
'age' => null,
'url' => null
);
$pseudo = $params['pseudo'];
Comme cela tu n'as pas à t'embêter avec empty() puisque si une clé n'est pas présente dans $_POST, elle sera définie par
l'union.