Aller au contenu

Vérification du pseudo


Sujets conseillés

Posté

bonjour,

j'ai un petit problème dans mon code d'inscription .... en effet on peu changer le mot de passe en sachant le pseudo alors que je ne voulais juste avoir d'un pseudo dans la table

merci de me répondre

ps: le code

$nbpseudo = mysql_result(mysql_query("SELECT pseudo FROM membres WHERE pseudo = '".$pseudo."'"), 0);
elseif($nbpseudo != 0)
//si c bon on enchaine ! est ce qu'il n'est pas déjà dans la base ?
{
echo "Ce pseudo est déjà utilisé !";
}

si vous avez besoin d'autre information comme tout le code php merci de me le dire

Posté

Bonjour,

Essaie ceci :

$sql = "select pseudo from membres where pseudo = '".$pseudo."'";
$requete = mysql_query($sql);
if (mysql_num_rows($requete)==0)
{
echo"Pseudo déjà pris!";
}
else
{
//on fait le traitement
}

Posté

cela marche

merci d'avoir répondu rapidement

par contre avec le code que vous m'avez donner j'ai l'erreur

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/users/t/toutetrien/inscription.php on line 165


//Si le mail a été envoyé on peut enregistrer le membre
mail($email,$sujet , $message ,"from: $monemail");



echo ' un mail de confirmation va venir dans votre boite mail ';
}
elseif (mysql_num_rows($requete) == 0)//ligne 165
{
echo"Pseudo déjà pris!";
}
elseif (!empty($pseudo))
{
echo "Vous avez oubliez de remplir le champ Pseudo !";
}
elseif (strlen($_POST['pseudo']) < 3 || strlen($_POST['pseudo']) > 35)
{
echo "votre pseudo a soit moin de 3 caratère ou soit plus de 35 caractère";
}

Posté

Ce que je t'ai donné doit fonctionner. Vérifie la requête pour voir si elle est bonne et qu'elle ne retourne pas une erreur ou alors, prends ceci et dis moi le résultat :

$sql = "select pseudo from membres where pseudo = '".$pseudo."'";
$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());
if (mysql_num_rows($requete)==0)
{
echo"Pseudo déjà pris!";
}
else
{
//on fait le traitement
}

Posté

ben en faite il marche mais avan il y a sa

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/users/t/toutetrien/inscription.php on line 165

Pseudo déjà pris!

Posté

Si ca plante avant, tu ne peux pas savoir si mon code fonctionne.

A la ligne 165, il y a quoi? Ceci => "elseif (mysql_num_rows($requete) == 0)"

Mais la requete est bien au dessus? Le IF est où?

Soit plus explicite.

Portekoi

Posté

la ligne 165 est bien

elseif (mysql_num_rows($requete)==0)

je vous donne tout le code de la page

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<?php
$menu = include("menu.php");
?>

<head>
<title>Inscription</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" media="screen" title="Simple" href="fichier.css" />
</head>

<body>
<div id="menu">
<?php
$menu
?>
</div>

