Mot interdit dans un imput

Fermé
Chris - 10 sept. 2008 à 12:27
 Chris - 26 sept. 2008 à 15:26
Bonjour,

Je cherche en vain une fonction js me permettant d'interdire certaines adresses mail dans l'input d'un formulaire.
J'ai cherché une fonction interdisant certain mot pour l'adapter mais je ne trouve rien de fonctionnel.

Y a t'il possibilité d'interdire certains mots dans un input pour empêcher la validation de certaines adresses et de ce fait l'envoi du formulaire? (comme interdire les mots hotmail ou msn après le @ )?
Merci d'avance
Amicalement,
Chris
A voir également:

11 réponses

Tout d'abord merci pour ta réponse.

Le formulaire que j'utilise est un cgi_bin fourni par mon hébergeur, donc je n'y ai pas accès.
Je peux uniquement ajouter des fonctions javascript sur ma page, ce que j'ai d'ailleurs fait pour vérifier la forme de l'adresse mail et si tous les champs étaient bien remplis et empêcher l'envoi du formulaire si ces conditions n'étaient pas le cas.
Je souhaite donc trouver un script à ajouter me permettant d'interdire l'écriture de certains mots (en l'occurrence hotmail, msn ...) dans le champ email et empêcher l'envoi du formulaire si ces adresses sont indiquées.
Amicalement,
Chris
0
Serait il possible d'insérer cette fonction dans la vérification de l'adresse mail avec un (hotmail|msn) par exemple?
Toutes mes tentatives sont infructueuses. Soit le formulaire ne fonctionne plus, soit toutes les adresses sont invalides. :(
J'avoue que je n'y connais strictement rien.

Mon code fonctionnel se présente ainsi actuellement:

function valideEmail(adr1) {
adresse1 = adr1;
if(adresse1 && !estVide(adresse1)) {
if(adresse1.length > 100)
erreurs.push('Cette adresse est trop longue');

var atom = "[!#-'*+\\-\\/-9=?A-Z^-~]+";
var regex_adresse =
new RegExp("^"+atom+"(\\."+atom+")*@"+atom+"(\\."+atom+")*\\.[a-zA-Z]{2,4}$");
if(adresse1.search(regex_adresse) != 0)
erreurs.push("- L'adresse Email ne semble valide.");
}
else if(champsObligatoires["E-mail"])
erreurs.push("- L'adresse Email est obligatoire.");
}

function confirmeEmail(adresse2) {
if(adresse2) {
if(adresse1 && (adresse2 != adresse1))
erreurs.push("- Les deux adresses Email ne correspondent pas.");
}
else if(champsObligatoires["email2"])
erreurs.push("- La confirmation de l'adresse Email est obligatoire.");
}

Merci d'avance.
0
Pas d'idée ou ce n'est pas faisable? :(
0
Bonjour et merci beaucoup pour ton intervention manelsousse.
Mais lorsque j'ajoute ton script au mien actuel, mon formulaire ne fonctionne plus du tout. :(

Je n'ai indiqué ici que la partie de mon javascript vérifiant la validité de l'adresse mail.
Mais mon script actuel est bien plus long et sa fonction se nomme ainsi:
function valideForm(f)


Dans mon formulaire la fonction de vérification se présente ainsi:

<script type="text/javascript" src="js/verification_formulaire.js"></script>
<form method="post" action="http://perso0.free.fr/cgi-bin/form2mail.pl" name="formulaire" onsubmit="return valideForm(this);">

.....

<input value="Effacer" type="reset"> <input value="Envoyer" type="submit">
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Je suis vraiment nul en programmation et j'ai beau tourner dans tout les sens je n'arrive à rien.

Dans mon script donné plus haut, j'ai essayé en ajoutant ceci:

var mots_interdits =
new Array("hotmail","msn","yahoo");
if(adresse1.search(mots_interdits) == -1)
erreurs.push("- Adresse Email interdite.");

Ce qui donne dans la partie du script vérifiant l'adresse mail:
......
*/

function valideEmail(adr1) {
adresse1 = adr1;
if(adresse1 && !estVide(adresse1)) {
if(adresse1.length > 100)
erreurs.push('Cette adresse est trop longue');

var mots_interdits =
new Array("hotmail","msn","yahoo");
if(adresse1.search(mots_interdits) == -1)
erreurs.push("- Adresse Email interdite.");

var atom = "[!#-'*+\\-\\/-9=?A-Z^-~]+";
var regex_adresse =
new RegExp("^"+atom+"(\\."+atom+")*@"+atom+"(\\."+atom+")*\\.[a-zA-Z]{2,4}$");
if(adresse1.search(regex_adresse) != 0)
erreurs.push("- L'adresse Email ne semble valide.");
}
else if(champsObligatoires["E-mail"])
erreurs.push("- L'adresse Email est obligatoire.");
}

function confirmeEmail(adresse2) {
if(adresse2) {
if(adresse1 && (adresse2 != adresse1))
erreurs.push("- Les deux adresses Email ne correspondent pas.");
}
else if(champsObligatoires["email2"])
erreurs.push("- La confirmation de l'adresse Email est obligatoire.");
}

/*
.......

mais ça ne fonctionne toujours pas.
Plus aucune adresse ne passent. :(

Quelqu'un pourrait il m'aider s'il vous plait?
Merci
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 sept. 2008 à 10:35
Salut,

il faut que tu parcours l'array pour comparer je t'ai fait ça avec une methode un peu différente.
Il y a surement une autre methode avec les Regex, mais difficile à mettre en œuvre avec une liste de mots à vérifier

Tu peux rajouter autant de if que tu as d'input à verifier

<html>
<script language="javascript" type="text/javascript" >
<!--
function valideForm(form_test){	
	var mots_interdits =new Array("hotmail","msn","yahoo"); 
	this.form_test=form_test;
	if(form_test.nom.value == "")  {
		alert("Veuillez entrer votre nom");
		form_test.nom.focus();
	return false;
	}
	if(form_test.email.value == "")  {
		alert("Veuillez entrer votre adresse email");
		form_test.email.focus();
	return false;
	}
	var exp=new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*@[\\w\\-]+(\\.[\\w\\-]+)*\\.[\\w\\-]{2,}$", "i");
	if(form_test.email.value !="" && !exp.test(form_test.email.value)){
		alert("Adresse email non valide ");
		form_test.email.focus();
	return false;
	}
	if(form_test.email.value !="" && exp.test(form_test.email.value)){
		//si format d'adresse valide verif si autorise
		var email=form_test.email.value;
		var hote_cty=new Array(); 
		hote_cty=email.split("@"); //decoupage adresse par rapport a @
		//hote_cty[1] de la forme yahoo.fr
		var hote=new Array();
		hote=hote_cty[1].split("."); //separation par rapport au point 
		//hote[0]  serra le nom de l'hote genre yahoo
		//alert ("Hote= "+hote[0]);
		//il faut parcourir l'array des interdits
		for(i=0;i<mots_interdits.length;i++){
			if(hote[0] == mots_interdits[i]){
				//si on retouve hote parmi l'array
				alert("Adresse email non autorisée ");
				form_test.email.focus();
				return false;
			}
		}
	}
	return true;
}
//-->
</script>
<form name="formulaire" method="post" action="form2mail.pl"  onsubmit="return valideForm(this);">
Nom:<input type="text" name="nom" id="nom" value=""><br />
Email:<input type="text" name="email" id="email" value="">
<br /><br />
 <input type="submit" name="envoyer" value="Envoyer" >
<input type="reset" name="effacer" value="Effacer" >
</html>


Chez moi cet exemple fonctionne

@lain
-1
Bonjour et merci beaucoup alain_42 ;)

Le souci c'est que je ne sais pas comment adapter ton code au mien :(
Je rappelle que je n'y connais absolument rien en programmation, je bidouille un tout petit peu (vraiment un tout petit peu) en suivant des exemples et ça s'arrête là malheureusement.

Comment puis je faire?
Merci d'avance
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
17 sept. 2008 à 14:02
Salut,

tu mets ma partie fonction Javascript dans ton fichier .js, à la place de celui existant, ensuite tu rajoutes des
if(.....){

}

pour chacun des champs que tu veux verifier comme pour le "nom" mon l'exemple

et tu adaptes la partie html comme dans l'exemple

si tu n'y connais vraiement rien en prog ce serra dur ?
-1
pardon pour le retard de réponse et merci à toi

Le soucis c'est que ton code ne correspond pas au mien, il ne vérifie pas que la confirmation de l'adresse mail corresponde bien au premier champ de l'adresse mail fournie.
Y a t'il un moyen de rajouter cette fonction?

J'ai essayé en conservant le mien sans le modifier et en plaçant dans l'entete de ma page html:

<!--
function valideDomaine(f) {
var interdit = /\W(msn|hotmail)\.\w+$/i;
var pos = f.email.value.search(interdit);
if(pos > 0)
alert("Les adresses en "+f.email.value.substr(pos+1)+" sont refusées.");
return pos < 0;
}
-->

et en appelant cette nouvelle fonction de cette façon:

<form method="post" action="...cgi-bin/form2mail.pl" name="formulaire" onsubmit="return valideDomaine(this) && valideForm(this)";>

mais ça ne va pas, mon formulaire est envoyé sans plus aucune vérification (que les champs obligatoires soient remplis ou non, que l'adresse et sa confirmation soient correctes, interdites ou non).

Une idée?
Merci d'avance. :)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2008 à 12:24
dans mon code:

if(form_test.email.value !="" && exp.test(form_test.email.value)){


"emai"l correspond au name ="....." de <input type="text" name="email" ...

donc si ça ne correspond pas chez toi change "email" dans la ligne du if par ce que tu as dans le name= de <input correspondant à ton champ d'adresse mail du formulaire
-1
Je me suis mal expliqué ...

Dans mon formulaire j'ai deux champs email (Adresse email - Confirmation de l'adresse email)
Mon code de vérification actuel vérifie que les deux adresses renseignées sont bien semblables, si ce n'est pas le cas, un message d'alerte le signale (les deux adresses ne correspondent pas).

function confirmeEmail(adresse2) {
if(adresse2) {
if(adresse1 && (adresse2 != adresse1))
erreurs.push("- Les deux adresses Email ne correspondent pas.");
}
else if(champsObligatoires["email2"])
erreurs.push("- La confirmation de l'adresse Email est obligatoire.");
}

Le code que tu me donnes n'a pas cette fonction, je me trompe?
Est il possible de l'ajouter?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 sept. 2008 à 14:10
pour rajouter cette fonction :

en partant du principe que tes deux champs mail ont comme name=

email

email2



<script language="javascript" type="text/javascript" >
<!--
function valideForm(form_test){	
	var mots_interdits =new Array("hotmail","msn","yahoo"); 
	this.form_test=form_test;
	if(form_test.nom.value == "")  {
		alert("Veuillez entrer votre nom");
		form_test.nom.focus();
	return false;
	}
	if(form_test.email.value == "")  {
		alert("Veuillez entrer votre adresse email");
		form_test.email.focus();
	return false;
	}
	var exp=new RegExp("^[\\w\\-]+(\\.[\\w\\-]+)*@[\\w\\-]+(\\.[\\w\\-]+)*\\.[\\w\\-]{2,}$", "i");
	if(form_test.email.value !="" && !exp.test(form_test.email.value)){
		alert("Adresse email non valide ");
		form_test.email.focus();
	return false;
	}
	if(form_test.email1.value !="" && exp.test(form_test.email.value)){
		//si format d'adresse valide verif si autorise
		var email=form_test.emai.value;
		var hote_cty=new Array(); 
		hote_cty=email.split("@"); //decoupage adresse par rapport a @
		//hote_cty[1] de la forme yahoo.fr
		var hote=new Array();
		hote=hote_cty[1].split("."); //separation par rapport au point 
		//hote[0]  serra le nom de l'hote genre yahoo
		//alert ("Hote= "+hote[0]);
		//il faut parcourir l'array des interdits
		for(i=0;i<mots_interdits.length;i++){
			if(hote[0] == mots_interdits[i]){
				//si on retouve hote parmi l'array
				alert("Adresse email non autorisée ");
				form_test.email.focus();
				return false;
			}
		}
	}
	if(form_test.email2.value !="") {
if(form_test.email.value !="" && (form_test.email.value != form_test.email2.value))
erreurs.push("- Les deux adresses Email ne correspondent pas.");
}
else if(champsObligatoires["email2"])
erreurs.push("- La confirmation de l'adresse Email est obligatoire.");
} 
	return true;
}
//-->
</script>
-1
Merci beaucoup, problème résolu :))
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
10 sept. 2008 à 14:31
Regardes du côté des REGEX
-1
manelsousse Messages postés 59 Date d'inscription lundi 10 mars 2008 Statut Membre Dernière intervention 18 août 2009
12 sept. 2008 à 18:06
utilser
function VerificationEmail(elm)
{
if (elm.value.indexOf("msn") == "-1" &&
elm.value.indexOf("hotmail") == "-1" &&
elm.value != "")
return true;

return false;
}

function controler()
if (VerificationEmail(document.form1.email) == false)
{
alert("Email non Valide.");
document.form1.email.focus();
return false;
}
et dans la creation de ton formulaire essaye
<form action="" method="post" name="form1" onSubmit="return controler()">
-1