Je crée un formulaire de contact et là j'ai un champ de saisie, tapez e-mail. À l'avenir, je prévois de sauvegarder ce courriel et toutes les autres données dans la base de données. Par conséquent, j'ai une question sur la façon de valider correctement cet email en PHP?Comment valider un e-mail (internationalement) pour une sauvegarde sécurisée dans la base de données
-Il doit accepter l'utf-8 et tous les caractères internationaux individuels que cet e-mail peut contenir.
Pour l'instant, j'ai fait deux validations d'email différentes.
La première est faite en utilisant filter_var() mais celle-ci n'autorise pas l'utilisation de caractères internationaux. (Par conséquent je l'ai enlevé.)
Deuxièmement, j'ai utilisé regex '/ ^[^\[email protected]][email protected][^\[email protected]]+.[^\[email protected]]+$/ui' et celui-ci permet l'utilisation de caractères internationaux mais il permet également d'utiliser '/ * et d'autres caractères qui sont une menace pour une éventuelle injection SQL. Je sais aussi qu'il existe une possibilité d'envoyer un courriel à un utilisateur pour vérifier ce courriel mais je me demande s'il existe une méthode de vérification que je peux utiliser pour valider le courrier électronique à l'échelle internationale et empêcher l'injection SQL?
Peut-être crypter/décrypter le courrier électronique? Peut-être que PDO devrait être suffisant?
Prévention de l'injection SQL d Cela ne se produit pas en vous assurant que vous avez une adresse e-mail valide, cela arrive en utilisant [** déclarations préparées **] (https://secure.php.net/manual/fr/pdo.prepare.php) avec [** paramètres liés **] (https://secure.php.net/manual/fr/pdostatement.bindparam.php). –
ce sont deux problèmes différents ... la validation d'email est en fait assez compliquée si vous voulez soutenir tous les email valides par specs (voir [cette question] (https://stackoverflow.com/questions/201323/using-a-regular- expression-à-valider-une-adresse-email)). Pour la prévention de l'injection SQL, vous devez utiliser des requêtes paramétrées et des instructions préparées ([cette question] (https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)) – JCOC611
signifie que PDO devrait le sécuriser, non? –