Connexion / Début d'une page membre
Informations sur le tutorial
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

) :
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") :
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
3 commentaires
|
> Posté le : 22/09/2007 à 16h21 | Note :  |

Groupe : Membres
|
Htmlspecialchars... |
|
> Posté le : 29/02/2008 à 12h45 | Note :  |

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 :  |

Groupe : Membres
|
Dommage certaine notion vague et absence du code complet
Webdesigner et Webmaster en Herbe... |