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

AJAX Discussion :

Vérifier l'unicité de l'identifiant en affichant une fenêtre d'alerte avec AJAX


Sujet :

AJAX

  1. #1
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut Vérifier l'unicité de l'identifiant en affichant une fenêtre d'alerte avec AJAX
    Bonjour,
    Bon voilà mon problème, sur mon formulaire d'inscription quand quelqu'un entre un identifiant déjà existant dans la base de donnée un petit message s'affiche en dessous du champ Identifiant "Cet identifiant est déjà utilisé" mais si l'utilisateur ignore ce message et clique sur s'inscrire, le formulaire s'envoie dans la base de donnée sans bloquage de l'inscription,alors vu que je suis débutante en AJAX j'aimeraisbien savoir comment bloquer l'inscription et cela en affichant une fenêtre d'alerte contenant le message suivant: "Cet identifiant est déjà utilisé, veuillez en choisir un autre!" Voila mon code AJAX:
    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
    function writediv(texte) 
    { 
    document.getElementById('pseudobox').innerHTML = texte; 
    } 
     
    function verifPseudo(Identifiant) 
    { 
    if(Identifiant != '') 
    { 
    if(Identifiant.length<4)
    { 
    writediv('<span style="color:#cc0000"><b>'+Identifiant+' :</b> ce Identifiant est trop court</span>');
    Identifiant.select()
    }
    else if(Identifiant.length>20) 
    writediv('<span style="color:#cc0000"><b>'+Identifiant+' :</b> ce Identifiant est trop long</span>'); 
    else if(texte = file('verifpseudo.php?Identifiant='+escape(Identifiant))) 
    { 
    if(texte == 1) 
    alert("Desolé cet identifiant existe déjà"); 
    else if(texte == 2) 
    writediv('<span style="color:#1A7917"><b>'+Identifiant+' :</b> ce Identifiant est libre</span>'); 
    else 
    writediv(texte); 
    } 
    } 
     
    } 
     
    function file(fichier) 
    { 
    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", fichier, false); 
    xhr_object.send(null); 
    if(xhr_object.readyState == 4) return(xhr_object.responseText); 
    else return(false); 
    }
    Et le code 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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>Document sans titre</title> 
    </head> 
     
    <body><?php 
    // 
    // VERIFICATION EN LIVE DU PSEUDO 
    // 
     
    // CONNECION SQL 
    $serveur = 'localhost';
    $user = 'root';
    $passwd = '';
    $base='inscription';
    $connect = mysqli_connect($serveur,$user,$passwd,$base);
     
     
    // VERIFICATION 
    $result = mysqli_query($connect,"SELECT Identifiant FROM login WHERE Identifiant='".$_GET["Identifiant"]."'"); 
    if(mysqli_num_rows($result)>=1) 
    	echo "Desolé cet identifiant existe déjà";
    else 
    	echo "Cet identifiant est disponible"; 
    ?> 
     
     
     
    </body> 
    </html>

  2. #2
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Bonjour,

    Attention donner des informations aux pirates c'est mal.
    Car il peuvent trouver les identifiants qui existent déjà avec ce script.

    De plus aucun contrôle fiable ne se fait en ajax, il faut refaire tous les contrôles en php et renvoyer une erreur à ton script ajax.

    Bon sinon pour ton problème tu n'as qu'a dire à ton script PHP de renvoyer du 1 et du 2 suivant les cas car c'est ce que tu test en javascript :
    php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(mysqli_num_rows($result)>=1) 
    	echo 1;
    else 
    	echo 2;
    qui correspondra aux tests là :

    if(texte == 1)
    alert("Desolé cet identifiant existe déjà");
    else if(texte == 2)
    writediv('<span style="color:#1A7917"><b>'+Identifiant+' :</b> ce Identifiant est libre</span>');

  3. #3
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    J'ai déjà essayé mais ça ne marchetoujours pas, çane bloque pas l'inscription!

  4. #4
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Ah oui mais dans ton code tu n'as pas tout donné.

    La fonction verifPseudo est testé quelque par ? mais elle ne renvoie aucun retour.

    Dans les cas ou tu bloques l'inscription il faudrait que tu return false;




    tu pourrais aussi rajouter dans ton code un test sur xhr_object.status ==200

  5. #5
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Voila mon code verifpseudo
    Code html : 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
    <!DOCTYPE> 
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <title>Document sans titre</title> 
    </head> 
     
    <body><?php 
    // 
    // VERIFICATION EN LIVE DU PSEUDO 
    // 
     
    // CONNECION SQL 
    $serveur = 'localhost';
    $user = 'root';
    $passwd = '';
    $base='inscription';
    $connect = mysqli_connect($serveur,$user,$passwd,$base);
     
     
    // VERIFICATION 
    $result = mysqli_query($connect,"SELECT Identifiant FROM login WHERE Identifiant='".$_GET["Identifiant"]."'"); 
    if(mysqli_num_rows($result)>=1) { 
            return false;
            echo "Desolé cet identifiant existe déjà";
    }
    else {
            echo "Cet identifiant est disponible"; 
    }
    ?> 
     
     
     
    </body> 
    </html>
    tu pourrais aussi rajouter dans ton code un test sur xhr_object.status ==200??? J'ai pas compris!

  6. #6
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    je parlais de ta fonction javascript verifPseudo pas du fichier php.

    Voici en gros ce que je te propose :

    code PHP
    Code php : 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
    <?php 
    // 
    // VERIFICATION EN LIVE DU PSEUDO 
    // 
     
    // CONNECION SQL 
    $serveur = 'localhost';
    $user = 'root';
    $passwd = '';
    $base='inscription';
    $connect = mysqli_connect($serveur,$user,$passwd,$base);
     
    // VERIFICATION 
    $result = mysqli_query($connect,"SELECT Identifiant FROM login WHERE Identifiant='".$_GET["Identifiant"]."'"); 
    if(mysqli_num_rows($result)>=1) 
    	echo 1;
    else 
    	echo 2;


    et voici le code Javascript
    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
    function writediv(texte) 
    { 
      document.getElementById('pseudobox').innerHTML = texte; 
    } 
     
    function verifPseudo(Identifiant) 
    { 
      if(Identifiant != '') { 
        if(Identifiant.length<4){ 
          writediv('<span style="color:#cc0000"><b>'+Identifiant+' :</b> ce Identifiant est trop court</span>');
          Identifiant.select()
        } else if(Identifiant.length>20) 
          writediv('<span style="color:#cc0000"><b>'+Identifiant+' :</b> ce Identifiant est trop long</span>'); 
        else if(texte = file('verifpseudo.php?Identifiant='+escape(Identifiant))) { 
          if(texte == 1) {
            alert("Desolé cet identifiant existe déjà");
            return(false); 
          } else if(texte == 2) {
            writediv('<span style="color:#1A7917"><b>'+Identifiant+' :</b> ce Identifiant est libre</span>');
            return(true); 
          } else {
            writediv(texte);
            return(false);
          } 
        } 
      }  
    } 
     
    function file(fichier) { 
      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", fichier, false); 
      xhr_object.send(null); 
     
      if ( xhr_object.status ==200) 
        return(xhr_object.responseText); 
      else 
        return(false); 
    }
    Et quand tu fais ton appel à la fonction javascript verifPseudo tu test le retour de cette fonction et tu bloque les actions sur FALSE

  7. #7
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Je viens d'essayer ton code ça ne marche toujours pas.
    Est ce que je peux bloquer l'inscription en affichant une fenêtre pop up avec javascript.
    Si oui comment faire j'ai déjà essayé alert mais je ne sais pas pourquoi ça ne marche pas

  8. #8
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    A quel moment est fait l'inscription car le code que tu as fourni n'en fait mention nulle part ?


    Par exemple si dans ton code PHP tu as ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // VERIFICATION 
    $result = mysqli_query($connect,"SELECT Identifiant FROM login WHERE Identifiant='".$_GET["Identifiant"]."'"); 
    if(mysqli_num_rows($result)>=1) 
    	echo 1;
    else 
    	echo 2;
     
    //INSERTION
    mysqli_query($connect,"INSERT INTO login (Identifiant) VALUES ='".$_GET["Identifiant"]."';");
    L'insertion seras faite à chaque fois quelque soit le résultat précédent.

    Il faut par exemple mettre l'insertion dans le else qui contient le echo 2 comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    // VERIFICATION 
    $result = mysqli_query($connect,"SELECT Identifiant FROM login WHERE Identifiant='".$_GET["Identifiant"]."'"); 
    if(mysqli_num_rows($result)>=1) 
    	echo 1;
    else {
    	echo 2;
     
            //INSERTION
            mysqli_query($connect,"INSERT INTO login (Identifiant) VALUES ('".$_GET["Identifiant"]."');"); 
    }

  9. #9
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Pourquoi l'insertion??
    Je voudrais juste que la fonction alerte marche
    Je ne sais pas pourquoi elle ne marche pas sur mon script
    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
    function writediv(texte) 
    { 
    document.getElementById('pseudobox').innerHTML = texte; 
    } 
     
    function verifPseudo(Identifiant) 
    { 
    if(Identifiant != '') 
    { 
    if(Identifiant.length<4)
    { 
    writediv('<span style="color:#cc0000"><b>'+Identifiant+' :</b> ce Identifiant est trop court</span>');
    Identifiant.select()
    }
    else if(Identifiant.length>20) 
    writediv('<span style="color:#cc0000"><b>'+Identifiant+' :</b> ce Identifiant est trop long</span>'); 
    else if(texte = file('verifpseudo.php?Identifiant='+escape(Identifiant))) 
    { 
    if(texte == 1) 
    alert("Desolé cet identifiant existe déjà"); 
    else if(texte == 2) 
    writediv('<span style="color:#1A7917"><b>'+Identifiant+' :</b> ce Identifiant est libre</span>'); 
    else 
    writediv(texte); 
    } 
    } 
     
    } 
     
    function file(fichier) 
    { 
    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", fichier, false); 
    xhr_object.send(null); 
    if(xhr_object.readyState == 4) return(xhr_object.responseText); 
    else return(false); 
    }

  10. #10
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    la fonction javascript fonctionne : https://jsfiddle.net/3toe1ctL/2/

  11. #11
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Je ne comprend pas pourquoi ça ne marche pas sur mon site

  12. #12
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Dans la fonction file essaie de commenter ton code et de mettre le bout de code que j'ai mis pour valider le fonctionnement du javascript.

  13. #13
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Voila maintenant ça marche mais juste quand je simule l'appel xhr

  14. #14
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    On avance ça veux dire que la partie Javascript est bonne.

    Essai de mettre un

    en haut de ton fichier php

  15. #15
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Est ce que je peux remplacer ce code par un autre pour qu'il parcourt toute la liste des Identifiants dans la base de donnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function file(fichier) { 
      //on simule l'appel XHR
      identifiant = fichier.substring(fichier.indexOf("=",25)+1);
      console.log(identifiant);
      if (identifiant == 'fatema'){
      	return('1');
      } else {
      	return('2');
      }

  16. #16
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Oui tu dois remettre ton code original pour tester enfin celui avec xhr.status = 200

  17. #17
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Ouii j'ai assayé avec le code original mais ça ne marche pas

  18. #18
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Tu as bien mis un en haut de ton fichier php appelé par l'AJAX ?

    Quand tu regardes dans les outils de développeur (F12), dans l'onglet réseau, filtre XHR, tu cliques sur ton appel et tu regarde l'onglet réponse.
    il te renvoi quoi ?

  19. #19
    Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2017
    Messages : 15
    Points : 3
    Points
    3
    Par défaut
    Nom : Capture.PNG
Affichages : 449
Taille : 33,1 Ko Je fais quoi maintenant??

  20. #20
    Membre actif
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Points : 263
    Points
    263
    Par défaut
    Maintenant qu'il est ouvert il enregistre ton activité il faut tenter de faire une insertion d'un pseudo déjà existant par exemple et l'appel à ton fichier PHP devrait apparaitre dans la liste et tu pourras cliquer dessus.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2013] Afficher une fenêtre d'alerte à l'issue de 10 minutes
    Par Kirkan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/11/2016, 16h28
  2. Afficher une Fenêtre MDI à partir d'une DLL
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 06/12/2005, 16h58
  3. Afficher une fenêtre d'informations qui donne l'impression de se détâcher
    Par jean_bobi dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 25/09/2005, 15h31
  4. Réponses: 1
    Dernier message: 16/02/2005, 12h04
  5. Afficher une buffer de pixel avec Direct3D
    Par Black_Daimond dans le forum DirectX
    Réponses: 4
    Dernier message: 27/12/2002, 22h18

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