 |
|
Page 1 sur 1
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
|
|
|
 |
Posté le: Jeu Fév 25, 2010 11:01 pm Sujet du message: |
|
|
Manu404
Modérateur

Inscrit le: 26 Fév 2008
Messages: 2219
Localisation: ::1: |
Deux trois trucs qui me font un peux peur. Le nom de ta DB, compte tu utiliser les DB de cette manière ? une DB User, une DB articles etc ??
Fait plustot une DB <nom_du_site/portail> et dans cette db un tables user.
Ensuite utilise les vues.
Bon le code. Tu teste la présence du variable de session. Ce qui veux dire que les membres enregistré mais non admin auront acces a l'execution du code pour la verif de l'admin.
Ensuite, tu fait ta request SQL mais tu ne verifie a aucun moment son resultat. Pas de If sur le retour de la request SQL... Donc n'importe qui, a condition qu'il soit membre, fera un include de admin.php.
Ensuite, dans ta request, verifie les données qui te sont trasnmises en moyen de regex afin d'eviter les 'xxx or 1=1' et autres injections de bases SQL.
Par contre un bon reflexe, tu ferme ta connection SQL. Par contre, ne ferme ta connection SQL que en fin d'instruction. si tu as 10 request à faire, ne co/deco pas 10 fois ^^
Et enfin, je ne comprend pas ce que tu fait avec l'instruction après le indlude...
Sliim, tu es dev php/web, que rajouterais-tu ? |
|
|
|
 |
|
|
|
 |
Posté le: Ven Fév 26, 2010 11:36 am Sujet du message: |
|
|
Sliim
Site Admin

Inscrit le: 16 Mai 2008
Messages: 1177
|
Salut,
 |
 |
Je souhaiterais faire un système d'administration protégée (au max si possible) pour une boutique en ligne (future). |
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é .
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) :
 |
 |
| id | name | password | level | |
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 :
connexion.php
 |
 |
<?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é
|
Ç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']
 |
 |
<?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
|
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 .
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 .
++
Sliim
Dernière édition par Sliim le Ven Fév 26, 2010 4:02 pm; édité 1 fois |
|
|
|
 |
|
|
|
 |
Posté le: Ven Fév 26, 2010 3:58 pm Sujet du message: |
|
|
Sliim
Site Admin

Inscrit le: 16 Mai 2008
Messages: 1177
|
Tu as raisons pour $_POST , mais c'est pas pour autant qu'il faut laisser $_GET de côté, il a ses avantages aussi (comme le passage de paramètres via un simple lien, pas obligé de passer par un formulaire) .
En ce qui concerne ta question je sais pas si j'ai vraiment compris. Je vais essayer de répondre quand même.
Je suppose que les fichiers dont tu parles sont les fichiers php de ton site. En fait c'est à toi de voir comment tu organises ton arborescence de fichier.
En fait mon premier segment de code correspond à la connexion au site. Donc tu peux créer un fichier spécifique à la connexion, par exemple connexion.php, que tu appelleras lors du submit du formulaire.
L'autre segment de code correspond à la vérification du niveau d'autorisation. Ce code peut être intégré dans chaque fichier qui requiert cette vérification ou alors si tu ne souhaites pas dupliquer ton code (chose que je conseil, et je ne suis pas le seul ici ) tu peux faire un truc du genre :
levelAccess.php
 |
 |
<?php
session_start();
$admin = false;
$member = false;
$visitor = false;
if(isset($_SESSION['user']['level']){
switch($_SESSION['user']['level']){
case 1:
$admin = true;
break;
case 2:
$member = true;
break;
}
else
$visitor = true;
|
Tac, maintenant que tu as ce fichier, tu peux l'inclure dans toute les pages où il faut vérifier le niveau d'accès de l'utilisateur.
Par exemple une page d'administration tu fera ça :
admin.php
 |
 |
<?php
include('levelAccess.php');
if($admin){
//L'utilisateur est un admin, on autorise donc l'affichage de la page
}
else
exit('Vous n\'avez pas accès à cette page!');
|
Ce n'est qu'un exemple, il y a bien sûr d'autre façon de procéder, mais avec cette méthode le code de levelAccess.php est unique, et donc si tu as besoin de le modifier tu auras moins de galère car tu n'auras qu'un fichier à modifier au lieu de toute tes page admin par exemple. Moins tu duplique ton code, moins tu galères par la suite pour faire des modifs .
Voilà si je n'ai pas répondu à ta question dis le moi ^^. Si tu as d'autres question n'hésites pas .
++
Sliim |
|
|
|
 |
|
|
|
 |
|
|
|
 |
|
 |
|
Page 1 sur 1
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|
|