Existe-t-il un équivalent à mysql_real_escape_string() pour l'injection de courrier électronique? J'ai un formulaire où l'utilisateur soumet son email. J'ai peur que quelqu'un puisse insérer une liste d'e-mails séparés par des virgules et utiliser mon site pour le spam.Fonction de validation d'e-mail PHP
Répondre
Vous pouvez utiliser filter_var
pour valider l'adresse e-mail:
if (!filter_var($address, FILTER_VALIDATE_EMAIL)) {
// invalid e-mail address
}
valident simplement le champ à une expression régulière communément trouvée pour l'adresse e-mail unique
function validate_email($e){
return (bool)preg_match("`^[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$`i", trim($e));
}
Si votre principale préoccupation est, Comme l'indique la question, pour vérifier que les utilisateurs n'ont pas tenté de vous tromper en leur envoyant une liste d'adresses séparées par des virgules, la réponse n'est-elle pas simplement de vérifier s'il existe des virgules dans l'entrée de l'utilisateur?
Pour ceux qui ont des versions plus anciennes
/*
# PHP Email Validation for versions LESS than PHP 5.2.0)
*/
$strEmail= mysql_real_escape_string($_POST['email_e']);
if (!eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$", $strEmail)){
// valid email
} else {
// not a valid email
}
eregi est déprécié depuis PHP 5.3 – Gerfried
Merci pour le commentaire. Dûment noté. – TheBlackBenzKid
J'ai trouvé que la bonne validation email n'est pas aussi simple que cela, si juste décidé de vérifier si « @ » et « » est dans la chaîne.
function email_valid($email){
/* EMAIL VALIDATION, CHECKS IF STRING CONTAINS "@" and "." */
if(strpos($email, "@") AND strpos($email, ".")){
return TRUE;
}
else {
return FALSE;
}
}
P.S. Si vous n'utilisez pas les instructions préparées par PDO pour écrire dans la base de données, SOYEZ SÛR de filtrer les symboles qui peuvent provoquer l'injection sql
Vous pourriez au moins être sûr que le '.' la position est plus grande que le '@'. Cependant, je pense qu'il est possible de créer une meilleure validation avec l'expression regex. – patricia
En fait, le courrier électronique peut même ne pas contenir de ".", Par ex."user @ hostname" dans l'intranet devrait être parfaitement utilisable – Victor
@Victor c'est vrai. Après quelques années de programmation depuis que j'ai répondu à la question, je suis arrivé à la conclusion qu'il ne valait pas la peine de valider plus d'adresses email que ''. Ce qui vous intéresse, c'est si l'utilisateur peut recevoir un e-mail de votre part, ce qui peut ne pas être possible même avec une adresse e-mail valide. Il est donc plus simple d'envoyer un e-mail de confirmation plutôt que d'écrire du code de validation. – Tomas
Il serait plus simple de vérifier la longueur totale de la chaîne - c'est-à-dire la partie locale max 64 + le domaine @ + section max 255 caractères = 320 caractères, mais le spamming des adresses courtes serait toujours possible. Je suis actuellement à la recherche de validation par courriel pour mon projet et j'ai trouvé cet intéressant article email validation qui explique en détail les adresses e-mail valides et le rfc2822. Là, ils suggèrent une manière beaucoup plus simple de valider cela qui empêcherait les listes séparées par des virgules d'être une forme efficace de spam.
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex)
{
$isValid = false;
}
else
{
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
// ... work with domain and local parts
}
Ce casse simplement l'adresse e-mail par trouver le dernier signe @ et déclare tout ce qui passe avant qu'elle soit la partie locale de l'adresse qui a une limite de 64 caractères. S'il n'y a pas de signe @ alors strrpos retournera une valeur booléenne de false. Je vais m'en servir dans ma fonction de validation.
- 1. problème de validation fonction
- 2. Normes de validation d'argument de fonction/méthode
- 3. filter_var ou fonction personnalisée pour la validation d'email en php
- 4. Validation d'objet PHP
- 5. PHP url validation + détection
- 6. PHP: validation de temps RegEx?
- 7. Bibliothèque de validation PHP/Javascript
- 8. Plugin de validation jQuery - validation partielle en fonction du déclencheur
- 9. PHP - Méthode de validation côté serveur
- 10. Jquery array validation + php
- 11. Validation html avec php
- 12. PHP Validation Question
- 13. classes php ... validation
- 14. validation email PHP
- 15. Validation décimale + PHP?
- 16. Validation du code PHP strict
- 17. La fonction ShowErrors() de jQuery Validation Plugin
- 18. appel de fonction en boucle avec validation
- 19. Fonction de validation en direct personnalisée
- 20. Appliquer AddMethod() à la fonction de validation
- 21. Validation de données par lots en PHP
- 22. Question de validation de formulaire PHP?
- 23. Extraction de PHP() Fonction
- 24. Php Fonction Date de
- 25. Fonction de messagerie php
- 26. Fonction de recherche php
- 27. Fonction JavaScript de PHP
- 28. validation W3C double ID php
- 29. validation formulaire en mvc php
- 30. Validation du nom d'utilisateur PHP
Poussez-le à travers this regex. –