by Sliim » Fri Feb 26, 2010 11:36 am
Salut,
[quote:dd23d78d6c]Je souhaiterais faire un système d'administration protégée (au max si possible) pour une boutique en ligne (future). [/quote:dd23d78d6c]
Sans vouloir te démotiver, un site e-commerce se vend dans les 10aines de milliers d'euros, donc je te laisse imaginer le taf que ça représente et les qualifications requises. Il serait peut être plus raisonnable de penser à un site basique, un minimum dynamique pour commencer ;).
Cela dit, manu a déjà fait un bon rapport au niveau du code que tu as posté :P.
En ce qui concerne les sessions / cookies, les sessions vont te permettre de gérer les users connectés ou non, stocker leurs droits etc..
Imaginons une table `users` (très basique) :
[quote:dd23d78d6c]| id | name | password | level |[/quote:dd23d78d6c]
Beh genre quand l'user se connectera, tu iras chercher les variables contenue dans le tableau $_POST (méthode post et non get hein, pas question de voir le mot de passe dans l'url ;)) Tu testeras ses données envoyées en faisant bien attention à ce que les injections de codes soient impossible et ensuite tu les enregistres dans ta session.
exemple de récupération de données :
[i:dd23d78d6c]connexion.php[/i:dd23d78d6c]
[code:1:dd23d78d6c]
<?php
session_start();
if(key_exists('name', $_POST){
$name = addslashes(htmlentities($_POST['name']));
$password = md5($_POST['password']);
$query = 'SELECT * FROM `users` WHERE `name`=' . $name;
mysql_connect('hostDb','userDb','mdpDb') or die('Impossible de se connecter au serveur de base de données');
mysql_select_db('users') or die('Impossible de se connecter à la base de données');
$resultQuery = mysql_query($query);
if(mysql_num_rows($resultQuery) == 1){
$data = mysql_fetch_assoc($resultQuery);
//Maintenant que l'user c'est identifié, on enregistre ses infos dans les sessions
if($password == $data['password']){
//Connexion ok
$_SESSION['user']['id'] = $data['id'];
$_SESSION['user']['name'] = $data['name'];
$_SESSION['user']['level'] = $data['level'];
}
else
//Mauvais mot de passe
}
else
echo 'connexion échouée';
mysql_close();
}
else
//Aucune demande de connexion n'a été envoyé
[/code:1:dd23d78d6c]
Ça en gros c'est pour la connexion.
Ensuite une fois connecté, pour vérifier son niveau d'autorisation d'accès au site on utilise le champ `level` de la table `users` donc la valeur de $_SESSION['user']['level']
[code:1:dd23d78d6c]
<?php
session_start();
if(isset($_SESSION['user']['level']){
switch($_SESSION['user']['level']){
case 1:
//Accès admin
break;
case 2:
//Accès user basique
break;
}
else
/Accès visiteur
[/code:1:dd23d78d6c]
Voilà à peu près, ces exemples de code sont tappés vite fais dans le textarea du forum donc je ne garantie pas le fonctionnement du copier/coller. Mais au niveau du principe c'est ça :P.
Après les cookies, ils peuvent être utiles, dans le cadre d'un site e-commerce, pour le panier de l'utilisateur par exemple. Utiliser les sessions auraient pour conséquences de perdre le panier si l'user venait à fermer son navigateur. Avec les cookies, ils sont stockés sur la machine cliente et donc sont récupérés à chaque fois que l'user va sur ton site (à condition que l'user ne les ait pas supprimé). Même après un BSOD l'utilisateur pourra retrouver son panier tel qu'il était lorsqu'il a quitté ^^.
Donc voilà, session, cookie, deux choses utiles mais à utiliser intelligement et avec modération. Il faut bien analyser les besoins avant de se lancer ;). En ce qui concerne les connexions utilisateurs, c'est la plupart du temps les sessions qui sont utilisées (voir tout le temps). Le panier d'un user on utilisera plutôt les cookies pour la raison évoquée ci-dessus. Pour les autres fonctionnalité de ton site il faudra que tu y réfléchisse :P.
++
[u:dd23d78d6c]Sliim[/u:dd23d78d6c]
Last edited by
Sliim on Fri Feb 26, 2010 4:02 pm, edited 1 time in total.