<div id="corps">
<div align="center">Inscription</div><br><br>
<?php
if (!isset($_POST['pseudo']))
{
?>
<form action="inscription.php" method="post" enctype="multipart/form-data">
Votre pseudo : <input type="text" name="pseudo"> <br> <font size="2"><i>(entre 3 et 35 caractères)</i></font><br>
Votre mot de passe : <input type="password" name="pass"><br><font size="2"><i>(plus de 4 caractères)</i></font><br>
Confirmer votre mot de passe : <input type="password" name="confirmpass"><br>
Votre email : <input type="text" name="email"><br><font size="2"><i>(Veuillez entrer une adresse email valide, sinon vous ne pourrez pas valider votre insription)</i></font><br><br>

Nom : <input type="text" name="nom"><br>
Prenom :<input type="text" name="prenom"><br>
Adresse :<input type="text" name="adresse"><br>
Code Postale :<input type="text" name="cp"><br>
Ville :<input type="text" name="ville"><br><br>

Votre date de naissance : <input type="text" size="2" name="j">/<input type="text" size="2" name="m">/<input type="text" size="4" name="a"><br>

votre sexe <input type="text" name="sexe" /><br/>
Votre pays : <input type="text" name="pays"><br>
Selectionnez vos centres dinterets :<br/>
Musique<input type="checkbox" name="option[]" value="musique" /><br/>
Jeux vidéos : <input type="checkbox" name="option[]" value="jeux_video"/><br>
Informatique : <input type="checkbox" name="option[]" value="informatique"/><br>
Cinéma :<input type="checkbox" name="option[]" value="cinema"/><br>
Lecture : <input type="checkbox" name="option[]" value="lecture"/><br>
Sports : <input type="checkbox" name="option[]" value="sports"/><br>
Autres : <input type="checkbox" name="option[]" value="autre"/><br>
Si autre précisez : <input type="text" name="precision"/><br><br>
<u>forum</u><br/>
site ou blog a vous <input type="text" name="url"/> <br/>
votre avatar<input type="file" name="avatar" /> pas plus de 1 Mo( en construction) ne marche pas.<br/>
<input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
votre signature <textarea rows="2" cols="40" name="signature"></textarea><br/><br/>
Quelques mots pour vous décrire :<br>
<textarea rows="5" cols="40" name="description"></textarea><br><br>
<input type="submit" value="S'inscrire !"></form>
<?
}
else
{
if(isset($pseudo) or isset($pass)or isset($email) or isset($nom) or isset($prenom) or isset($j) or isset($m) or isset($a) or isset($pays) or isset($description) or isset($sexe))
//pseudo est null puis si <3 ou >35
{
mysql_connect("sql.redby.info","*****","*****");
mysql_select_db("toutetrien3");



$date = $_POST['j'].','.$_POST['m'].','.$_POST['a'];
$date = htmlspecialchars($date);
$pseudo= htmlspecialchars($_POST['pseudo']);
$pass= htmlspecialchars($_POST['pass']);
$email= htmlspecialchars($_POST['email']);
$nom= htmlspecialchars($_POST['nom']);
$prenom= htmlspecialchars($_POST['prenom']);
$pays= htmlspecialchars($_POST['pays']);
$url= htmlspecialchars($_POST['url']);
$avatar= htmlspecialchars($_POST['avatar']);
$signature= htmlspecialchars($_POST['signature']);
$adresse= htmlspecialchars($_POST['adresse']);
$cp= htmlspecialchars($_POST['cp']);
$ville= htmlspecialchars($_POST['ville']);
$date= htmlspecialchars($_POST['date']);
$precision= htmlspecialchars($_POST['precision']);
$description= htmlspecialchars($_POST['description']);
$autre= htmlspecialchars($_POST['autre']);
$sport= htmlspecialchars($_POST['sport']);
$lecture= htmlspecialchars($_POST['lecture']);
$cinema= htmlspecialchars($_POST['cinema']);
$informatique= htmlspecialchars($_POST['informatique']);
$jeuxvideos= htmlspecialchars($_POST['jeuxvideos']);
$musique= htmlspecialchars($_POST['musique']);
$sexe= htmlspecialchars($_POST['sexe']);
$signature = nl2br($signature);
$signature = addslashes($signature);
$sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";
$requete = mysql_query($sql)or die("Erreur Mysql =>" . mysql_error());

///Il n'y a pas eu d'erreur
$_POST['pass'] = md5(sha1($_POST['pass']));
/// addslashes pour la sécurité, sur chacune des valeurs postées
foreach($_POST AS $champ => $valeur)
{
$_POST[$champ] = addslashes($valeur);
}

mysql_query("INSERT INTO membres(pseudo, pass, email, nom, prenom, date, pays, description, sexe,)
VALUES(
'',
'".$pseudo."',
'".$pass."',
'',
'".$email."',
'".$nom."',
'".$prenom."',
'".$pays."',
'".$url."',
'".$avatar."',
'".$signature."',
'',
'',
'',
'',
'',
'".$adresse."',
'".$cp."',
'".$ville."',
'".$date."',
'".$precision."',
'".$description."',
'".$autre."',
'".$sport."',
'".$lecture."',
'".$cinema."',
'".$informatique."',
'".$jeuxvideos."',
'".$musique."',
'".$sexe."',
''
)")or die (mysql_error());
$monemail = 'GITOUNY_AT_voila.fr';
$sujet = 'bienvenu sur le site schats';

$message = '
Bonjour '.$pseudo.'
Vous venez de vous inscrire sur "schats" et pour valider votre inscription, vous devez cliquer sur le lien suivant : [url="http://toutetrien.redby.info/confirmation.php?pseudo='.$pseudo.'"]http://toutetrien.redby.info/confirmation....36;pseudo.'[/url]

votre pseudo: '.$pseudo.'
votre mot de passe '.$pass.'


ceci est un mail robot merci de ne pas répondre

';

//Si le mail a été envoyé on peut enregistrer le membre
mail($email,$sujet , $message ,"from: $monemail");



echo ' un mail de confirmation va venir dans votre boite mail ';
}
elseif (mysql_num_rows($requete)==0)
{
echo"Pseudo déjà pris!";
}
elseif (!empty($pseudo))
{
echo "Vous avez oubliez de remplir le champ Pseudo !";
}
elseif (strlen($_POST['pseudo']) < 3 || strlen($_POST['pseudo']) > 35)
{
echo "votre pseudo a soit moin de 3 caratère ou soit plus de 35 caractère";
}


elseif(!empty($pass))// on regarde le passe
{
echo "Vous avez oubliez d'inscrire un mot de passe !";
}
elseif ($pass != $confirmpass )
{
echo "Votre mot de passe est different de votre confirmation !";
}
elseif(strlen($pass)<4)
{
echo "Votre mot de passe est inferieur a 4 caractères !";
}
elseif(!empty($email))
{
echo "Vous avez oubliez d'entrer un email ! Vous ne pourrez pas valider votre inscription !";
}
elseif(!empty($nom))
{
echo "Veuillez entrer votre nom !";
}
elseif(!empty($prenom))
{
echo" Veuillez entrer votre prenom !";
}
elseif(!empty($date))
{
echo" Veillez mettre votre date de naissance !";
}
elseif(!empty($pays))
{
echo"Veillez indiquer votre pays s'il vous plait.";
}
elseif(!empty($description))
{
echo"Veillez rentrer une description. ";
}
elseif(!empty($sexe))
{
echo "Veillez mettre votre sexe.";
}
else
{
}
}
?></div>
</body>
</html>

Posté

Remplace ceci :

$sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";
$requete = mysql_query($sql)or die("Erreur Mysql =>" . mysql_error());

Par cela

$sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";
$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());
echo mysql_num_rows($requete);

