afficher une alert si l'email est déja présent dans ma base

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : afficher une alert si l'email est déja présent dans ma base

Re: afficher une alert si l'email est déja présent dans ma base

par devlop78 » 06 avr. 2010, 15:53

pareil pour le moment je travail avec le moins de framework possible (bon ok j'ai utilisé shadowbox mais ça urgeait lol). En php c'est pareil je préfère faire mon propre système et faire des conneries, ça me permet de découvrir les failles, les machins les bidules. Après, en production dans une entreprise, j'utiliserai surement un framework (symfonie par exemple) mais au moins je saurai un minimum ce qu'il a dans le ventre.

Re: afficher une alert si l'email est déja présent dans ma base

par stealth35 » 06 avr. 2010, 10:00

pas soucis, mais je trouve comme toi que c'est bien aussi de montrer comment marche les choses, et ne pas être dépendant de framework :wink:

Re: afficher une alert si l'email est déja présent dans ma base

par macgawel » 06 avr. 2010, 09:10

[hs]
juste pour être tatillon

Code : Tout sélectionner

else if (window.ActiveXObject) { // IE
plutôt mettre IE < 7, parce que a partir d'IE7 il est comme les autre il utilise XMLHttpRequest. Voilou ca évite les confusions et les fausse rumeur :wink:
[/hs]
:oops:
C'est une recopie rapide d'un vieux code (pas top, d'ailleurs). Je n'ai pas pensé à le mettre à jour...

L'intérêt principal de ce code, à mon avis, est d'illustrer le fonctionnement d'AJAX. Pour une utilisation régulière, il vaut mieux utiliser une bibliothèque JS (jQuery, par exemple)

Re: afficher une alert si l'email est déja présent dans ma base

par Invité » 04 avr. 2010, 14:24

Merci a tous pour votre aide c'est top :D

Re: afficher une alert si l'email est déja présent dans ma base

par devlop78 » 03 avr. 2010, 03:14

AhAh IE se normaliserait-il avec le temps :shock: :mrgreen:

Re: afficher une alert si l'email est déja présent dans ma base

par stealth35 » 02 avr. 2010, 16:42

[hs]
juste pour être tatillon

Code : Tout sélectionner

else if (window.ActiveXObject) { // IE
plutôt mettre IE < 7, parce que a partir d'IE7 il est comme les autre il utilise XMLHttpRequest. Voilou ca évite les confusions et les fausse rumeur :wink:
[/hs]

Re: afficher une alert si l'email est déja présent dans ma base

par macgawel » 02 avr. 2010, 16:37

Merci Maximus pour ta réponse, j'ai lus le lien que tu m'a donné mais effectivement ta première solution est celle la mieu adapté à ma situation, le seul inconvéniant est qu'au même moment ou il affiche l'alert il recharge également la page en supprimant tout les renseignement du formulaire... Alors je m'dit que peu être il devrait apparaitre dans le HEAD avec mes autre alert je sais pas trop en fait :roll: mais alors là ça se complique, houlala queee d'aventure :P
Deux solutions :
1. En PHP. Si le mail existe, tu renvoie le formulaire.
Dans ce cas, par défaut tu vas effectivmeent perdre ce qui a été rempli. Solution (très approximative, hein, c'est juste pour l'idée générale) :
echo '<input name="toto" ';
if ($email_deja_existant == true) {
   echo 'value="'.$_POST['toto'];
}
echo ' />';
2. En AJAX.
Tu trouveras sur le net des bons tutos sur AJAX...
En gros :
1. Tu crées un fichier test_mail.php qui va tester l'existence du mail, et renvoyer "existe" ou "inexistant" (par exemple).
<?php
if (mail_existe($_GET['mail'])  {
   echo "oui";
}
else {
   echo "non";
}
?>
Et la page que tu appelles au départ :
<form>
<script language="Javascript">
function TestMail () {
	function GetMail(ajax) {
	if (ajax.readyState == 4) {
		err = ajax.responseText;
		if (err != 'oui')
				alert("le mail existe déjà");
		}
	}

	var mail = document.getElementById("input_mail").value;
	var xhr_object = null;
	if (window.XMLHttpRequest) { // FIREFOX
		xhr_object = new XMLHttpRequest();
	}
	else if (window.ActiveXObject) { // IE
		xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
		return (false);

	xhr_object.open("GET", "test2.php?mail="+mail, false);
	xhr_object.send(null);
	xhr_object.onreadystatechange = GetMail(xhr_object);
}

</script>
<input type="text" name="mail" id="input_mail" />
<input type="button" value="tester mail" onclick="TestMail();" />
</form>

Re: afficher une alert si l'email est déja présent dans ma base

par Nours312 » 02 avr. 2010, 16:23

Salut !...

en faite, tu as 2 solutions :
1. au rechargement de la page :
- l'internaute rempli le champ
- l'internaute valide la formulaire
- php fait les vérif
- affiche un message d'erreur au cas ou (pour l'afficher, tu peux le faire en JS ou pas ^^)

2. vérif Ajax :
- l'internaute rempli le champ
- une requete Ajax vérifi la validité du mail et en cas d'erreur affiche le message

Dans tous les cas, la première solution devra etre apliquée (vérification PHP avant d'effectuer les enregistrements) car si l'internaute désactive la JS ... bin y plus de vérif JS ^^

/* NOTA :: pour réincrémenter le formulaire aprés qu'il ai été posté ... utilises $_POST ;) */

@++

Re: afficher une alert si l'email est déja présent dans ma base

par Invité » 02 avr. 2010, 15:10

Merci Maximus pour ta réponse, j'ai lus le lien que tu m'a donné mais effectivement ta première solution est celle la mieu adapté à ma situation, le seul inconvéniant est qu'au même moment ou il affiche l'alert il recharge également la page en supprimant tout les renseignement du formulaire... Alors je m'dit que peu être il devrait apparaitre dans le HEAD avec mes autre alert je sais pas trop en fait :roll: mais alors là ça se complique, houlala queee d'aventure :P

Re: afficher une alert si l'email est déja présent dans ma base

par MaximusCMS » 02 avr. 2010, 12:44

salut

une idée comme ça, car souvent on cherche à faire du complexe alors que l'on peut faire du simple

pour quoi ne pas afficher un message de ce type après avoir effectué le contrôle via PHP ?

Code : Tout sélectionner

echo "<script type='text/javascript'>alert('Mon message d\'alerte !');</script>";
sinon plus complexe, mais un contrôle ajax en temps réel serait réalisable par exemple, un truc tout simple à mettre en place
http://www.editeurjavascript.com/script ... _3_543.php

afficher une alert si l'email est déja présent dans ma base

par Invité » 02 avr. 2010, 12:36

Bonjour a tous, alors pour commencer mon niveau en Javascript est proche du néant j'avous que j'ai le bonnet d'âne du Javascripteur!!!
Alors je bidouille mais forcément j'arrive à rien... Voila mon problème, j'ai repris un script de confirmation de champs d'un formulaire alors j'lai remis a ma sauce et ca marche nickel, sauf que j'ai une fonction PHP qui vérifie la présence de l'email dans ma base de donnée pour savoir si cet email y est déja présent et j'aimerais qu'il affiche un message type alert() s'il y est déja, alors jvous montre mon code mais rigolé pas cest du bricolage :)
Et ma question finalement serait : "que dois je mettre dans le ELSE de ma fonction PHP pour que mon javascript s'affiche en alert() ?
<script language="javascript" type="text/javascript">
<!--
function validation() 
{ 	
        var email = document.FORMULAIRE.email.value; 
		
			if (email.search(/^[A-Za-z0-9._-]+[^._-]@[A-Za-z0-9._-]+([A-Za-z0-9]+[^._-])?[.-]+[A-Za-z0-9]{2,4}$/) == -1)
			{ 
			alert ('entrez une adresse Email valide'); 
			document.FORMULAIRE.email.focus(); 
			return false; 
			}
			if(document.FORMULAIRE.password.value == "") 
			{ 
			alert ('veuillez entrer votre mot de pass'); 
			document.FORMULAIRE.password.focus(); 
			return false; 
			}
			if(document.FORMULAIRE.password_confirmation.value == "") 
			{ 
			alert ('veuillez confirmer votre mot de pass'); 
			document.FORMULAIRE.password_confirmation.focus(); 
			return false;
			}
			if(document.FORMULAIRE.password_confirmation.value != document.FORMULAIRE.password.value) 
			{ 
			alert ('le mot de passe doit être identique dans les deux champs'); 
			document.FORMULAIRE.password_confirmation.focus(); 
			return false;
			}
			if(document.FORMULAIRE.conditions_vente.checked == "") 
			{ 
			alert ('veuillez accepter nos conditions générales de vente'); 
			document.FORMULAIRE.conditions_vente.focus(); 
			return false; 
			}
			if(document.FORMULAIRE.email_existe.value == "")
			{ 
			alert ('Un compte MABOUILLE.COM existe déjà avec cet Email');
			document.FORMULAIRE.email_existe.focus();
			return false;
			}
else {return true;}
}
// -->
</script> 	  

Et là un extrais de ma fameuse fonction qui permet de dire, reagarde dans la base si ya l'email et l'inscrire ou sinon s'il y est pas alors afficher le javascript
if ($req == true)
            {
					// Vos identifiants
					$_SESSION['email'] = $email;
					$_SESSION['password'] = $password;
					$_SESSION['password_confirmation'] = $password_confirmation;
					
					$_SESSION['newsletter'] = $newsletter;
					$_SESSION['conditions_vente'] = $conditions_vente;

            	header("Location: ../../templates/pages/etape6_recapitulatif.php");
				exit();
	
			}
			else
			{
			///////////Si lemail est deja dans la base afficher un message java/////////
				?>
				<input class="infos" type="hidden" name="email_existe" />
				<?php
				
			}