web-dev-qa-db-fra.com

is_email () VS sanitize_email ()

Si j'autorise un utilisateur à saisir une adresse électronique à enregistrer dans la base de données, dois-je utiliser is_email() ou sanitize_email()?

Ex.

update_user_meta( $user_id, $social_site, sanitize_email( $_POST[$user_input] ) );
3
user54141

is_email() prendra la chaîne fournie (une adresse électronique) et effectuera des vérifications pour s'assurer qu'il s'agit bien d'une adresse électronique et que la chaîne ne contient aucun caractère illégal. Cela ne changerait tout simplement rien dans la chaîne que vous avez fournie, mais renverrait soit true si la chaîne passe tous les contrôles de fonction, soit false si ce n'est pas le cas.

La sanitize_email() prend la chaîne fournie, supprime les caractères non autorisés dans une adresse électronique et renvoie uniquement les caractères autorisés.

Donc, si vous aviez une chaîne qui doit être un email comme: user"[email protected]

is_email() renverrait false car la chaîne contient des caractères non autorisés dans une adresse électronique.

sanitize_email() renverrait [email protected]

Si vous prenez user"[email protected] et que vous l'exécutez d'abord via la fonction sanitize_email(), puis via la fonction is_email(), il renverra alors true dans la mesure où tous les caractères non valides sont supprimés de la chaîne, ce qui permet à la chaîne de passer les contrôles is_email().

Je suggérerais d'utiliser is_email () pour vérifier d'abord si l'utilisateur a soumis une adresse e-mail correcte et avant de valider quoi que ce soit dans la base de données, il est en fait sûr d'exécuter la fonction sanitize_email () au plus tard dans votre script.

5
Waylon Fourie