Verifier l' email dans un formulaire
Résolutoy2000gt Messages postés 32 Statut Membre -
je dois vérifier si un email a le bon format dans un formulaire mais je ne sais le faire qu'en php, ce qui n 'est pas très pratique alors il y a deux solutions où je mets un script en javascript ( mais moi le javascript ... )
ou bien je trouve un moyen de rediriger vers une autre page en php !
si quelqu'un a une des deux soluces ce serait sympa !
rucht ( chercheur a temps complet )
- L'email n'est pas correctement formaté
- Votre appareil ne dispose pas des correctifs de qualité et de sécurité importants - Guide
- Format epub c'est quoi - Guide
- Cheick yvan formate héritage - Forum Java
- Comment creer un compte email - Guide
- Cheick yvann formate - Forum Vos droits sur internet
22 réponses
- 1
- 2
Le problème central est de vérifier le format d'une adresse email dans un formulaire, en pesant les avantages d'une validation côté client avec JavaScript et d'une validation côté serveur en PHP. Des solutions récurrentes incluent des expressions régulières en JavaScript pour tester la syntaxe et des vérifications robustes côté serveur afin d'assurer la fiabilité même si le navigateur est désactivé. Pour une pratique efficace, des validations côté client améliorent l'expérience utilisateur; en cas de JavaScript désactivé, des mécanismes côté serveur restent nécessaires, avec des messages d'erreur clairs. Des précautions supplémentaires incluent la vérification de l'existence du domaine; des contrôles avancés restent nécessaires après soumission, sans remplacement par une validation serveur robuste réelle.
Voici un code beaucoup plus efficace à mon avis :
function bonmail(mailteste)
{
var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i');
if(reg.test(mailteste))
{
return(true);
}
else
{
return(false);
}
}
Cette fonction javascript teste qu'une adresse mail est syntaxiquement correcte...
Voici un exemple de script:
<SCRIPT language="JavaScript">
<!--
function VerifMail()
{
a = document.Verif.Mail.value;
valide1 = false;
for(var j=1;j<(a.length);j++){
if(a.charAt(j)=='@'){
if(j<(a.length-4)){
for(var k=j;k<(a.length-2);k++){
if(a.charAt(k)=='.') valide1=true;
}
}
}
}
if(valide1==false) alert("Veuillez saisir une adresse email valide.");
return valide1;
}
//-->
</SCRIPT>
Place ce code dans la balise form:
onsubmit="return VerifMail();"
Remarque:
Dans cet exemple, le formulaire a pour attribut name="Verif" et le champ de saisie de l'adresse e-mail a pour attribut name="Mail"
... à modifier éventuellement :)
A+
Celui qui désactive Javascript dans son navigateur est vraiment parano puisqu'aucune fonction n'a de réelles incidences sur la sécurité d'un pc (heureusement d'ailleurs) : pas d'accès au disque en lecteure ou écriture et les scripts ne sont actifs que lorsque la page est chargée ; plus de page, plus de script...
Pour en revenir au sujet, perso j'utilise cette fonction, un peu plus poussée que celles expliquées ici (désolé) :
isEmail = function(emailStr) {
var checkTLD = 1;
var knownDomsPat = /^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|fr)$/;
var emailPat = /^(.+)@(.+)$/;
var specialChars = "\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars = "\[^\\s" + specialChars + "\]";
var quotedUser = "(\"[^\"]*\")";
var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom = validChars + '+';
var word = "(" + atom + "|" + quotedUser + ")";
var userPat = new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray = emailStr.match(emailPat);
if (matchArray == null) { return false; }
var user = matchArray[1];
var domain = matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i) > 127) { return false; }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i) > 127) { return false; }
}
if (user.match(userPat) == null) { return false; }
var IPArray=domain.match(ipDomainPat);
if (IPArray != null) {
for (var i=1; i<=4; i++) {
if (IPArray[i] > 255) { return false; }
}
return true;
}
var atomPat = new RegExp("^" + atom + "$");
var domArr = domain.split(".");
var len = domArr.length;
for (i=0; i<len; i++) {
if (domArr[i].search(atomPat) == -1) { return false; }
}
if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) { return false; }
if (len < 2) { return false; }
return true;
}
Cette fonction renvoit un booléen : false en cas d'échec, true si la syntaxe de l'adresse est exacte (ce qui ne veut pas dire qu'elle existe). Disons que ça évite bon nombre d'erreurs de frappe et comme le fait remarquer Christophe B., ça ne dispense pas de faire d'autres tests coté serveur une fois le formulaire soumis...
Petite précision sur la fonction (qui fonctionne très bien sur mes sites depuis des années). Les extensions de domaines définnies au début (.com, .net, etc...) n'ont pas besoin d'etre étendues. Par exemple une adresse email anglaise du type "myaddress@mysite.co.uk" est très bien comprise...
Pour ceux qui s'intéressent de près au Javascript, je préconise de vous pencher sur d'excellentes solutions comme Prototype et/ou Scriptaculous qui font des merveilles et rendent la programmation dans ce langage plus facile. Par contre si c'est juste pour vérifier la syntaxe d'une adresse email, c'est clair que c'est pas très rentable...
Voici le code que j'utilise présentement :
<script type="text/javascript">
<!--
function verif_formulaire()
{
if(document.formulaire.Nom.value == "") {
alert("Veuillez entrer votre nom!");
document.formulaire.Nom.focus();
return false;
}
if(document.formulaire.Prenom.value == "") {
alert("Veuillez entrer votre prenom!");
document.formulaire.Prenom.focus();
return false;
}
if(document.formulaire.Email.value == "") {
alert("Veuillez entrer votre adresse électronique!");
document.formulaire.Email.focus();
return false;
}
if(document.formulaire.Email.value.indexOf('@') == -1) {
alert("Il y a une erreur à votre adresse électronique!");
document.formulaire.Email.focus();
return false;
}
if(document.formulaire.Message.value == "") {
alert("Veuillez entrer votre message!");
document.formulaire.Message.focus();
return false;
}
var chkZ = 1;
for(i=0;i<document.formulaire.Telephone.value.length;++i)
if(document.formulaire.Telephone.value.charAt(i) < "0"
|| document.formulaire.Telephone.value.charAt(i) > "9")
chkZ = -1;
if(chkZ == -1) {
alert("Votre téléphone doit contenir que des nombres!");
document.formulaire.Telephone.focus();
return false;
}
}
//-->
</script>
Il est en effet extrêmement facile de simuler un envoi de formulaire (par POST ou GET) sans passer par un navigateur internet. Il est donc impossible de garantir la fiabilité d'un input de la part d'un visiteur sur votre site web.
Les javascripts ne sont la que pour décharger le serveur des erreurs de l'utilisateur standard.
Ensuite tout site web doit être en théorie fonctionnel sans aucun javascript pour des raisons d'accés + sécurité. Ca c'est la rigueur.
Dire que les utilisateurs sans javascript j'en veux pas, c'est comme dire je veux pas installer de rampe pour handicapé à coté de mon escalier.
Faites attention à ne pas faire n'importe quoi avec des javascripts sous le sacro saint du web 2.0 (qui a une définition plus large que javascript über alles).
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionVoici un truc du site allatml. Je n'ai pas essayé celui là mais d'autres sur ma page d'un formulaire ( http://abarka.free.fr/Locations/formulaire_loc.html ).
Contrôle d'une adresse mail
1. Compatiblité
I.Explorer : Oui
Netscape : Oui
2. Description et scripts
Ce script permet de contrôler l'adresse électronique d'un formulaire, en détectant la présence de l'arobase (@) dans le champs spécifié. Exemple avec un formulaire comportant un champ appelé EMAIL (contenant l'adresse électronique).
<script language="javascript">
<!--
function arobaceok(EMAIL)
{
var a=document.forms[0].EMAIL.value;
var test="" + a;
for(var k = 0; k < test.length;k++)
{
var c = test.substring(k,k+1);
if(c == "@")
{
return true;
}
}
alert("Votre E-mail, Merci");
return false;
}
//-->
</script>
Après avoir placé ce script entre les balises </title> et </head>, vous devez tester l'envoi du formulaire en ajoutant l'événement Onsubmit à la balise <form>.
<form method=post action="post" name="AVIS" OnSubmit="return arobaceok(EMAIL)">
Bonne chance !!!
http://abarka.free.fr
Un adulte assis voit plus loin qu'un jeune debout.
Cependant, il peut être utile de vérfier également si le domaine de l'email existe vraiment, pour celà, on ne coupe pas à l'utilisation de PHP après validation du formulaire..Si ce n'est pas nécessaire, JAVASCRIPT !!!. Le serveur est à épargner si possible.
A ceux qui me répondraient ... et si Javascript est désactivé ? ... je réponds... pas d'envoi de formulaire.
Désactiver son javascript...a part pour chercher des passoires ca n'offre que des intérêts très limités surtout en ces temps ou les fonctionnalités Web2.0 nécessitent Javascript partout.
Pourquoi ?
Tout simplement pour une raison pratique : Si on ne verifie pas AVANT, et que les données sont erronées, celà nous oblige à appeler une page de verification, puis de rappeler le formulaire si celui ne passe pas, amoins d'utilisé un peu d'ajax ce qui n'arrange en rien la chose.
La verification avant envoie, couplé à la proprièté disabled du bouton submit tant que les conditions minimales ne sont pas remplient evite par exemple qu'un internaute mal intentionné ne valide son formulaire sans s'être relu. Celà evite également des refresh ou reload intempestif. Si quelqu'un tente de contourner le formulaire, la verification côté serveur s'en rendra compte et stoppera l'execution du script.
En ce qui concerne la sécurité, JavaScript n'est en rien un probleme, sauf si on ne sait pas respecter les recommandations. Si tout est bien codé, il n'y a aucune raison qu'il y ai un probleme de sécurité. Deplus, si l'on verifie le formulaire AVANT envoie, celà aurait plus tendance à sécurisé le formulaire qu'a l'insécurisé.
Quand à la question de l'accès, le javascript n'empêche en rien l'accès à un site web. Encore une fois, si c'est bien fait tout passe pour le mieux. De plus, les gens désactivants javascript sont comme dit plus haut plutôt parano... Sachant en prime qu'aujourd'hui plus de 95% des sites utilisent du javascript couplé à d'autre langage.
Bref, pour conclure, je dirais que parfois il faudrait penser à refléchir et se renseigné avant de raconter tout et n'importe quoi.
Je suis d'accord pour dire que quelqu'un naviguant sous Firefox avec javascript désactivé a de bonnes chances d'être parano, mais s'il est sous opera mini? ou tout autre navigateur mobile ne supportant pas ou supportant mal le javascript?
Pour bien faire un site doit fonctionner parfaitement sans javascript, celui-ci ne devant qu'aider à rendre la navigation plus fluide/animée.
Je pourrais te donner un script permettant de tester le format de ton adresse mail
mais je préférés te montrer un bon tuto qui te permettras d'apprendre a utiliser
les expressions réguliers
http://www.siteduzero.com/tutoriel-3-14618-les-expressions-regulieres-partie-2-2.html
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.."
Contrôler que l'adresse est bien au format xxxxx@yyyyy.zzz ?
enfin c ' est pas grave j' ai trouver une appliquation javascript qui le fait presque et deriere j' ai mis une page en php qui verifie tout bien !!
c 'est tres loin d' etre infaible mais sa fait "garde fou" ....
merci quand meme de ton post !!!
surtout si longtemp apre la date ou j' ai fait ce post ...
rucht ( surpri ... )
voici un fonction JS qui est censé verifie l@ mail mais elle ne marche pas chez moi mais ca peut peut-etre t'aider
//Verifie l'adresse E-Mail
function verifmail(adrr){
var reg= /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
if(reg.test(ch1)==true) windows.alert(ch1," est une adresse valide");
else windows.alert(ch1," n'est pas une adresse valide");
}
Tchô!!
Elles ont des outils étonnants pour surfer sur la toile... sauf que la plupart des sites sont tout simplement inaccessible...
C'est dommage que d'un côté, on développe des outils pour rendre le web accessible a tout le monde et que de l'autre on fasse l'inverse.
La double vérification permet de soulager le serveur des requêtes inutiles tout en permettant l'accessibilité et la sécurité.
Parce que le submit désactivé, ca n'empeche pas quelqu'un d'envoyer une requete du type www.monsiteweb.fr/page_result.php?nom=bla etc.
le "page_result" et le "nom" etc étant généralement facilement récupérable dans le source.
Merci pour les réponses que vous avez donné par contre, elles m'ont été très utile !
Un petit bout de code HTML et tout est résolu sans passer par du javascript ni php...
Entrez votre email : <input type="text" name="debutmail" size="15">@<input type="text" name="milieumail" size="6" value="hotmail">.<input type="text" name="finmail" size="3" value="fr"><br />
On voit ici 3 différentes variables censées enregistrer le debut, milieu et la fin de l'email avec "@" et "." entre chaque.
On récupère tout simplement les variables ainsi :
$debutmail = $_POST['debutmail']; $milieumail = $_POST['milieumail']; $finmail = $_POST['finmail'];
Puis on les remet en forme pour obtenir notre email dans le bon format :)
$mail = $debutmail."@".$milieumail.".".$finmail ;
Zous.
J'ai bien aimé le script de Kharma, mais je ne sais pas vraiment le mettre en place dans mes codes. Ce que j'utilise présentement pour la vérification de mon champ "mail" est trop simple pas suffisamment sécuritaire. Donc j'aurais aimé utiliser le script de Kharma qui me semble beaucoup plus complet.
Je l'utilise comment ? Pardonné ma nulité dans ce domaine. Je suis concepteur infographiste et non programmeur. J'y travail, mais j'ai ce problème à régler en urgence d'où ma demande d'aide.
Merci au courageux qui voudrais bien me répondre.
- 1
- 2
function bonmail(mailteste) { var reg = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$', 'i'); return(reg.test(mailteste)); }J'ai le même problème donc je me permet de poser ma question! :)
Je travaille sur formulaire ou j'essaye de vérifier la validité de l'email qui est entré par l'utilisateur. J'utilise la fonction que tu as écrite ici mais je ne sais pas comment écrire mon "action" dans le input pour qu'il prenne en compte la fonction... Je suis débutante et ce que j'ai essayé de donne pas grand chose :D.
Voici ma ligne en question :
Merci de votre aide! :)
adresse e mail
pseaudo
code du pseaudo
nombres de jetons souhaiter (pas plus de 50)
et c tt