[RESOLU] Pseudo identique inscription

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Pseudo identique inscription

Re: Pseudo identique inscription

par Larker » 11 oct. 2014, 12:54

D'accord, c'est bon merci. :)

Re: Pseudo identique inscription

par moogli » 11 oct. 2014, 01:25

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

par Larker » 10 oct. 2014, 17:16

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

par ynx » 10 oct. 2014, 17:01

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

Pseudo identique inscription

par Larker » 10 oct. 2014, 16:07

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. ;)