INFO : Ce premier post est mis à jour selon les modifications/améliorations apportées au long de la discussionVoila comme promis un tutorial sur la creation d'un espace membre en PHP car je pense que sa aidera pas mal de gens.
Bien entendu, ce tutorial n'a aucune prétention, si ce n'est que de marcher comme il faut même si c'est vrai qu'il reste basique.
-----------------------------------------------------------------------
1/ Aller dans votre base de donnée via PHPMyAdmin et aller dans l'onglet "SQL".
Recopiez le script suivant et appuyez sur "Executer" :Script table :
CREATE TABLE membre (
id_membre int(10),
id varchar(20),
pseudo varchar(20),
passe varchar(20)
);
-----------------------------------------------------------------------
2/Modifiez ensuite les variables du script suivant puis creez une page contenant ce script que vous nommerais "conf.php3" :<?
// SERVEUR SQL
$sql_serveur="votre serveur SQL (ex: sql2.power-heberg.net...)";
// LOGIN SQL
$sql_user="Votre login";
// MOT DE PASSE SQL
$sql_passwd="Votre pass";
// NOM DE LA BASE DE DONNEES
$sql_bdd="Nom de la base de données";
// REDIRECTION VERS UNE PAGE ERREUR AU CAS OU LE LOGIN ET MOT DE PASSE SONT INVALIDES
$url_erreur="erreur.htm";//page à configurer par vos soins...et à mettre dans le meme répertoire que le fichier conf.php3
// PAGE PRINCIPALE PROTEGEE PAR MOT DE PASSE
$zone_membre="zonemembre.php3";//ne rien modifier (pour éviter les erreurs plus tard)
?>
--------------------------------------------------------------------------------------
3/Creez maintenant une page pour chaque script suivant en respectant le nom que j'attribue à chaque page : Page "adduser.php3" :
<html>
<head>
<title>Espace membre</title>
</head>
<body>
<font face="Verdana" size="2">
<center>
<?
require("conf.php3");
switch($action) {
/*-----------------------------------------------------------------*/
/* AJOUT DANS MySQL */
/*-----------------------------------------------------------------*/
case "add";
// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
// TEST SUR LES VALEURS SAISIES
if($pseudo_membre==""){echo "Vous devez choisir un pseudo<br><br><a href="javascript:window.history.back()">Retour</a>";exit;}
if($passe_membre==""){echo "Vous devez choisir un mot de passe<br><br><a href="javascript:window.history.back()">Retour</a>";exit;}
// CHAMPS SUPLEMENTAIRES, inspirez-vous des lignes suivantes. Pour qu'un champs soit facultatif, omettez la ligne.
//if($email==""){echo "Vous n'avez pas saisi votre email<br><br><a href="javascript:window.history.back()">Retour</a>";exit;}
//if($ville==""){echo "Vous n'avez pas saisi la ville<br><br><a href="javascript:window.history.back()">Retour</a>";exit;}
// ON VERIFIE SI CE PSEUDO EXISTE DEJA
$requete=mysql_db_query($sql_bdd,"select * from membre where pseudo="$pseudo_membre"",$db_link) or die(mysql_error());
$num=mysql_num_rows($requete);
if($num!=0)
{
echo "Ce pseudo existe déjà, veuillez en choisir un autre<br><br><a href="javascript:window.history.back()">Retour</a>";
}
else
{
// CREATION D'UN IDENTIFIANT ALEATOIRE
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres))),1);
}
// ON RECHERCHE L'ID MAXIMUM DE LA TABLE
$requete=mysql_db_query($sql_bdd,"select max(id_membre) from membre",$db_link) or die(mysql_error());
$idmax=mysql_result($requete,0,"max(id_membre)");
// INSERTION DANS LA TABLE
$idnew=$idmax+1;
$requete=mysql_db_query($sql_bdd,"insert into membre values ($idnew,"$id","$pseudo_membre","$passe_membre")",$db_link) or die(mysql_error());
// CHAMPS SUPLEMENTAIRES, complétez la requête précédente en ajoutant les variables et en respectant l'ordre des colonnes de la table. Exemple :
// insert into membre values ($idnew,"$id","$pseudo_membre","$passe_membre","$email","$ville")
// REDIRECTION VERS LA PAGE D'ENTREE DE L'ESPACE MEMBRE
echo "Merci, vous êtes bien enregistré. Cliquez <a href="$zone_membre?id=$id">ici</a> pour entrer dans votre espace privé.";
}
// DECONNEXION MYSQL
mysql_close($db_link);
break;
/*-----------------------------------------------------------------*/
/* AFFICHAGE DU FORMULAIRE */
/*-----------------------------------------------------------------*/
default;
echo " <h2>Nouveau membre</h2>
<form action="adduser.php3" method="post">
<input type="hidden" name="action" value="add">
Chosissez un pseudo<br><input type="text" name="pseudo_membre"><br>
Chosissez votre pass<br><input type="password" name="passe_membre"><br>
<! -- CHAMPS SUPLEMENTAIRES, décommentez les 2 lignes suivantes -->
<!-- Votre email<br><input type="text" name="email"><br> -->
<!-- Ville<br><input type="text" name="ville"><br> -->
<input type="submit" value="Envoyer">
</form>
<font face="Verdana" size="2"><a href="index.htm">Se connecter</a></font>";
break;
}
?>
</center>
</font>
</body>
</html>
------------------------------------------------------------------------------------------
Page "zonemembre.php3" :
<?
require("conf.php3");
// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_db_query($sql_bdd,"select * from membre where id="$id"",$db_link) or die(mysql_error());
// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
{
// REDIRECTION PAGE ERREUR
header("Location:$url_erreur");
exit;
}
// LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
$pseudo_membre=mysql_result($requete,0,"pseudo");
// CHAMPS SUPLEMENTAIRES
// Si vous avez ajouté des champs dans la table SQL, inspirez-vous de la ligne précédente pour récupérer leur valeur. Exemple :
//$email=mysql_result($requete,0,"email");
//$ville=mysql_result($requete,0,"ville");
// DECONNEXION MYSQL
mysql_close($db_link);
?>
<html>
<head>
<title>Espace membre</title>
</head>
<body bgcolor="#FF0000" text="#000000">
<br>
<br>
<p align="center"><b><font face="Verdana" size="3">ESPACE
MEMBRE</font></b></p>
<p align="center"> </p>
<p align="center"><font size="2" face="Verdana">
<br><br>
Salut à toi <b><? echo "$pseudo_membre <br>"; ?></b><br><br>
Exemple de lien vers une autre page protégée :<br>
<a href="test.php3?id=<? echo "$id"; ?>">Test</a><br>
<br><br>
<!-- CHAMPS SUPLEMENTAIRES, décommentez les lignes suivantes -->
<!-- Votre email : <b><? echo "$email"; ?></b><br> -->
<!-- Votre ville : <b><? echo "$ville"; ?></b><br> -->
</font></p>
</body>
</html>
----------------------------------------------------------------------------------------
Page "login.php3" :
<?
require("conf.php3");
/*-----------------------------------------------------------------*/
/* PROGRAMME PRINCIPAL */
/*-----------------------------------------------------------------*/
// CONNEXION A LA BASE DE DONNEE
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
// ON SELECTIONNE L'ENREGISTREMENT CONTENANT LE LOGIN ET
// MOT DE PASSE SAISIS A LA PAGE INDEX.HTM
$requete=mysql_db_query($sql_bdd,"select pseudo,passe from membre where pseudo="$pseudo_membre" and passe="$passe_membre"",$db_link) or die(mysql_error());
// SI AUCUN ENREGISTREMENT NE CORRESPOND
if(mysql_num_rows($requete)==0)
{
// REDIRECTION VERS LA PAGE ERREUR
header("Location:$url_erreur");
}
// SI LE LOGIN ET MOT DE PASSE SONT EXACTES
else
{
// CREATION D'UN IDENTIFIANT ALEATOIRE
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$id.=substr($lettres,(rand()%(strlen($lettres))),1);
}
// MISE A JOUR DE L'IDENTIFIANT DANS LA TABLE
$requete=mysql_db_query($sql_bdd,"update membre set id="$id" where pseudo="$pseudo_membre" and passe="$passe_membre"",$db_link) or die(mysql_error());
// REDIRECTION VERS UNE PAGE PROTEGEE AVEC L'IDENTIFIANT SERVANT DE CLE
header("Location:zonemembre.php3?id=$id");
}
// DECONNEXION MYSQL
mysql_close($db_link);
?>
---------------------------------------------------------------------------------------
Page "index.html" :
<html>
<head>
<title>Espace membre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<br>
<br>
<div align="center"><b><font face="Verdana" size="2">Pour
entrer dans l'espace membre, saisissez votre pseudo et votre mot de passe :</font></b>
<form method="post" action="login.php3">
<b><font face="Verdana" size="1">Pseudo<br>
<input type="text" name="pseudo_membre">
<br>
<br>
Mot de passe</font></b><br>
<input type="password" name="passe_membre">
<br>
<br>
<input type="submit" name="Submit" value="Entrer">
</form>
<font face="Verdana" size="2"><a href="adduser.php3">Inscription</a></font>
</div>
</body>
</html>
----------------------------------------------------------------------------------
IMPORTANT !!!! PROTECTION DES PAGES MEMBRES
Toutes les pages protégées par mot de passe dans votre "Espace membre" doivent être des pages PHP et
contenir le code suivant en haut de page, avant même la balise <HTML> :<?
require("conf.php3");
// CONNEXION MYSQL
$db_link = @mysql_connect($sql_serveur,$sql_user,$sql_passwd);
if(!$db_link) {echo "Connexion impossible à la base de données <b>$sql_bdd</b> sur le serveur <b>$sql_server</b><br>Vérifiez les paramètres du fichier conf.php3"; exit;}
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$requete=mysql_db_query($sql_bdd,"select * from membre where id="$id"",$db_link) or die(mysql_error());
// SI L'ID N'EXISTE PAS
if(mysql_num_rows($requete)==0)
{
// REDIRECTION PAGE ERREUR
header("Location:$url_erreur");
exit;
}
// LIGNE FACULTATIVE : RECUPERATION DU PSEUDO
$pseudo_membre=mysql_result($requete,0,"pseudo");
// CHAMPS SUPLEMENTAIRES
// Si vous avez ajouté des champs dans la table SQL, inspirez-vous de la ligne précédente pour récupérer leur valeur.
//$email=mysql_result($requete,0,"email");
//$ville=mysql_result($requete,0,"ville");
// DECONNEXION MYSQL
mysql_close($db_link);
?>
---------------------------------------------------
Ce code permet de vérifier si on est bien passé par le formulaire "index.htm".
Vous pouvez afficher les informations du membre, comme par exemple son pseudo :
<? echo "Bonjour $pseudo_membre"; ?>
NAVIGATION ENTRE LES PAGES
Le script "login.php3" a créé un identifiant aléatoire pour le membre et l'a mis à jour dans la table MySQL.
Sans cet identifiant, on ne peut pas consulter la page. Il est accessible dans la page PHP avec la variable
$id. Vous pouvez donc insérer des liens vers d'autres pages protégées avec le code suivant :
<a href="pageprotege.php3?id=<? echo "$id"; ?>">AUTRE PAGE MEMBRE</a>
NB : Si vous vos pages membres ne sont pas toutes dans le même répertoire, adaptez le chemin
d'accés au fichier "conf.php3" dans la fonction require.
Exemple :
require("../conf.php3"); // (répertoire parent)
require("monrep/conf.php3"); // (sous-répertoire)
// // // //
Voila j'espère que ce tuto vous aideras un peu et vous pouvez meme, si le coeur vous en dis, de le modifier pour l'améliorer
