TUOT BY GLOBE
Tout d'abord, je voulais signaler que le tutorial sera partéger en trois pages :
- Zone membre
- Administration
- Inscription
Voilà le tutorial :
Bonjour, alors un petit tuto pour les newbies qui tout le temps viennent nous casser les pieds avec leur scripts basiques qu'ils n'arrivent pas à faire marcher.
Alors voilà ce tuto vous expliquera comment utiliser les sessions dans une zone membres et gérer une zone membres basiques...
I. Création de la table et formulaire de connexion
1. La Table membres
Nous allons tout d'abord créer une table Sql simple dans phpMyAdmin, elle comportera un champs id, un champ pseudo, un champ email, un champ mot de passe et un rang...
Code :
CREATE TABLE `membres` (
`id` int(11) NOT NULL auto_increment,
`pseudo` varchar(30) NOT NULL default '',
`mdp` varchar(30) NOT NULL default '',
`email` varchar(75) NOT NULL default '',
`rang` set('Administrateur','Utilisateur') collate latin1_general_ci NOT NULL default 'Utilisateur',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
Créez vous ensuite grâce à phpMyAdmin un compte administrateur...
2. Le formulaire de connexion
Code PHP :
<form id="form1" name="form1" method="post" action="login.php">
<a href="inscription.php">Inscription</a><br />
<table width="9%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Pseudo</td>
<td width="69%"><input name="pseudo" type="text" id="pseudo"></td>
</tr>
<tr>
<td>Password</td>
<td><input name="mdp" type="password" id="mdp"></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="Submit" value="Envoyer"></td></tr>
</table>
</form>
Ce formulaire HTML simple vous envois vers la partie intéressante de cette première partie du tuto, la page login.php.
Dans cette page login.php nous allons tout d'abord avant même la connexion MySql ou le code HTML mettre cette ligne :
Code PHP :
<? session_start(); ?>
Nous ouvrons ainsi une session qui sera valable soit jusqu'a la fermeture de cette session ou de la fenêtre de votre navigateur... Une fois ceci fait ajouter bien sûr entre les balises PHP votre connexion MySQl, le code commence ici
Code PHP :
<?
if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['mdp'])) {
extract($_POST);
Cette ligne récupère les données du formulaire grace à POST, l'extract crée une variable pour toutes les valeurs envoyées, ainsi nous avons une varriable $pseudo et une variable $mdp avec les valeurs envoyées...
Code PHP :
$sql = "select mdp from membres where pseudo='".$pseudo."'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
Ici nous allons récupérer la valeur du champs mdp de la table ou le pseudo est celui envoyé dans le formulaire...
Code PHP :
if($data['mdp'] != $mdp) {
echo '<p>Mauvais identifiants, merci de réessayer.</p>';
exit;
}
La vérification : Si le mdp envoyé n'est pas égal à celui dans la table, alors on demande de se reconnecter et on stoppe le code de la page ici.
Code PHP :
else {
session_start();
$_SESSION['pseudo'] = $pseudo;
echo 'Vous êtes actuellement redirigé vers l\'accueil.';
header( "Location: index.php");
} }
Sinon on commence la session et on est redirigé vers index.php
La seconde accolade sert à fermer la condition de début, si les champs ont étés remplis, il ne nous reste donc plus qu'a l'indiquer si les champs n'ont pas étés remplis :
Code PHP :
else {
echo '<p>Vous avez oublié de remplir un champ.</p>';
header( "Location: index.php");
} ?>
Voilà vous pourrez désormais vous connecter durant un très bref instant
Qué ??? Tu nous à fais faire tout sa pour nous connecter un bref instant ???
Oui, car la session ne durera que si sur la pge vers laquelle le formulaire renvois possède un session_start(); !!!
II. Pages dynamiques et interface d'administration
1. Pages communes
Alors commençons par l'interêt de la dynamisation dans ce sens des pages... Eh bien tout simplement elle permet d'afficher un contenu différent sur une même page selon si l'utilisateur est connecté ou non
Ouvrons donc une session
Quoi vous savez plus comment ??? Je l'ai dis y'a pas longtemps !!!
session_start();
^^ Tout en haut de la page...
Ensuite dans votre page nous allons insérer le contenu dynamique, je donne d'abord le code complet pour les fainéants et je le décortiquerais ensuite :
Code PHP :
<? if(!isset($_SESSION['pseudo']))
{ $_SESSION['pseudo']='Invité'; }
if($_SESSION['pseudo']=='Invité')
{ include('login.html'); } [color=orange]// si vous n'avez pas de login.html copiez simplement votre form avant l'accolade[/color]
else
{ ?> <a href="profil.php">Profil</a><? } ?>
Décortiquons :
Code PHP :
<? if(!isset($_SESSION['pseudo']))
{ $_SESSION['pseudo']='Invité'; }
Si le pseudo de la session n'est pas définis (pas connecté) alors on crée une variable invité par défaut.
Code PHP :
if($_SESSION['pseudo']=='Invité')
{ include('login.html'); } // si vous n'avez pas de login.html copiez simplement votre form avant l'accolade
Si le pseudo est le pseudo par défaut alors on inclue le formulaire de connexion de la première partie du tuto...
Code PHP :
else
{ ?> <a href="profil.php">Profil</a><? } ?>
^^ Sinon on affiche le lien vers le profil
2. Profil et administration des membres !!!
Alors commençons par la page de profil très simple qui sert simplement à mettre des valeurs post dans la table
Alors, dans profil.php comme dans toutes les pages il faut donc un ???
session_start();
Alors, après avoir récupérer le pseudo comme dans toutes les pages de la zone membres, nous allons récupérer les valeurs du profil dans la table
Code PHP :
$pseudo = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
$table=mysql_fetch_assoc($requete);[php]
^^ Tout ceci se passe avant la balise <HTML>
Maintenant le formulaire qui réaffiche ces valeurs entre les balises <BODY>
[php]
<form action="profil.php?modifier=1" method="post">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td></td>
<td>Pseudo</td>
<td><? echo $table['pseudo']; ?></td>
</tr>
<tr>
<td></td>
<td>E-Mail</td>
<td><input name="email" type="text" id="email" value="<? echo $table['email']; ?>"></td>
</tr>
<tr>
<td></td>
<td>Mot de Passe </td>
<td><input name="mdp" type="password" id="mdp" value="<? echo $table['mdp']; ?>"></td>
</tr>
</table>
<input type="submit" name="Submit" value="Enregistrer les Modifications">
</form>
Comme vous le constatez nous renvoyons la page vers elle même avec une valeur envoyée par lien... Ainsi nous dirons à la page qu'on à déjà envoyé des valeurs...
Donc avant la balise <HTML> mais après la requête visant à récupérer les informations nous allons vérifier si il y à une valeur de modification :
Code PHP :
if (isset($_GET['modifier']) && $_GET['modifier'] == 1)
{
$mdp = $_POST['mdp'];
$email = $_POST['email'];
$sql = mysql_query("UPDATE membres SET mdp='$mdp', email='$email' WHERE pseudo='$pseudo'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}
Rien de difficile, on vérifie si c'est une modification et si s'en est une eh bien on met à jour
Ce qui au bout du compte devrait vous donner avant la balise HTML :
Code PHP :
<?
//connexion MySql
session_start();
$pseudo = $_SESSION['pseudo'];
$requete = mysql_query("SELECT * FROM membres WHERE pseudo='$pseudo'");
$table=mysql_fetch_assoc($requete);
if (isset($_GET['modifier']) && $_GET['modifier'] == 1)
{
$mdp = $_POST['mdp'];
$email = $_POST['email'];
$sql = mysql_query("UPDATE membres SET mdp='$mdp', email='$email' WHERE pseudo='$pseudo'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
} ?>
![[Image: finalvb4.jpg]](http://img338.imageshack.us/img338/8139/finalvb4.jpg)