Accueil
Forums
Turoriaux
Inscription
Connexion
Fil RSS
Bienvenue invité !
Jeudi 08 Janvier 2009
Vous êtes ici: Crea-paradise.com > Tutoriaux > Conception web > PHP > Créer un espace membre > Connexion / Début d'une page membre

Connexion / Début d'une page membre



Informations sur le tutorial
Image du tutorial Auteur : [Toxik] Commentaires : 3
Note : Note: 3/5 Vu : 2687
Date : 26/08/2007 à 15h54 Actions : Commenter et noter ce tutorial
Dernière modification : 16/09/2007 à 19h14


Si tout c'est bien déroulé jusqu'à présent, le membre est inscrit. Il ne lui reste donc plus qu'à se connecter ! Bien sûr on va lui offrir sa page, contenant uniquement ses informations.

Question
En gros, on génère une page unique ?


Exactement ! Il va avoir sa propre page. Allez, codons !

________________


Tout d'abord, se connecter. Comment procéder ? C'est simple : il suffit de vérifier tout d'abord si le pseudo existe dans la base de données, puis de vérifier si le mot de passe entré correspond bien au pseudo entré. Si c'est la cas, on est connecté, sinon, on affiche une erreur. Mais avant, on vérifie si les tous les champs sont remplis et on rends le HTML inoffensif (le code que je vais vous donner va s'insérer dans la page "connexion.php", qui est accessible via le formulaire de l'index  ) :


Code PHP:
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);


Rapellez vous de htmlspecialchars qui rends le HTML inoffensif !
Ensuite, on va vérifier si le pseudo entré existe bien. Mais d'abord, se connecter à votre BDD (grâce à "mysql_connect.php") :

Code PHP:
include("connect_mysql.php");
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo = '" . $pseudo . "'");
$ech = mysql_fetch_array($sql);


Pas d'explications dessus, c'est très simple. Maintenant qu'on a enregistré le nombre de pseudos qui sont égaux au pseudo entré par le visiteur, on vérifie que ce nombre est égal à 1 :

Code PHP:
if ($ech['nb_pseudo'] == 1)
{


Pas trop dur non plus  . La suite :  Vérifier que le mot de passe entré correspond au pseudo entré :

Code PHP:
$sql_1 = mysql_query("SELECT * FROM membres WHERE pseudo = '" .$pseudo. "'");
$ech_1 = mysql_fetch_array($sql_1);
if ($mot_passe == $ech_1['mot_passe'])
{


"$mot_passe" étant le mot de passe entré par le visiteur rendu inoffensif et "$ech_1['mot_passe']" étant le mot de passe de la BDD correspondant au pseudo entré par le visiteur.
Bon bah maintenant, c'est bon. Il a entré un pseudo valide et le mot de passe correspondant, il est donc connecté 

Question
Hein ? Mais comment on fait ça ? Y'a une fonction ?


Pas du tout  . En fait, on va utiliser les Sessions ! On va créer une variable "$_SESSION['logged']" qui vaut 1 si le visiteur est connecté et 0 si il ne l'est pas. Donc voici la suite du code :

Code PHP:
$_SESSION['logged'] = 1;
$_SESSION['pseudo'] = $pseudo;
$_SESSION['id'] = $ech_1['id'];


Explication :
"$_SESSION['logged']" vaut 1. Le membre est donc connecté.
"$_SESSION['pseudo']" est égal au pseudo du visiteur (ça nous servira pour la page membres).
"$_SESSION['id']" est égal à l'id du visiteur (ça peux toujours servir ).

Maintenant, vous avez plusieurs choix :
  • Vous affichez un message pour dire au visiteur qu'il est bien connecté(e)
  • Vous le redirigez vers la page membre


Je vous conseille d'utiliser la deuxième méthode qui est beaucoup plus simple pour le visiteur (et pour vous  ). Si vous voulez afficher un message, vous faites :

Code PHP:
echo 'Vous êtes maintenant connecté(e)';


Mais la redirection est beaucoup mieux. Alors, comme c'est du Javascript, on va devoir fermer les balises "<?php  ?>". Donc voici la fin du morceau de code que je vous ai donné précédemment ainsi que le script Javascript :

Code PHP:
?>
<script language="JavaScript">
document.location.href="membre.php";
</script>
<?
}


Si vous voulez changer le nom de votre page, c'est simple, modifier le "membre.php" par le nom de votre page  . Et maintenant, la fermeture des conditions  . Allez, je vous aide : la dernière condition, c'était quoi ? La vérification du mot de passe :

Code PHP:
}
else
{
echo 'Le mot de passe est incorrect';
}</span></span>


