Probleme de verif pseudo ( php )

Bonjour, je suis en train de faire ma fonction ajax qui verifie si le pseudo existe deja dans ma base de donnée lors de l'inscription
le soucis c'est que j'arrive a le contourner simplement en rajoutant un espace a la fin du pseudo

exemple : (rudak est deja dans ma base)
je cherche 'rudak' ca me dit ==> il est déja.
je cherche 'rudak ' ca me dit ==> il n'y est pas.

voila ma requete php

<?php
if(isset($_GET['action']))
{
	include('conexionbase.php');
	if($_GET['action']=="check_pseudo")
	{
		$sql="SELECT * FROM mabaseWHERE pseudo='".$_GET['pseudo']."'";
		$result=mysql_query($sql);

		if(mysql_num_rows($result)){echo "oui";}
		else{echo "non";}
	}
	mysql_close();
}
?>


on doit surement pouvoir régler ce ptit souci..?
il me semble qu'il y a une fonction native en php qui suprime les espaces en fin ou debut de string ca pourrai etre la solution qu'en pensez vous ?

4 réponses

  1. Utilise la fonction trim() qui supprimes les espaces blancs (espaces, tabulations, retours à la ligne, ...) en début et en fin de chaine.
    1. question => rudak, le 7 mar 2010 à 17:40:41
      reponse => avion-f16, le 7 mar 2010 à 17:41:43

      super merci : ^^
      1. jai changé ma requete j'ai rajouté trim() comme ca :

        $sql="SELECT * FROM angothmembres WHERE pseudo='".trim($_GET['pseudo'])."'";

        par contre ca fonctionne "a moitié" mais ca doit venir d'autre part.
        'rudak' ==> existe
        'rudak ' ==> n'existe pas
        ' rudak' ==> existe
        ' rudak ' ==> existe

        y a juste un ptit soucis avec pseudo+espace

        voila mes fonctions javascript

        function request(callback)
        {
        	var pseudo = encodeURIComponent(document.getElementById('pseudo').value);
        	var xhr = getXMLHttpRequest();
        		
        		xhr.onreadystatechange = function()
        		{
        			if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0))
        			{
        				callback(xhr.responseText);
        				document.getElementById('loader').style.display = "none";
        			}
        		}
        	
        	xhr.open("GET", "ajax.php?action=check_pseudo&pseudo="+pseudo, true);
        	xhr.send(null);
        }
        		
        function readData(sData)
        {
        	pseudo = document.getElementById('pseudo').value;
        	
        	if (sData == "oui") // si le retour de la requete = oui => alors le pseudo existe deja
        	{
        	document.getElementById('txt_pseudo').innerHTML = " <b>"+pseudo+"</b> est déja pris !";
        	document.getElementById('pseudo_no').style.display = "inline";
        	}
        	else
        	{
                            document.getElementById('txt_pseudo').innerHTML = " <b>"+pseudo+"</b> ok!";
        	    document.getElementById('pseudo_ok').style.display = "inline";
        	}
        	setTimeout("request("+readData+")",1000);
        }
        1. voila jai resolu mon souci en rajoutant une fonction trim sur mon javascript

          je montre coment jai fait ca pourra peut etre servir a quelqun un jour... :



          var regExpBeginning = /^\s+/;
          var regExpEnd = /\s+$/;

          function trim(aString)
          {
          return aString.replace(regExpBeginning, "").replace(regExpEnd, "");
          }


          function request(callback)
          {
          var pseudo = encodeURIComponent(trim(document.getElementById('pseudo').value));
          etc etc...

          voila ca marche impec merci pour le coup de main