IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Vérification de login dans un formulaire


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut Vérification de login dans un formulaire
    Bonjour tout le monde,
    voila je me confronte à un petit problème, je voudrai faire un formulaire dans lequel l'utilisateur sait de suite si le pseudo qu'il a choisit est encore disponible ou non.
    Pour le moment j'ai fait ceci:
    fichier formulaire.html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <body>
    <div class="cadre">
    <h1>Inscription</h1>
    <form action="verif_inscription.php" method=GET enctype="text/plain">
    <table class=formulaire>
    <tr>
    <th>Pseudo:</th><td colspan=2>
    <input name="pseudo" TYPE=TEXT /></td>
    </tr>
    <tr>
    <th>Mot de passe:</th><td colspan=2>
    <input name="passwordUtilisateur" TYPE=PASSWORD /></td>
    </tr>
    <tr>
    <th></th>
    </tr>
    <tr>
    <th>Confirmer le mot de passe:</th><td colspan=2>
    <input name="v_passwordUtilisateur" TYPE=PASSWORD /></td>
    </tr>
    <tr>
    <th>Adresse mail:</th><td colspan=2>
    <input name="adresseUtilisateur" size=50 TYPE=TEXT /></td>
    </tr>
    <tr>
    <th>Quels sont vos jeux:</th><td>
    <input type=checkbox name="jeux[]" value=bf2><img src="Images/bf2.png" class=im_g alt="image">Battlefield 2<br>			
    <input type=checkbox name="jeux[]" value=bfbc2><img src="Images/bfbc22.png" class=im_g alt="image">Battlefield Bad company 2<br>
    <input type=checkbox name="jeux[]" value=lol><img src="Images/lol2.png" class=im_g alt="image">League of Legend<br>
    <input type=checkbox name="jeux[]" value=gta_san_andreas><img src="Images/gta2.png" class=im_g alt="image">GTA San Andreas<br>
    <input type=checkbox name="jeux[]" value=combat_arms><img src="Images/combat.png" class=im_g alt="image">Combat Arms<br>
    <input type=checkbox name="jeux[]" value=autre><img src="Images/jeu.png" class=im_g alt="image">Autres jeux<br>
    </td>
    </tr>
    <tr>
    <tr>
    <td colspan=3 class="bouton">
    <input type="reset" value=Reset>
    <input type="submit" value=Valider name="send">
    </td></tr>
    </table>
    </form>
    </div>
    </body>
    Puis le fichier verif_inscription.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
     
    <HTML>
    <HEAD>
    <script language="JavaScript">
    // une fonction javascript permettant de revenir a la page precedente
    <!--
    function precedent()
    {
    document.write('<form><input type="button" value="Precedent" onclick="history.back();"></form>');
    }
    -->
    </script> 
    </HEAD>
    <BODY>
    <?php
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '');
    // on sélectionne la base
    mysql_select_db('MyDB',$db);
     
    if (isset($_GET['pseudo'])){
    $pseudo=$_GET['pseudo'];
    $sql = "SELECT pseudo from UTILISATEUR WHERE ((pseudo) like '$pseudo')";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    $nbr = mysql_num_rows($req);
    if ($nbr!=0){
    	echo "Ce pseudo existe deja, merci d'en entrer un autre.";
            echo "<script language='JavaScript'>precedent()</script> ";
    	exit();
    	}
    }
    if (isset($_GET['passwordUtilisateur'])){
    $passwordUtilisateur=$_GET['passwordUtilisateur'];
    }
    if (isset($_GET['v_passwordUtilisateur'])){
    $v_passwordUtilisateur=$_GET['v_passwordUtilisateur'];
    }
    if (isset($_GET['adresseUtilisateur'])){
    $adresseUtilisateur=$_GET['adresseUtilisateur'];
    // on ajoute l'enregistrement
    $sql = "SELECT adresseUtilisateur from UTILISATEUR WHERE ((adresseUtilisateur) like '$adresseUtilisateur')";
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    }
    $j=0;
    for ($i=0; $i<100; $i++){
    if (isset($_GET['jeux'][$i])){
    $jeux[$i]=$_GET['jeux'][$i];
    $j++;
    }
    }
    if (isset($_GET['autre_jeu'])){
    $autre_jeu=$_GET['autre_jeu'];
    }
    $domain = explode('@', $adresseUtilisateur);
     
    // dans un premier temps on regarde si l'adresse mail a la forme d'une adresse mail cad <a href="mailto:nananere@machin.quelqu">nananere@machin.quelqu</a>echose
    if(filter_var($adresseUtilisateur, FILTER_VALIDATE_EMAIL)){ 
    	// on regarde ensuite en questionnant le machin.quelquechose pour voir si il existe.
    	if (!checkdnsrr($domain[1]))
    		//si ce n'est pas le cas alors on affiche le message en dessous
    		echo "Adresse Mail invalide, merci d'inscrire une adresse e-mail valide.";
    	//si machin.quelquechose existe alors on poursuit
    	else{
    	// on regarde si la valeur recu par le bouton nommé send est Validé
    	if ($_GET['send']=="Valider") {
    		// on regarde ici si les champs sont remplis ou si il y en a des vides
    		if (($pseudo=="")||($passwordUtilisateur=="")||($v_passwordUtilisateur=="")||($adresseUtilisateur=="")){
    			//si c'est le champs pseudo qui est vide alors on envoi le message...
    			if($pseudo==""){
    				print("Veuillez saisir votre pseudo<BR>\n");
    			}
    			//et pareil pour chaque champs
    			if($passwordUtilisateur==""){
    				print("Veuillez saisir le mot de passe<BR>\n");
    			}
    			if($v_passwordUtilisateur==""){
    				print("Veuillez confirmer votre mot de passe espece de $pseudo<BR>\n");
    			}
    			if($adresseUtilisateur==""){
    				print("Veuillez saisir votre adresse e-mail<BR>\n");
    			}
    			if($j==0){
    				print("Veuillez indiquer a quels jeux vous jouez svp.<BR>\n");
    			}
    			echo "<script language='JavaScript'>precedent()</script> ";
    		}
    		else {
    		if($passwordUtilisateur!=$v_passwordUtilisateur){
    		print("Les deux mots de passe ne sont pas identique.<BR>\n");
    		echo "<script language='JavaScript'>precedent()</script> ";
    		}
    		else{
     
    		echo "Récapitulatif des informations saisies<BR>\n
    		<UL>
    		<LI>Pseudo: $pseudo</LI>
    		<LI>Mail: $adresseUtilisateur</LI>
    		<LI>Jeux: ";
    		$nombrejeux=count($jeux);
    		$nbr=0;
    		for ($i=0; $i<$nombrejeux; $i++){
    				if ($nbr==0){
    					echo "$jeux[$i]";
    					$nbr++;
    				}
    				else{
    				echo "/ $jeux[$i]";
    				}
     
    			}
    		echo "</LI>";
    		if ($autre_jeu=="")
    			echo "";
    		else
    			echo "<LI>Autres jeux: $autre_jeu</LI></UL>";
     
     
    		// on ajoute l'enregistrement
    		$sql = "INSERT INTO UTILISATEUR (pseudo,passwordUtilisateur,adresseUtilisateur,nbrjeux) VALUES ('$pseudo','$passwordUtilisateur','$adresseUtilisateur','$nombrejeux')";
     
    		// on envoie la requête
    		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
     
     
    		// on ferme la connexion à mysql
    		mysql_close();
    		}
    		}
    	}
    	else {
    	echo "<p>Vous n'avez pas demandé que les informations soient affichées.<p>";
    	}
    	}
    }
    else{
    	echo "Adress mail invalide merci de vous inscrire avec un mail valide. <br>";
    	echo "<script language='JavaScript'>precedent()</script> ";
     
    }
     
     
    ?>
     
    </BODY>
    </HTML>
    Voila donc je sais que javascript ou Ajax peuvent faire cela, mais comment les utiliser intelligemment pour ne pas faire ramer les appels à la base de données?? Car les exemples trouvés sur le net ne me parle pas vraiment ou alors ralentissent le formulaire...
    Merci d'avance

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    je voudrai faire un formulaire dans lequel l'utilisateur sait de suite si le pseudo qu'il a choisit est encore disponible
    la notion de de suite reste assez flou et dans l'état actuel de l'informatique il me semble impossible de le savoir sans que la saisie ne soit terminée.

    Une solution consiste à mettre un bouton de demande de vérification d'existence de pseudo, qui elle fait un appel allégé à la base via l'Ajax par exemple.

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut
    Oui mais enfait si de suite je veux dire lorsque le curseur quitte la zone d'ecriture pour une autre zone.
    Quand le focus change.

    Il analyse ce qui est donc maintenant ecrit dans la zone pseudo et va rechercher dans la base de donné dans la table des pseudo pour voir si celui ci est encore disponible ou non.

    Mais seul l'ajax ou le javascript me semble sont capable de faire ces appels en arriere plan.

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Donc tu peux faire une requête en ajax sur la perte de focus du champ login avec l'évènement "onblur".

    Pour ajax c'est par ici

    Sur le principe ta méthode nécessitera toujours au minimum 2 requêtes... ce sera plus gourmand en ressource que la méthode classique qui demande de changer le login après l'envoi de toutes les données du formulaire.

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Citation Envoyé par ABCIWEB
    Donc tu peux faire une requête en ajax sur la perte de focus du champ login avec l'évènement "onblur".
    ou l'événement onchange

  6. #6
    Membre averti
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Sur le principe ta méthode nécessitera toujours au minimum 2 requêtes... ce sera plus gourmand en ressource que la méthode classique qui demande de changer le login après l'envoi de toutes les données du formulaire.
    Pour quelle raison cela devrai prendre deux requêtes?
    Car une requête seule suffit pour le pseudo non? Avec ajax et onblur ou autre.
    Pour le reste des champs, je pensai faire de même par exemple sur l'adresse mail, vérifier que le mot de passe est bien sécurisé... mais cela avec l'envoi du formulaire. (J'aurai donc seulement voulu automatiser à la perte du focus si le pseudo est encore dispo... pour évité a l'utilisateur de devoir tout retaper à cause d'un pseudo indisponible.)

    Sinon dans le lien que tu m'as passé je ne suis pas sur de moi... c'est bien les listes liés qui sont ici intéressantes pour moi non?

    En tout cas déjà merci pour vos réponses

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Ben oui cela te fera bien une requête pour le login + une autre pour le reste du formulaire, soit au total 2 (je parle de requêtes vers le serveur).

    Concernant le lien que je t'ai donné, même avant les listes liées tu as déjà ce qu'il te faut pour faire une requête au serveur.

    A condition d'avoir un id = "pseudo" dans ton champ pseudo, il suffit de remplacer, dans le code de la page "index.html" du lien, la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET","ajax.php",true);
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	var url = 'ajax.php?pseudo='+document.getElementById('pseudo').value+'';
     
    	xhr.open('GET', url, true);
    pour envoyer une requête à la page ajax.php où tu pourras récupérer la variable $_GET['pseudo']

    Et donc dans cette page ajax.php tu fais ta requête en bdd avec la donnée $_GET['pseudo'] et tu fais afficher par exemple oui ou non suivant le résultat (à la place de echo "Bonjour de php" dans le code de l'exemple).

    Ensuite tu peux exploiter ce résultat. Dans l'exemple de la page "index.html" du tuto le résultat est exploité par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xhr.responseText);

  8. #8
    Membre averti
    Inscrit en
    Février 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 32
    Par défaut
    Merci pour ta réponse cela m'est très utile.

Discussions similaires

  1. Vérification de sélection dans un formulaire
    Par zazze69 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 28/01/2013, 11h57
  2. Réponses: 4
    Dernier message: 20/10/2008, 22h34
  3. vérification de champ dans un formulaire
    Par didierledid dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/12/2007, 09h26
  4. Vérification de champ dans un formulaire
    Par akara dans le forum Langage
    Réponses: 2
    Dernier message: 16/07/2007, 15h24
  5. Réponses: 4
    Dernier message: 09/01/2007, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo