ZauSucuc
-
3 juin 2016 à 22:05
jordane45
Messages postés38244Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 4 octobre 2024
-
4 juin 2016 à 19:50
Bonsoir,
Jusque la, mon code php d'inscription fonctionnais, et la, je ne sais pas pourquoi, lors de l’inscription, si un pseudo existe déjà, l'ajout dans la Bdd se fait.
Php:
<?php
session_start();
echo "<p class=\"menu1\"><a class=\"menu\" href=\"index.php\">Accueil</a> <a class=\"menu\" href=\"membre.php\">Membre</a> <a class=\"menu\" href=\"classement.php\">Classement</a><a class=\"menu\" href=\"contact.php\">Contact</a> </p><br />";
if(isset($_SESSION['pseudo']))
{
echo "<span class=\"connexuser\" align=\"right\">Bonjour et Bienvenue " . $_SESSION['pseudo'] . " ! <a href=\"membre.php?pseudo=" . $_SESSION['pseudo'] . "\"><img src=\"Images/imagettes/bonsai.png\" border=\"0\" width=\"24\"/></a> <a href=\"shop.php\"><img src=\"Images/imagettes/cart.png\" border=\"0\" width=\"24\"/></a> <a href=\"editeProfil.php\"><img src=\"Images/imagettes/settings.png\" border=\"0\" width=\"24\"/></a> <a href=\"deconnexion.php\"><img src=\"Images/imagettes/power.png\" border=\"0\" width=\"24\"/></a> </span>";
}
else
{
echo "<span class=\"connexuser\"><a href=\"login.php\">Connexion</a> ou <a href=\"register.php\">Inscription</a> </span>";
}
?>
</div>
</header>
<main class="corps">
<div align="center">
<?php if (!empty($_SESSION['pseudo'])) {
echo "<span style='color:red;'>Pour vous inscrire, vous ne devez pas être connecté. <a href='deconnexion.php'>Deconnexion</a>";
} else { ?>
<h2>Inscription</h2>
<br/><br/>
<form method="POST" action="">
<table>
<tr>
<td align="right">
<label for="pseudo">Pseudo :</label>
</td>
<td>
<input type="text" placeholder="Votre pseudo" id="pseudo" name="pseudo"
value="<?php if (!empty($_POST['pseudo'])) { echo htmlspecialchars($_POST['pseudo']); } ?>"/>
</td>
</tr>
<tr>
<td align="right">
<label for="mail">Mail :</label>
</td>
<td>
<input type="email" placeholder="Votre mail" id="mail" name="mail"
value="<?php if (!empty($_POST['mail'])) { echo htmlspecialchars($_POST['mail']); } ?>"/>
</td>
</tr>
<tr>
<td align="right">
<label for="mail2">Confirmation du mail :</label>
</td>
<td>
<input type="email" placeholder="Confirmez votre mail" id="mail2" name="mail2"
value="<?php if (!empty($_POST['mail2'])) { echo htmlspecialchars($_POST['mail2']); } ?>"/>
</td>
</tr>
<tr>
<td align="right">
<label for="mdp">Mot de passe :</label>
</td>
<td>
<input type="password" placeholder="Votre mot de passe" id="mdp" name="mdp"/>
</td>
</tr>
<tr>
<td align="right">
<label for="mdp2">Confirmation du mot de passe :</label>
</td>
<td>
<input type="password" placeholder="Confirmez votre mdp" id="mdp2" name="mdp2"/>
</td>
</tr>
<tr>
<td></td>
<td align="center">
<br/>
<input type="submit" name="forminscription" value="Je m'inscris"/>
</td>
</tr>
</table>
</form>
<?php
}
if (!empty($_POST)) {
if (!empty($_POST['pseudo']) AND !empty($_POST['mail']) AND !empty($_POST['mail2']) AND !empty($_POST['mdp']) AND !empty($_POST['mdp2'])) {
try {
$bdd = new PDO('mysql:host=******;dbname=****;charset=utf8', '****', '*****');
$bdd->seAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die('Erreur : '.$e->getMessage());
}
$pseudo = $_POST['pseudo'];
$mail = $_POST['mail'];
$mail2 = $_POST['mail2'];
$mdp = sha1($_POST['mdp']);
$mdp2 = sha1($_POST['mdp2']);
$today = new DateTime();
$pseudolength = strlen($pseudo);
if ($pseudolength <= 50) {
if ($mail == $mail2) {
if (filter_var($mail, FILTER_VALIDATE_EMAIL)) {
$reqmail = $bdd->prepare("SELECT COUNT(*) FROM Membre WHERE email = ?");
$queryEmail = $reqmail->execute(array($mail));
if($queryEmail === false) {
die("Erreur de requête : " . print_r($reqmail->errorInfo()));
}
if ($reqmail->fetch()["c"] == 0) {
$reqpseudo = $bdd->prepare("SELECT COUNT(*) FROM Membre WHERE pseudo = ?");
$queryPseudo = $reqpseudo->execute(array($pseudo));
if($queryPseudo === false) {
die("Erreur de requête : " . print_r($reqpseudo->errorInfo()));
}
if ($reqmail->fetch()["c"] == 0) {
if ($mdp == $mdp2) {
$insertmbr = $bdd->prepare(
"INSERT INTO Membre(pseudo, email, mdp, dayI, monthI, yearsI) VALUES(?, ?, ?, ?, ?, ?)"
);
$queryResult = $insertmbr->execute(array($pseudo, $mail, $mdp, $today->format("j"), $today->format("n"), $today->format("Y")));
if($queryResult === false) {
die("Erreur de requête : " . print_r($insertmbr->errorInfo()));
}
echo "<span class=\"erreur\">Le compte ".htmlspecialchars($pseudo)." a bien été créé ! Vous pouvez désormais <a href=\"login.php\">vous connecter</a>, ou même acceder a votre profil <a href=\"membre.php?pseudo=".$pseudo."\">votre plante.</span></a>";
} else {
$erreur = "Vos mots de passes ne correspondent pas !";
}
} else {
$erreur = "Le pseudo " . htmlspecialchars($pseudo) . " est déjà utilisé !";
}
} else {
$erreur = "L'adresse mail " . htmlspecialchars($mail) . " déjà utilisée !";
}
} else {
$erreur = "L'adresse mail " . htmlspecialchars($mail) . " n'est pas valide !";
}
} else {
$erreur = "L'adresses mail " . htmlspecialchars($mail) . " ne correspondent pas !";
}
} else {
$erreur = "Votre pseudo ne doit pas dépasser 50 caractères !";
}
} else {
$erreur = "Tous les champs doivent être complétés !";
}
}
if (isset($erreur)) {
echo '<span class="erreur">' . htmlspecialchars($erreur) . "</span></p>";
}
?>
jordane45
Messages postés38244Date d'inscriptionmercredi 22 octobre 2003StatutModérateurDernière intervention 4 octobre 2024345 Modifié par jordane45 le 4/06/2016 à 19:50
Bonjour,
Déjà ... place le code de connexion à ta BDD dans un fihcier à part que tu n'auras qu'à inclure dans les pages où tu en auras besoin...
Ca t'éviter de copier/coller 50 fois la même chose ....
Par exemple :
<?php
//Fichier de connexion à la bdd : cnxBdd.php
try{
$bdd = new PDO('mysql:host=******;dbname=****;charset=utf8', '****', '*****');
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
} catch(PDOException $e) {
die('Erreur de connexion : ' . $e->getMessage());
}
et pour l'utiliser, juste coller la ligne ci-dessous dans ton fichier :
// connexion à la BDD
require_once "cnxBdd.php";
NB: Les blocs TRY/CATCH permettent d'intercepter les éventuelles erreurs. (tu peux/dois.. aussi les utiliser sur tes requêtes ! )
Une fois la connexion correctement réalisée et sans erreur.... tu peux passer à la suite de ton code.
- Récupération "propre" des variables AVANT de les utiliser
Puis pour savoir si un utilisateur existe déjà .. il faut procéder ainsi :
//Préparation de al requete
$sql = "SELECT count(*) as NB FROM Membre WHERE mail = :mail";
$datas = array(":mail"=>$mail);
//exécution de la requete :
try{
$prepare= $bdd->prepare($sql);
$prepare->execute($datas);
}catch(Exception $e){
// en cas d'erreur dans la requete
echo "Erreur : ".$e->getMessage();
echo "<br> Dans la requete :".$sql;
echo "<br> Avec les variables : ";
print_r($datas);
}
$result = $prepare->fetchAll();
if( $result[0]['NB'] == 0 ){
//la suite de ton code
NB: Tu noteras que seul la variable $sql et la variable $datas ne changent d'une requête à une autre... le reste du code (dans le try/catch) reste inchangé... tu n'as donc pas à y toucher !