Posté

euh non j'ai remonter le code donc c'est toujours la même ligne le code ....

c'est peu être en haut mais je ne voie pas :s

Posté

la requete dans le elsif donc

elseif($sql = "SELECT pseudo FROM membres WHERE pseudo ='".$pseudo."'";
$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());
mysql_num_rows($requete)==0)
{
echo"Pseudo déjà pris!";
}

Posté

Euh non... le mieux serait de récupérer ton $pseudo avant ton if, de faire la requete et ensuite de tester la valeur car je ne pense pas que puisse fonctionner ainsi...

Donc en gros :

requete puis if elseif elseif etc...

Posté

Et bien tu fais ta requete tout en haut avec le $pseudo ou alors tu casses tes if.

If{

}

If{

}

If{

}

If{

}

Je peux pas faire plus. Tu as la solution.

Portekoi

Posté (modifié)

ok je vais réfléchir

je l'ai mit tout en haut et ca me fait comme si sa blocais a cause du mot de passe

$sql = "SELECT pseudo FROM membres WHERE pseudo ='".$_POST['pseudo']."'";
$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());

Modifié par schats
Posté

Bonsoir,

As tu déjà vérifié directement dans PHPMyAdmin que ta requète marchait ? C'est la première étape pour débuguer une requète SQL...

Pour celà :

$sql = "SELECT pseudo FROM membres WHERE pseudo ='".$_POST['pseudo']."'";
echo $sql;
$requete = mysql_query($sql) or die("Erreur Mysql =>" . mysql_error());

Tu affiches la page... Tu auras peut-être une erreur SQL, mais dans tous les cas tu auras la requète SQL affichée.

Tu la copie soigneusement, et dans MyAdmin, onglet SQL d'une table, tu testes la requète que tu as copiée.

Deux solutions alors :

  • Il y a une erreur... Dans ce cas là, ne cherche pas plus loin, résouds l'erreur qui t'es donnée
  • Il n'y a pas d'erreur, dans ce cas là, il y a un souci de connexion à la base

Essaye ça, et donne le résultat de la manip' ici ;)

Posté (modifié)

alors selon ta manip ca a marcher sa ma donner ce que je voulais donner la requettre puis tester sur mysql.... et ca marche pas d'erreur mince de desespère

problème pour se connecter a la table je ne pense pas car j'ai pris les code données par l'hebergeur et donc ..... qui marche .... de toute ces celle utiliser pour toute mes autre page

Modifié par schats
Posté

Re,

Ecoute, c'est simple : Tu as une succession de if et dans le premier, tu fais ta requete et tu tests le résultat dans un autre if DONC :

1 - Fais ta requete en premier en utilisant mysql_db_query() s'il n'y pas d'autre requete avant en DEHORS des ifs donc AVANT.

2 - Tu fais tes IF.

On va pas non plus te faire ton site.

La programmation, c'est pas un puzzle ou l'on reprend des bouts de code à droite et à gauche. Il faut aussi que tu comprennes ce que tu fais sinon, tu n'y arriveras pas donc, va sur le site du Zero ou php debutant, commence par le début, et reviens quand tu auras compris à peu près ce que tu fais.

Portekoi

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...