Page 1 sur 1

Pseudo identique inscription

Posté : 10 oct. 2014, 16:07
par Larker
Bonjour à tous,

Je viens de faire un formulaire d'inscription et il fonctionne bien mais je voudrais savoir comment faire pour vérifier si un pseudo existe déjà et si c'est le cas empêcher l'envoie du formulaire.
if($_POST['motdepasse'] == $_POST['motdepasseconfirm']) {
		if(!empty($_POST['pseudo']) && !empty($_POST['motdepasse']) && !empty($_POST['email'])) {
				$pseudo= $_POST['pseudo'];
				$email = $_POST['email'];
				$motdepasse = sha1($_POST['motdepasse']);
				$addcompte = $bdd->prepare("INSERT INTO `membres` VALUES ('', ?, ?, ?, ?)") or die(mysql_error());
				$addcompte->execute(array($pseudo, $motdepasse, $email, '1')) or die(mysql_error());
			echo '<p>Inscription réussie !</p>';
			}	
			else { echo '<p>Veuillez remplir tous les champs !</p>';}
				
	}
Merci d'avance à ceux qui pourront m'aider. ;)

Re: Pseudo identique inscription

Posté : 10 oct. 2014, 17:01
par ynx
Salut,

Deux solutions possibles :
- soit tu modifies dans ta bdd le champ pseudo pour lui ajouter la contrainte UNIQUE, PDO te retourneras donc une erreur lors de l’exécution de la requête update avec un pseudo existant
- soit tu exécutes une première requête SELECT id FROM membres WHERE pseudo = ? et tu vérifies si celle-ci te retourne un résultat ou non pour déterminer l'existence du pseudo

Au passage, la fonction mysql_error() appartient à l'API Mysql et n'a rien à voir avec PDO. Si tu veux traiter les erreurs PDO, modifie ton code comme ceci :
if ($addcompte = $bdd->prepare("INSERT INTO `membres` VALUES ('', ?, ?, ?, ?)") === FALSE) {
    // erreur de syntaxe sql
    var_dump($addcompte->errorInfo());
}
if ($addcompte->execute(array($pseudo, $motdepasse, $email, '1')) === FALSE) {
    // erreur lors de l'execution de la requête
    var_dump($addcompte->errorInfo());
}
Bonne journée

Re: Pseudo identique inscription

Posté : 10 oct. 2014, 17:16
par Larker
Salut,

Merci de ton aide ynx, j'ai changé mon index pour le champ pseudo en unique.

Par contre y a t-il moyen que ça affiche simplement un "Pseudo déjà utilisé" pour la personne qui s'inscrit ?

Parce que pour le moment ça m'affiche une page blanche quand j'envoie le formulaire.

Re: Pseudo identique inscription

Posté : 11 oct. 2014, 01:25
par moogli
salut,


soit tu attends que la requête ce vautre (second if) et c'est la que tu affiche ton mot de passe.
Soit tu fais un simple select count(1) from membres where pseudo = $pseudo

attention tu mélanges tout
or die(mysql_error()); ceci n'as rien a faire ici, tu utilise pdo pas l'extension mysql ;)

donc soit tu utilises la méthode de ynx soit un try / catch (voirun mixte des deux certaines méthodes ne lève pas forcément d’exception en cas d'erreur.

@+

Re: Pseudo identique inscription

Posté : 11 oct. 2014, 12:54
par Larker
D'accord, c'est bon merci. :)