On avait aussi ouvert la condition qui permettait de savoir si le pseudo existait dans la BDD :

Code PHP:
}
else
{
echo 'Le pseudo entré n'existe pas';
}</span></span>


Et enfin, on a vérifié si tous les champs étaient remplis :

Code PHP:
}
else
{
echo 'Merci de remplir tous les champs';
}</span></span>


________________

Et bien ! On n'en a enfin fini avec l'inscription et la connexion. Maintenant, on attaque le meilleur (à mon goût  ) : la page membre ! On va faire dans le simple : on va dire "Bonjour" au membre et on va afficher ses données.

Attention
J'espère que vous avez bien mis le session_start(); sur toutes les pages de votre site ! Sinon, rien ne marchera. Si vous ne savez pas utiliser les sessions, j'ai déjà écrit un tutorial dessus.


Comme je l'ai dis, on va faire dans le simple. La première chose à faire, c'est de vérifier que le membre est connecté  :

Code PHP:
if ($_SESSION['logged'] == 1)
{


Ensuite, se connecter à la BDD :

Code PHP:
include("mysql_connect.php");


On va maintenant sélectionner toutes les infos du membre.

Question
Et comment on fait pour sélectionner uniquement les infos de ce membre ?


Grâce aux critères de sélection  (et plus précisément "WHERE"). On va tout simplement faire :

Code PHP:
$sql = mysql_query("SELECT * FROM membres WHERE pseudo = '".$_SESSION['pseudo']."' AND id = '".$_SESSION['id']."'");
$ech = mysql_fetch_array($sql);


On sélectionne donc TOUT dans la table membres quand pseudo est égal à la variable "$_SESSION['pseudo']" (qui contient le pseudo du connecté) et quand id est égal à la variable "$_SESSION['id']". Donc là, on a toutes les infos sur le connecté  . Y'a plus qu'à afficher le tout :

Code PHP:
echo 'Voici votre pseudo : '.$ech['pseudo'];
echo '<br/>';
echo 'Voici votre mot de passe : '.$ech['mot_passe'];
echo '<br/>';
echo 'Voici votre adresse email : '.$ech['email'].'<br/>';
echo '<a href="deconnect.php">Se déconnecter</a>'


Si vous voulez mettre plus de champs, bidouillez le fichier "inscription.php" ainsi que "inscription-ok.php", et affichez les ici 

_____________

Il ne nous reste plus que la déconnexion, et puis des petits trucs et astuces 

Sommaire



3 commentaires



> Posté le : 22/09/2007 à 16h21 | Note : Note: 1/5
Avatar de Vegeta47


Groupe : Membres


Htmlspecialchars...
> Posté le : 29/02/2008 à 12h45 | Note : Note: 5/5
Aucun avatar


Groupe : Membres


Pour la requête
Code :
$sql = mysql_query("SELECT * FROM membres WHERE pseudo = '".$_SESSION['pseudo']."' AND id = '".$_SESSION['id']."'");


Une seule critère de sélection suffit (je préfère généralement l'ID) car normalement, si tu as mis le champ "id" en auto_increment et en Uniq, les ID seront uniques et donc tu pourras sélectionner tout.

PS : 5/5, c'est très difficile de créer un espace membre et tu t'en tires bien .
> Posté le : 17/11/2008 à 22h05 | Note : Note: 2/5
Aucun avatar


Groupe : Membres


Dommage certaine notion vague et absence du code complet

Webdesigner et Webmaster en Herbe...


1