Vérifier sir le pseudo n'est pas déjà prit
- Accueil
- Forum
- Programmation
- PHP
- Vérifier sir le pseudo n'est pas déjà prit
AlexisParder Le 29 octobre 2018 à 15:46 (Édité le 25 janvier 2019 à 17:54)
PrimFX Le 29 octobre 2018 à 17:09 (Édité le 29 octobre 2018 à 17:38)
<?php
// On suppose que $pseudo contient le pseudo du nouvel inscrit sécurisé (avec htmlspecialchars, strip_tags, etc.) et $bdd la connexion PDO à ta base de données
$pseudoDejaPris = $bdd->prepare('SELECT 1 FROM membres WHERE pseudo = ?');
$pseudoDejaPris->execute(array($pseudo));
$pseudoDejaPris = $pseudoDejaPris->fetchColumn(); // Ici, soit le pseudo est déjà pris et $pseudoDejaPris contient 1 (du "SELECT 1"), soit il est libre et $pseudoDejaPris contient false
// Il n'y a donc plus qu'à tester la variable et afficher une erreur si le pseudo est déjà pris
if (!$pseudoDejaPris) {
// On continue l'inscription
} else {
$erreur = "Ce pseudo est déjà utilisé";
}
En espérant que ça puisse t'aider 😉
Comme dit, n'hésite pas à envoyer ton code d'inscription (même une fois le code ci-dessus ajouté) si tu rencontres un soucis, histoire d'avoir un contexte autour du code que je t'ai ici proposé !
PrimFX Le 29 octobre 2018 à 16:22 (Édité le 1 janvier 1970 à 01:00)
Aurais-tu une partie du code à nous passer histoire de pouvoir me nous situer ? Ou au moins un screenshot de l'architecture de la table des utilisateurs de ta base de données, histoire de pouvoir te proposer une requête correspondante 😉
L'idée serait simplement de récupérer dans ta base de données un membre avec le pseudo que le nouvel utilisateur a déjà indiqué -> s'il y a un résultat, c'est que le pseudo est déjà pris, sinon, il est libre 😀
AlexisParder Le 29 octobre 2018 à 17:02 (Édité le 1 janvier 1970 à 01:00)
PrimFX Le 29 octobre 2018 à 17:09 (Édité le 29 octobre 2018 à 17:38)
<?php
// On suppose que $pseudo contient le pseudo du nouvel inscrit sécurisé (avec htmlspecialchars, strip_tags, etc.) et $bdd la connexion PDO à ta base de données
$pseudoDejaPris = $bdd->prepare('SELECT 1 FROM membres WHERE pseudo = ?');
$pseudoDejaPris->execute(array($pseudo));
$pseudoDejaPris = $pseudoDejaPris->fetchColumn(); // Ici, soit le pseudo est déjà pris et $pseudoDejaPris contient 1 (du "SELECT 1"), soit il est libre et $pseudoDejaPris contient false
// Il n'y a donc plus qu'à tester la variable et afficher une erreur si le pseudo est déjà pris
if (!$pseudoDejaPris) {
// On continue l'inscription
} else {
$erreur = "Ce pseudo est déjà utilisé";
}
En espérant que ça puisse t'aider 😉
Comme dit, n'hésite pas à envoyer ton code d'inscription (même une fois le code ci-dessus ajouté) si tu rencontres un soucis, histoire d'avoir un contexte autour du code que je t'ai ici proposé !
AlexisParder Le 29 octobre 2018 à 17:19 (Édité le 1 janvier 1970 à 01:00)
<?php
$bdd = new PDO('mysql:host=localhost;dbname=id7558902_espace_membre', 'id7558902_apollon4', 'apollon16');
//$bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', '');
if(isset($_POST['forminscription'])) {
$pseudo = htmlspecialchars($_POST['pseudo']);
$mail = htmlspecialchars($_POST['mail']);
$mail2 = htmlspecialchars($_POST['mail2']);
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
if(!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
$pseudolength = strlen($pseudo);
if($pseudolength <= 255) {
if($mail == $mail2) {
if(filter_var($mail, FILTER_VALIDATE_EMAIL)) {
$reqmail = $bdd->prepare("SELECT * FROM membres WHERE mail = ?");
$reqmail->execute(array($mail));
$mailexist = $reqmail->rowCount();
if($mailexist == 0) {
if($mdp == $mdp2) {
$longueurKey = 15;
$key = "";
for($i=1;$i<$longueurKey;$i++) {
$key .= mt_rand(0,9);
}
$insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse, confirmkey) VALUES(?, ?, ?, ?)");
$insertmbr->execute(array($pseudo, $mail, $mdp, $key));
$header="MIME-Version: 1.0\r\n";
$header.='From:"apollon4"<maCandi.apollon4@outlook.fr>'."\n";
$header.='Content-Type:text/html; charset="uft-8"'."\n";
$header.='Content-Transfer-Encoding: 8bit';
$message='
<html>
<body>
<div align="center">
<a href="https://apollon4-fr.000webhostapp.com/comptes/confirmation.php?pseudo='.urlencode($pseudo).'&key='.$key.'">Confirmez votre compte</a>
</div>
</body>
</html>
';
mail($mail, "Confirmation de compte", $message, $header);
$valide ="Votre compte a bien été créé ! <a href=\"connexion.php\">Me connecter</a>";
} else {
$erreur = "Vos mots de passes ne correspondent pas !";
}
} else {
$erreur = "Adresse mail déjà utilisée !";
}
} else {
$erreur = "Votre adresse mail n'est pas valide !";
}
} else {
$erreur = "Vos adresses mail ne correspondent pas !";
}
} else {
$erreur = "Votre pseudo ne doit pas dépasser 255 caractères !";
}
} else {
$erreur = "Tous les champs doivent être complétés !";
}
}
?>
AlexisParder Le 29 octobre 2018 à 17:27 (Édité le 1 janvier 1970 à 01:00)
$pseudoDejaPris = $bdd->prepare('SELECT 1 FROM membres WHERE pseudo = ?');
$pseudoDejaPris->execute(array($pseudo));
$pseudoDejaPris = $pseudoExiste->fetchColumn();
la variable $pseudoExiste n'est pas définie. PrimFX Le 29 octobre 2018 à 17:40 (Édité le 1 janvier 1970 à 01:00)
Pour le placement dans le code, tu peux faire ça dans n'importe quelle autre condition imbriquée, par exemple après la vérification de l'existence du mail (tu remarqueras d'ailleurs que le principe est exactement le même 😉 ).
AlexisParder Le 29 octobre 2018 à 17:45 (Édité le 1 janvier 1970 à 01:00)
AlexisParder Le 29 octobre 2018 à 17:49 (Édité le 1 janvier 1970 à 01:00)
PrimFX Le 29 octobre 2018 à 17:58 (Édité le 1 janvier 1970 à 01:00)