Depuis quelques jours j'essaie de créer un espace membre en suivant le cours "TP: Créer un espace membres" de Mathieu Nebra. J'ai réussi d'inscrire un seul membre qui apparaît bien dans la bdd, mais lorsque je veux inscrire une deuxième personne je reste bloqué sur le message: "Le pseudo est déjà utilisé !" alors que le pseudo est différent. Je ne vois pas l'erreur. Quelqu'un peut m'aider? Merci
voici le code:
inscription1.php :
<!DOCTYPE html>
<html>
<head>
<title>INSCRIPTION</title>
<meta charset="rtf-8" />
<link href="style.css" rel="stylesheet" />
</head>
<body>
<div align="center">
<h1>Bienvenue dans mon Site !</h1>
<h2>Inscription</h2>
<form method="post" action="inscription1_post.php">
<table>
<tr>
<td><label for="text">Votre Pseudo :</label> </td>
<td><input type="text" id ="pseudo" name="pseudo" /></td>
</tr>
<tr>
<td><label for="password">Votre Mot de passe :</label> </td>
<td><input type="password" id ="pass" name="pass" /></td>
</tr>
<tr>
<td><label for="password">Reconfirmer votre mot de passe :</label> </td>
<td><input type="password" id ="verif_pass" name="verif_pass" /></td>
</tr>
<tr>
<td><label for="email">Votre Mail :</label> </td>
<td><input type="email" id ="mail" name="mail" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Je m'inscris" /></td>
</tr>
</table>
</form>
</div>
</body>
</html>
inscription1_post.php :
<?php
//on ouvre la Base de Données
try
{
$bdd = new PDO ('mysql:host=localhost;dbname=test;charset=utf8', 'root' ,'', array(PDO::ATTR_ERRMODE =>PDO::ERRMODE_EXCEPTION));
}//si on ne la troue pas on envoie un message d'erreur et on arrete le script
catch(Exception $e)
{
die('Erreur:'. $e->getMessage());
}
// on recherche une variable qui nous dira si pseudo est libre
$libre = true;
// si tous les variables existent...
if(isset($_POST['pseudo']) AND isset($_POST['pass']) AND isset($_POST['mail']))
{
//on recherche dans la BDD tous les pseudos de la table membres..
$req = $bdd ->query('SELECT pseudo FROM membres');
// on stock les donnees dans une variable dont que la variable n'est pas lu en entier
while($donnees = $req-> fetch())
{
//si le pseudo recupere est different des membre dans la bdd
if ($_POST['pseudo'] = !$donnees)
{
//alors on entre le nouveau pseudo dans la bdd
$libre=true;
//si le password est le meme que le confirme..
if($_POST['pass'] == $_POST['verif_pass'])
{
//...et que l'adresse mail est valide..
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))
<?php
try
{
$bdd= new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE=> PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e)
{
die('Erreur :'. $e->getMessage());
}
//si les variables pseudo et pass existe..
if (isset($_POST['pseudo']) AND isset($_POST['pass']))
{ //on recherche dans la bdd le id pseudo pass, dont le pseudo...
$req=$bdd->prepare('SELECT id, pseudo, pass FROM membres WHERE pseudo= :pseudo');
//...correspond à celui envoyé par la variable $_POST['pseudo']
$req->execute (array('pseudo'=>$pseudo));
//on stocke le resultat dans une variable
$resultat=$req->fetch();
//on verifie si le mdp correspond à celui dans trouve dans la bdd
$SiPasswordCorrect=password_verify($_POST['pass'], $resultat['pass']);
//si on ne trouve pas des resultat dans la recherche..
if(!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}
else
{
if($isPasswordCorrect)
{
session_start();
//si le bouton 'auto-connect' a été coché pendant la connexion..
if(isset($_POST['auto_connect']))
{
setcookie('pseudo', $_SESSION['pseudo'], time()+ 30*24*3600,null,null,false,true);
setcookie('pass_hache', $_SESSION['pass_hache'], time()+ 30*24*3600,null,null,false,true);
include("test_cookie1.php");
}
else
{
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = $_resultat['id'];
}
echo 'Vous êtes connecté !';
header("location:blog1.php");
}
// sinon mdp ne correspond pas
else
{
echo 'Mauvais Identifiant ou mot de passe !';
}
}
}
?>
test_cookie1.php :
<?php
// si il existe des cookies de connexion auto ..
if(isset($_COOKIE['pseudo']) AND isset($_COOKIE['pass_hache']))
{
// on ouvre la base de donnée..
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8','root','',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
// ou, si on ne la trouve pas, on affiche un message d'erreur et on arrete le script.
catch(Exception $e)
{
die('Erreur' .$e->getMessage());
}
// on enregistre l'id des membres dont le pseudo et le mot de passe..
$req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = :pseudo AND pass = :pass');
// ..est le même que celui récupéré dans les cookies
$req->execute(array('pseudo' => $_COOKIE['pseudo'], 'pass' => $_COOKIE['pass_hache']));
//on stock dans une variable le resultat de la recherche (TRUE ou FALSE)
$reponse = $req->fetch();
// si on trouve un resultat qui correspond ..
if($reponse == TRUE)
{
// ..on creer un pseudo et un mot de passe à la session grace au info des cookies recupérés.
$_SESSION['pseudo'] = $_COOKIE['pseudo'];
$_SESSION['pass_hache'] = $_COOKIE['pass_hache'];
}
$req->closeCursor();
}
// sinon on ne fait rien
?>
<?php
session_start();
//suppresion des variables de la session
$_SESSION = array();
session_destroy();
//Suppression des cookies..
setcookie('pseudo', '');
setcookie('pass_hache', '');
?>
Les doublons nuisent au bon fonctionnement du forum et sont donc interdits. Si vous vous êtes trompé de section, il suffit de signaler votre sujet au staff pour qu'il le déplace au bon endroit.