Login Unique

Fermé
Line - 3 juin 2009 à 12:41
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 3 juin 2009 à 19:42
Bonjour,
Je réalise un formulaire sur mon site et je dois réaliser un test avant l'enregistrement du nouvel utilisateur.
Ce test doit vérifier que le nom de login donné par l'utilisateur n'existe pas déjà dans la base de données.
Je pense faire une requête qui va chercher dans ma base tous les login pour la comparer à celui donné par l'utilisateur mais je ne sais pas trop comment réaliser cette comparaison.
Si vous avez une idée.
Merci d'avance.

12 réponses

HostOfSeraphim Messages postés 6750 Date d'inscription jeudi 2 février 2006 Statut Contributeur Dernière intervention 31 juillet 2016 1 608
3 juin 2009 à 12:44
Tu fais une requête qui sélectionne les utilisateurs qui ont un login identique à celui que la personne veut enregistrer.

Si tu as un enregistrement en retour, c'est que c'est déjà pris. Si tu n'as aucun enregistrement en retour, c'est que tu peux l'insérer.

0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
3 juin 2009 à 12:46
if(mysql_num_rows($result)!= 0)
{
while($row = mysql_fetch_array($result))
{
if($row["login"] == $_POST["txtlogin"])
{
echo "Le login est déjà utilisé";
break;
}

}
}
else
{
echo "Le login est accepté!";
cordialement
0
Bonne idée je vais essayer merci ;)
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
3 juin 2009 à 12:48
tiens moi au courant
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Est-il possible d'afficher à côté du champs Login un champ qui afficherai (comme sur de nombreux sites) en vert "Login disponible" ou en rouge "Login déjà utilisé" ???
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
3 juin 2009 à 12:52
euuh aucune idée, mais si tu vx ya un astuce: avant le echo"login deja utilisé" tu ajoutes echo"<fontcolor=green>"!!
0
Pour l'instant j'ai çà et ça ne marche pas : message d'erreur -> Parse error: parse error, unexpected T_VARIABLE in C:\Program Files\... on line 40( ligne 40 : $resultLogin = mysql_query($sqlLogin);)

//verification disponibilité du login
$sqlLogin="SELECT Login FROM utilisateurs WHERE Login='$Login'"
$resultLogin = mysql_query($sqlLogin);

If(mysql_num_rows($resultLogin)!= 0)
{
while($row = mysql_fetch_array($resultLogin))
{
if($row["Login"] == $_POST["Login"])
{
echo "Le login est déjà utilisé";
break;
}
}
}
else
{
echo "Le login est accepté!";
}
0
mya1 Messages postés 334 Date d'inscription samedi 5 juillet 2008 Statut Membre Dernière intervention 28 janvier 2013 42
3 juin 2009 à 13:12
unexpected T_VARIABLE in C:\Program Files\.......
apparement tu as utilisé une variable nommée T_VARIABLE non declarée ou truc de ce genre!!
0
Oui mais quelle variable justement..
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 juin 2009 à 15:13
Oki, pour vérifier la disponibilité d'un pseudo, tu vas effectivement devoir vérifier dans ta BD si le pseudo existe. Tu vas faire un script dispo_pseudo.php :
if ( isset( $_GET['login'] ) ) {
  $login = mysql_real_escape_string( $GET['login'] ) ;
} else if ( isset( $_POST['login'] ) ) {
  $login = mysql_real_escape_string( $GET['login'] ) ;
} else exit( -1 ); // erreur pas de pseudo fourni !

$request = "SELECT login FROM users WHERE login='$login'";

$result = mysql_query( $request );

if ( $result ) {
  if ( mysql_num_rows( $result ) !== 0 ) {
    return 1; // pseudo non disponible
  } else return 0; //pseudo disponible
} else exit( -2 ); // erreur problème avec la BD !


Ensuite pour avoir un affichage correspondant à la validité du pseudo sans avoir à recharger la page, il faut utiliser AJAX : lorsque l'utilisateur sort du champ de saisie, tu lances une requête asynchrone vers le serveur pour récupérer le script dispo_pseudo.php en lui passant en paramètre la valeur courante de la balise input.

Renseigne-toi sur AJAX si tu ne sais pas comment faire, tu as plein de bons tutos sur le net.
0
Merci bcp mais vu que je ne connais pas du tout AJAX et que je n'ai pas beaucoup de tps je ne sais pas si je vais réussir avec cette méthode...
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 juin 2009 à 17:07
Tu n'as pas vraiment besoin d'AJAX : tu peux utiliser le code pour vérifier côté serveur (après la soumission du formulaire) et renvoyer un message en couleur en fonction de la disponibilité ou non...
function verifPseudo( $login ) {
  $login = mysql_real_escape_string( $login ) ;

 $request = "SELECT login FROM users WHERE login='$login'";

  $result = mysql_query( $request );

  if ( $result ) {
    if ( mysql_num_rows( $result ) !== 0 ) {
      return 1; // pseudo non disponible
    } else return 0; //pseudo disponible
  } else return -1; // erreur problème avec la BD !
}

if ( isset( $_GET['login'] ) ) {
  $existe = verifPseudo( $_GET['login'] );
} else if ( isset( $_POST['login'] ) ) {
  $existe = verifPseudo( $_POST['login'] );
} else exit( -1 ); // erreur pas de pseudo fourni !

if ( $existe === 0 ) {
  // Le pseudo est libre
  echo '<p class="ok">Le pseudo est disponible :-)</p>';
} else if ( $existe === 1 ) {
  // Le pseudo est déjà utilisé
  echo '<p class="ko">Ce pseudo est déjà utilisé :-(</p>';
} else {
  // Erreur
  echo '<p class="erreur">Une erreur a été rencontrée lors de la vérification de la disponibilité du pseudo X-(</p>';
}
Ensuite dans ton CSS, tu définis le style des éléments de class ok, ko et erreur.
0
Merci beaucoup encore !! ca fonctionne!
Mais est-il possible d'afficher ce message juste à côté du login dans un champ au lieu de l'afficher dans une autre page?
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
3 juin 2009 à 19:42
Tu peux recharger ta page de formulaire en ajoutant le champ... Donc tu places le code que je t'ai passé dans le script qui génère le formulaire et tu modifies un peu les conditions pour n'afficher un message que quand il y en a besoin.
0