Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de vérification pseudo BDD ajax

Sujet résolu
    26 mai 2010 à 11:46:49

    Bonjour tout le monde, voilà j'ai un petit problème de script Ajax, mon xhr_object.responseText me renvoie 'undefined' alors qu'il devrait me renvoyer soit 1 soit 0 et en fonction des valeurs afficher un message 1= ce pseudo n'est pas libre, 0=ce pseudo est libre. Voilà comme le code vaut beaucoup mieux que les mots le voici:

    <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
    <html>
    <head>
    <title>FORMULAIRE POUR LE CMS</title>
    <script src="jquery-1.2.1.pack.js" type="text/javascript"></script>
    <script type="text/javascript">
    
    var texte = "0";
    function lookup(entreprise) {
    		if(entreprise.length == 0) { // si le champs txte est vide
    			$('#reponse').hide(); // on cache les suggestions
    		} else { // sinon
    			$.post("req.php", {requetedemande: ""+entreprise+""}, function(data){ // on envoit la valeur du champ texte dans la variable post queryString au fichier ajax.php
    				if(data.length >0) {
    					$('#reponse').show(); // si il y a un retour, on affiche la liste
    					$('#liste_reponse').html(data); // et on remplit la liste des données
    				}
    			});
    		}
    		
    }
     
    	function fill(thisValue) { // remplir le champ texte si une suggestion est cliquée
    		$('#entreprise').val(thisValue);
    		
    }
     
    	$(document).ready( function () { // lorsque la page est entierement chargée
    	$("input#entreprise").keyup( function() { // si on presse une touche du clavier en étant dans le champ texte qui a pour id inputString
    		lookup($(this).val()) 
    	});
     
    	$("input#entreprise").blur( function() { // si le champs texte perd le focus
    		fill() 
    	});
    });
    
    
    function suggestionpseudo(texte)
         {
         document.getElementById('pseudobox').innerHTML = texte;
         }
    
    function suggestionmdp(mdp)
         {
         document.getElementById('mdpbox').innerHTML = mdp;
         }
    	
    function suggestionmdp_confirm(mdp_confirm)
         {
         document.getElementById('mdp_confirmbox').innerHTML = mdp_confirm;
         }
    	 
    function suggestionadd(mail)
         {
         document.getElementById('e-mailbox').innerHTML = mail;
         }
    
    function verifPseudo(pseudo)
         {
    	 
         if(pseudo != '')
                   {
                   if(pseudo.length<5)
                             suggestionpseudo('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court, il faut au moins 5 lettres</span>');
                   else if(pseudo.length>50)
                             suggestionpseudo('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long, il ne doit pas dépasser 50 lettres</span>');
                   texte = file('./verifpseudoclient.php?pseudo='+escape(pseudo));
                             {
              if(texte == 1)
                   suggestionpseudo('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
              else if(texte == 0)
                   suggestionpseudo('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
              else
                   suggestionpseudo(texte);
                             }
                   }
    
         }
    	 
    function verifMdp(password)
         {
         if(password != '')
                   {
                   if(password.length<5)
                             suggestionmdp('<span style="color:#cc0000"> Ce mot de passe est trop court, il faut au moins 5 lettres</span>');
                   else if(password.length>50)
                             suggestionmdp('<span style="color:#cc0000"> Ce mot de passe est trop long, il ne doit pas dépasser 50 lettres</span>');
    			   else
                   suggestionmdp('<span style="color:#1A7917">Ce mot de passe est parfait!</span>');
                  
                   }
    
         }
    	 
    function verifMdp_confirm()
          {
         if(document.getElementById('confirmation_password').value != '')
                   {
                   if(document.getElementById('confirmation_password').value != document.getElementById('password').value)
                             suggestionmdp_confirm('<span style="color:#cc0000">Il faut écrire le même mot de passe et non pas un différent.</span>');
    			   else
                   suggestionmdp_confirm('<span style="color:#1A7917">Confirmation accordée.</span>');
                  
                   }
    
         }
    			   
    			   
    function verifadd(mail)
        {
    	 if(mail != '')
                   {
    			   var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
                    if(!mail.search(regex))
                             suggestionadd('<span style="color:#1A7917">Adresse e-mail valide.</span>');
    			   else
                   suggestionadd('<span style="color:#cc0000">L\'adresse e-mail n\'est pas valide.</span>');
    			   }
    	}
    	
    	
    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);
        
         }
    </script>
    </head>
    <body>
    <center>
    <form action="req_formu_client.php">
    
    <fieldset style="width:43%;"><legend><b>Informations Personnelles</b></legend>
    
    		Nom :
    		<input type="text" size="30" value="" name="nom" id="nom"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    		Prénom :
    		<input type="text" size="30" value="" name="prenom" id="prenom"/>
    		<br /><br />
    		Adresse: 
    		<input type="text" size="30" value="" name="adresse" id="adresse"/>
    		<br /><br />
    </fieldset>
    <br/><br/>
     
     <fieldset style="width:43%;"><legend><b>Informations Relatives au travail</b></legend>
    		Pseudo :
    		<input type="text" size="30" value="" name="pseudo" id="pseudo" OnKeyUp="verifPseudo(this.value)"/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    		Mot de passe :
    		<input type="password" size="30" value="" name="password" id="password"onKeyUp="verifMdp(this.value)" /><br/>
    		<div id="pseudobox"></div>
    		<div id="mdpbox"></div>
    		<br />
    		Confirmation du Mot de passe :
    		<input type="password" size="30" value="" name="confirmation_password" id="confirmation_password" onKeyUp="verifMdp_confirm()"/>
    		<div id="mdp_confirmbox"></div>
    		<br /><br />
    		E-mail: 
    		<input type="text" size="30" value="" name="e_mail" id="e_mail" onKeyUp="verifadd(this.value)"/>&nbsp;&nbsp;&nbsp;&nbsp;
    		Fonction :
    		<input type="text" size="30" value="" name="fonction" id="fonction"/>
    		<div id="e-mailbox"></div>
    		Nom de l'entreprise:
    		<br />
    		<input type="text" size="30" value="" name="entreprise" id="entreprise" /> <br /><!--  champ texte à analyser pour les suggestions -->
    </div>
     
    <div  id="reponse" style="display: none;"> <!-- bloc contenant les eventuelles suggestions -->
    		<div  id="liste_reponse"><!-- liste contenant les suggestions -->
    			&nbsp;
    		</div>
    </div><br />
    </fieldset>
    		<br/>	
    		<input type="submit" name="envoyer"/><input type="reset" name="effacer"/>
    </div>
    
    </form>
    </center>
    </body>
    </html>
    


    Et voici le Php :
    <?
    //
    // VERIFICATION EN LIVE DU PSEUDO
    //
    
    // CONNECION SQL
    	mysql_connect("localhost", "root", "");
    	mysql_select_db("cms");
    
    // VERIFICATION
    	$resultat = mysql_query("SELECT Login FROM client WHERE Login='".$_GET["pseudo"]."'");
    	$test=mysql_num_rows($resultat);
    		if ( $test == 1) {
    		echo "1";
    		}
    		else {
    			echo "0";
    		}
    ?>
    


    Voilà merci d'avance pour votre aide. :)

    PS: les fonctions qui m'intéressent sont : suggestionpseudo, verifPseudo et file.
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2010 à 14:21:14

      J'ai été voir mais mon problème est différent du sien, lui il obtient 1 moi je n'obtient même pas 1, il ne sait même pas si mon pseudo est libre ou non..
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2010 à 14:31:10

        Je pointais en fait le lien que je lui ai donné, sur les injections SQL.
        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2010 à 14:52:35

          J'ai lu mais je vois pas trop ou ça peut m'aider. Je suis débutante donc désolé si je paraît longue à la détente. :p
          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2010 à 15:50:58

            or exit(mysql_error()); ;)
            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2010 à 15:54:10

              Aucune erreur au niveau de la requête mais merci quand même. ;)
              • Partager sur Facebook
              • Partager sur Twitter
                26 mai 2010 à 16:01:06

                Si tu affiche ton get, tu a la bonne valeur?
                • Partager sur Facebook
                • Partager sur Twitter
                  26 mai 2010 à 16:07:03

                  Oui puisque je le récupère ensuite pour l'insérer dans une BDD et ça marche. Non le soucis vient de la requête Ajax je pense. Il faudrait ptétre que je le passe en Asynchrone au lieu du synchrone car quand je fais un alert du xhr_object.responseText j'obtient mon script sql entier ou undefined.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 mai 2010 à 16:22:40

                    Je comprend pas que les gens fasse du PHP sans savoir ce qu'est une injection SQL >_<

                    Pour faire simple: Ta Page est PLUS QUE FAILLIBLE. Depuis ta page on peut lire TOUTE ta base de donnée.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 mai 2010 à 16:32:57

                      Okok, comment je peux faire pour la rendre infaillible?
                      Et puis, ça règle pas mon problème il faudrait peut être que je le règle avant de rendre mon script infaillible?

                      EDIT : oui je sais il faut que je rajoute les htmlspecial ou mysql_real_escape_string...

                      EDIT : Mon problème est résolu et il était vraiment mais vraiment bête.

                      En fait mon php était configuré de tel sorte qu'il ne prenait pas en compte le <? mais seulement <?php
                      c'était juste ça l'erreur. Merci à vous tous. Et je vais maintenant m'attarder à sécuriser ma page. :D
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 mai 2010 à 19:20:15

                        Tiller, avant de gueuler sur les injections sql, faudrait déjà que son script marche... la sécu ca viens après
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 mai 2010 à 19:31:45

                          Sauf qu'une fois le problème résolu les auteurs se tirent d'ici et ne reviennent jamais. Et désolé mais la sécu passe avant tout.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 mai 2010 à 20:43:08

                            Tu prefère avoir un code sécurisé mais qui ne marche pas quand tu code en local?? faudra m'expliquer...
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 mai 2010 à 23:50:54

                              Maintenant question, où a t'il dit qu'il est en local ?

                              Tu sais il y a ENORMEMENT de personnes qui utilise leur site pour leurs tests.

                              Ensuite, ouais je préfère quand même. Tu trouves ça intelligent de faire un code merdique qui marche, puis après de tout relire pour voir les erreurs de sécu ?

                              Tu fais la sécu, et si ça marche pas tu corriges après.

                              Et la sécu, une fois fini, c'est très facile de l'oublier. Alors qu'un bug, bah tu t'en apercevra vite.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 mai 2010 à 8:55:04

                                Ouais, si tu test en ligne chui d'accord, mais faut pas avoir peur dans ces cas la :/
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  27 mai 2010 à 9:04:03

                                  Ah nan je suis loin d'être en ligne ^^ Lol, je sais même pas si ça le sera un jour. C'est juste des essais et puis là je suis plus en apprentissage qu'autre chose.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    27 mai 2010 à 9:15:04

                                    Pour l'instant concentre toi sur le fait de faire marcher tes scripts tout en gardant on tête que pour faire un bon code, il faut le sécuriser et l'optimiser :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      27 mai 2010 à 11:54:30

                                      Okay, merci du conseil. :D
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Problème de vérification pseudo BDD ajax

                                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                      • Editeur
                                      • Markdown