Créer un espace membres

Article écrit par kazhar

Un espace membres sur votre site peut vous permettre de fidéliser vos visiteurs.
en effet, vous pouvez leur proposer, via celui-ci, de personnaliser les pages de votre site à leur guise, de leur proposer l'acces à une newsletter, ...

tout d'abord, créons la table des membres.
nous allons faire 'simple', en mettant simplement les champs :
- identifiant, qui sera unique, et qui permettra d'identifier le membre pas un chiffre
- pseudo : le pseudo du membre
- pass : le mot de passe du membre
- sid : qui sera un numéro unique, et qui vous permettra de vérifier la connection d'un membre

créons donc notre table sql :

Code :
CREATE TABLE `Membres` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`pseudo` VARCHAR( 255 ) NOT NULL ,
`pass` VARCHAR NOT NULL ,
`sid` INT NOT NULL
)


vous pourrez, si vous le désirez, par la suite, ajouter des champs...

nous devons maintenant laisser la possibilités aux membres inscrits de se loguer.
pour cela, à chaque chargement de page, nous vérifieront la validité de la connection.
puis, nous modifieront le sid (par mesure de sécurité) et nous définiront les variables de connection du visiteur...


Code :
//vous devez définir avant les variables $pseudo, et $sess. vous pouvez pour cela, passer par un formulaire, ou définir des cookies, puis définir ces deux variables. $pseudo contiendra le pseudo, $session le sid
if (isset($pseudo) && isset($sess)) {
unset($userdata);
$userdata = array();
$connect = mysql_connect($sql_server, $sql_pseudo, $sql_pass);
mysql_select_db($sql_db);

$sql = "SELECT *
FROM `Membres`
WHERE `pseudo` = '$pseudo'
AND `sid` = '$session';";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 0) {
$fetch = mysql_fetch_array($query);
foreach ($fetch as $nom => $valeur) {
if ($nom != 'sid') {
$userdata[$nom] = $valeur;
}
}
srand((double)microtime()*1000000);
$sid = md5(uniqid(rand()));
$sql = "UPDATE `Membres`
SET `sid` ='$sid'
WHERE `id` = '$userdata[id]';";
$query = mysql_query($sql);
$session = $sid;
unset($sid);
}
mysql_close($connect);
}



comment ca fonctionne ?
on vérifie la valeur des deux variables, puis on se connecte à la base de données.
la, on vérifie que $session est bien égal au champ sid.
si il l'est bien, on définit $userdata, qui contient toutes les données de l'utilisateur (excepté l'identifiant de session)
et on modifie cet identifiant de session.

cependant, il nous faut encore connecter la personne...
voici une solution :

Code :
//vous avez juste à faire un formulaire avec une method=post avant, permettant de définir un pseudo, et un mot de passe...
if (isset($_POST['pseudo']) && isset($_POST['pass'])) {
$n = $_POST['pseudo'];
$p = $_POST['pass];
unset($userdata);
$userdata = array();
$connect = mysql_connect($sql_server, $sql_pseudo, $sql_pass);
mysql_select_db($sql_db);

$sql = "SELECT *
FROM `Membres`
WHERE `pseudo` = '$n'
AND `pass` = '$p';";
$query = mysql_quer($sql);
if (mysql_num_rows($query) != 0) {
$fetch = mysql_fetch_array($query);
foreach ($fetch as $nom => $valeur) {
if ($nom != 'sid') {
$userdata[$nom] = $valeur;
}
}
srand((double)microtime()*1000000);
$sid = md5(uniqid(rand()));
$sql = "UPDATE `Membres`
SET `sid` ='$sid'
WHERE `id` = '$userdata[id]';";
$query = mysql_query($sql);
$session = $sid;
unset($sid);
}
}
}



voila, vous n'avez plus qu'à décider de la maniere dont vous stockez le sid, soit dans l'url, soit dans un cookie (je vous conseille cependant fortement les cookies )
ainsi qu'un formulaire vous permettant de créer un compte membre...

Source : http://www.phportail.net