<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
L'ouverture de session ne doit se faire qu'une fois par page, donc pas besoin dele rajouter une 2ème fois dans ta page.<?php session_start()?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
/* il faut demarrer la session*/
if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire
{
/* il faut que toutes les variables du formulaires existent*/
if(isset($_POST['pseudo']) && isset($_POST['mdp']) && isset($_POST['email']))
{
/*il faut que tous les champs soient renseignes*/
if($_POST['pseudo']!="" && $_POST['mdp']!="" && $_POST['email']!="")
{
/*connexion a la BDD*/
try
{
$bdd = new PDO('mysql:host=localhost;dbname=formulaire', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
/* on teste l'adresse email, si c'est bon, on continue, sinon, on affiche un message d'erreur*/
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}.[a-z]{2,4}$#", $_POST['email']))
{
/*on verifie si un membre ne possede pas deja le meme pseudo*/
$req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo');
$req->execute(array('pseudo'=> $_POST['pseudo']));
$nb_resultats_recherche_membre=$req->fetch();
if(!$nb_resultats_recherche_membre) /*si il n'y a pas de resultat*/
{
/*on crypte le mot de passe*/
$mdp = sha1($_POST['mdp']);
/*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
$req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
$req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
/* on demarre la session */
[color=#FF0000]
/* on cree les variables de session du membre qui lui serviront pendant sa session*/
$_SESSION['id']= $resultat['id'];
$_SESSION['pseudo']= $pseudo;
$_SESSION['mail']= $resultat['email'];
[/color]
header('Location: membre.php');
}
else
{
echo "Un membre possede deja ce pseudo";
}
}
else
{
echo "Votre adresse email n'est pas valide";
}
}
else
{
echo "Il faut remplir tous les champs";
}
}
else
{
echo "Une erreur s'est produite";
}
}
else
{
echo "Vous n'avez pas le droit d'acceder a cette page";
}
?>
</body>
</html>
et<?php session_start()?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
echo "page membre";
?>
<?php
echo 'id : ',$_SESSION['id'],'<br />
mail : ',$_SESSION['mail'],'<br />
<form action="logout.php" method="post">
<input type="submit" value="logout"/>
</form>';
?>
<?php
echo '<form action="index.php" method="post">
<input type="submit" value="acceuille"/>
</form>';
?>
</body>
</html>
<span style="color: #FF0000">
/* on cree les variables de session du membre qui lui serviront pendant sa session*/
$_SESSION['id']= $resultat['id'];
$_SESSION['pseudo']= $pseudo;
$_SESSION['mail']= $resultat['email'];
</span>
Ton script ne peut que générer des erreurs...
Code : Tout sélectionner
<?php session_start()?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>
<body>
<?php
/* il faut demarrer la session*/
if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire
{
/* il faut que toutes les variables du formulaires existent*/
if(isset($_POST['pseudo']) && isset($_POST['mdp']) && isset($_POST['email']))
{
/*il faut que tous les champs soient renseignes*/
if($_POST['pseudo']!="" && $_POST['mdp']!="" && $_POST['email']!="")
{
/*connexion a la BDD*/
try
{
$bdd = new PDO('mysql:host=localhost;dbname=formulaire', 'root', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
/* on teste l'adresse email, si c'est bon, on continue, sinon, on affiche un message d'erreur*/
if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}.[a-z]{2,4}$#", $_POST['email']))
{
/*on verifie si un membre ne possede pas deja le meme pseudo*/
$req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo');
$req->execute(array('pseudo'=> $_POST['pseudo']));
$nb_resultats_recherche_membre=$req->fetch();
if(!$nb_resultats_recherche_membre) /*si il n'y a pas de resultat*/
{
/*on crypte le mot de passe*/
$mdp = sha1($_POST['mdp']);
/*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
$req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
$req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
/* on demarre la session */
[color=#FF0000] /* on cree les variables de session du membre qui lui serviront pendant sa session*/
$_SESSION['id']= ???????;
$_SESSION['pseudo']= $_POST['pseudo'];
$_SESSION['mail']= $_POST['email'];[/color]
header('Location: membre.php');
}
else
{
echo "Un membre possede deja ce pseudo";
}
}
else
{
echo "Votre adresse email n'est pas valide";
}
}
else
{
echo "Il faut remplir tous les champs";
}
}
else
{
echo "Une erreur s'est produite";
}
}
else
{
echo "Vous n'avez pas le droit d'acceder a cette page";
}
?>
</body>
</html>/*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
$req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
$req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
il te suffit de récupérer l'id créé (au hasard, dans ta $_SESSION['id'] ) ...Code : Tout sélectionner
/* on cree les variables de session du membre qui lui serviront pendant sa session*/
$_SESSION['id']= [color=#FF0000]mysql_insert_id()[/color] ;
$_SESSION['pseudo']= $reponse['pseudo'];
$_SESSION['mail']= $reponse['email']; $_SESSION['id']= [color=#FF0000]mysql_insert_id()[/color] ;
1) as tu fait un print_r($_SESSION), histoire de voir ce qu'elle te renvoie?
select LAST_INSERT_ID() as lastid;
tu récupère lastid dans le jeux de résultat et c'est cette info que tu met en session (dans $_SESSION['id']). Code : Tout sélectionner
/* on cree les variables de session du membre qui lui serviront pendant sa session*/
$_SESSION['id']= $bdd->lastInsertId() ;
$_SESSION['pseudo']= $_POST['pseudo'];
$_SESSION['mail']= $_POST['email'];
c'est pour cela que je t'ai présenté la solution SQLNote:
Cette méthode peut ne pas retourner un résultat significatif suivant les drivers PDO utilisés, car la base de données utilisée peut ne pas supporter la notion de champs auto-incrémenté ou de séquences.