Espace d'administration [Résolu]

Signaler
Messages postés
3
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 juin 2005
-
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
-
Bonjour,

Je débute en php et je souhaiterais savoir comment créer des droits
d'acces à l'administration pour certains membres enregistrés (un peu
comme les CMS sauf que ici seulement 2 niveaux àpres enregistrement :
admin et membre).

Dois-je créé une table admins par exemple et spécifié les admins ? ou
alors un champ à rajouté dans la table membres en faisant un controle
de l'accès avec les sessions ?

merci de vos réponses.

19 réponses

Messages postés
461
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
16 février 2012

Ben au choix les deux methodes sont faisables. Si tu as peux d admin et que ceux si peuvent aussi surfer sur le site en tant que membre, une bonne solution consiste a rajouter un champ. Si tu as beaucoup d admin creer une table specialisé et si ils peuvent aller sur le site test aussi sur cette table. J ai fait plusieurs site et j utilise les deux methodes.


<HR>
On ne peut pas savoir tout faire, mais on peut tout apprendre avec du travail. Morpheus262

PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, contacter moi par mail
l
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hello,



tu peux creer une table "groupes", contenant par exemple le nom du
groupe, et son id (les droits, si tu les stockes, devront plutot etre
dans une table "droits".

Ensuite, de deux choses l'une : soit un membre peut appartenir a
plusieurs groupes, et dans ce cas tu dois creer une table intermediaire
contenant : id_user et id_groupe.

Soit chaque membre ne peut appartenir qu'a 1 seul groupe, et dans ce
cas tu ajoutes l'id_groupe auquel un utilisateur appartient dans son
enregistrement dans ta table user (donc tu crees un nouveau champ
"id_groupe" dans ta table "users").

Apres evidemment, sessions... :-)
Messages postés
3
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 juin 2005

Merci pour vos réponses, étant donnée que c'est un petit site je vais rajouté un champ dans la table membres.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Hmmm,



sans vouloir offenser Morpheus, ca n'a aucun rapport. Ajoute
directement a ta table users SI chaque user ne peut appartenir qu'a 1
seul groupe. Sinon, fais une nouvelle table. Si tu ne fais pas ca comme
ca, tu auras tot ou tard des soucis.

Mais comme je pense que chaque utilisateur ne peut appartenir qu'a un seule groupe...oui, tu peux ;-)
Messages postés
461
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
16 février 2012

Salut malalam, tu ne m offenses pas je suis la pour apprendre, tu sembles en connaitre plus que moi. et donc je m interroge, car j utilise la methode de la base agrandi d un champ sur un des mes site depuis plusieurs mois voire années, j ai meme poussé le truc car j ai 4 types d utilisateurs, tu parles qu un jour ou l autre il y aura des problemes a quoi penses tu et pourquoi (ne le prend pas mal j aimerai vraiment savoir pour optimiser voire opter ta solution). et j ai pas tout suivi ta solution ca consiste a rajouter 2 tables de plus en quoi cela peut etre plus simple et ou efficace ?

merci de tes reponses


<HR>
On ne peut pas savoir tout faire, mais on peut tout apprendre avec du travail. Morpheus262

Ecoute Autrui et tu apprendras...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Non, en fait... tout est question de relations.

Mettons que tu as une table 'users'.
Chaque users peut faire partie d'1 groupe.
A ce moment la : tu crees une table 'groupes' avec nom_groupe et id_groupe par exemple (si tu veux stocker les droits de chaque groupe...il faut reflechir...une autre table 'droits' peut etre bien).
Et dans ta table 'users', tu ajoutes une clef etrangere id_groupe pour savoir a quel groupe appartient ton utilisateur. Ca, c'est ok. Ca ne changera pas gdchose de rajouter une autre table a ce compte la.

mais si un utilisateur peut appartenir a plusieurs groupes, tu ne peux plus jouer avec ca, il te faut une 3eme table qui fera le lien entre 1 utilisateur et 1 groupe: la table 'user_groupe' par exemple, qui contiendra id_groupe et id_user. De cette maniere, un utilisateur dont l'id est 99 pourra etre lie aux groupes 2, 3 et 5 par exemple :
99 2
99 3
99 5
grace a 3 entrees dans cette table.
ca, tu ne peux pas le faire facilement (et ce n'est pas recommande en tous cas pas dans la methode Merise) de le faire uniquement sur ta table 'users'.

C'est tout, lol. Tout est a reflechir surtout en terme de relations : 1,n ou 0,n etc...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



si tu n'as que deux niveaux de droits, le champ rajouté est la méthode
la plus efficace, de toute façon tu peux monter très haut même avec un
seul champ. Pense à le mettre de type numérique (TYNINT) pour optimiser
la structure de ta base et la place occupée.



En fonction des droits (admin ou membre) correspondra à un 0 ou un 1 dans ta table par exemple.



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Et puisqu'on y est, on utilise mysql_real_escape_string() lors des identifications ou autres saisies dans la base a partir de formulaires, histoire que personne ne te pique ton compte admin qui est certainement le 1er a apparaitre dans la base.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ouais ou les fonctions addslashes et stripslashes, ça revient au même
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Sauf que mysql_real_escape_string () tient compte de ce qui est dangereux pour mysql. Il se trouve que ca correspond pour le moment, oui, mais si ca change un jour, myreal_escape_string() sera toujours valable (pour ysql) et plus addslashes()...parce que addslashes() ne s'occupe que de php et du html. Donc en cas de mise a jour...on est marron si on utilisait addslashes() et il ne restera plus qu'a revoir tous nos codes ;-) Donc je persiste : mysql_real_escape_string () est preferable quand il s'agit d'echapper des trucs pour des requetes.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah que faut-il échapper ?



les ' et "



addslashes fait ça très bien (donc je persiste aussi mdr)



enfin bon je testerai à l'occassion quand j'aurais le temps les différences entre les deux fonctions.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
j'ai oublié les \ aussi

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Pour l'instant, rien d'autre, lol.
ce que je veux dire c'est que si un jour ca change...si les developpeurs de mysql changent certains trucs et que certains autres caracteres doivent etre echappes : mysql_real_escape_string () sera mis a jour automatiquement parce que cette fonction est faite conjointement avec eux. Mais addslashes () se contentera toujours d'echapper uniquement ce qui compte pour le html et php. Donc si ca czhange un jour et que tu as utilise mysql_real_machin ( c chiant a ecrire lol), c'est bon, tu n'as rien a changer (a part mettre ta version de php a jour). Mais si tu as utilise uniquement addslashes, t'as plus qu'a revoir tous tes scripts.
C'est juste en prevision...et ca pourrait arriver lol.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ouais, en même temps faudrait que ce soit vraiment tordu pour échapper
d'autres caractères, mais ton raisonnement tient la route.




<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Suis d'accord...mais les programmeurs SONT tordus...c'est un fait, lol.

J'ai regarde quand meme par acquis de conscience :
addslashes () :
<!--StartFragment --> single quote (<VAR>'</VAR>), double quote (<VAR>"</VAR>), backslash (<VAR>\</VAR>) and NUL (the <TT>NULL</TT> byte)

myreal_machin () :
<!--StartFragment --> <VAR>\x00</VAR>, <VAR>\n</VAR>, <VAR>\r</VAR>, <VAR>\</VAR>, <VAR>'</VAR>, <VAR>"</VAR> and <VAR>\x1a</VAR>.

Ca echappe aussi les retours chariots...! (entre autres) Mais je ne sais pas en quoi c'est dangereux...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
bah je ne sais pas non plus...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
3
Date d'inscription
dimanche 12 septembre 2004
Statut
Membre
Dernière intervention
7 juin 2005

Merci, je n'avais pas utilisé mysql_real_escape_string(), je vais
l'utilisé si c'est plus sécurisé, concernant les addslash, lors de
l'enregistrement j'ai interdit les caractères non-alphanumériques, donc
je n'ai pas besoin de l'utilisé, corriger moi si je me trompe.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
Si tu es sur de ton interdiction, alors non, ca devrait etre bon. Je ne pense pas que l'on puisse faire d'injection sql uniquement avec des caracteres alphanumeriques. Il faut au moins commenter, et on a surement besoin d'une ou deux apostrophes ;-)
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Perso j'ai aussi interdit quelques caractères spéciaux dans le pseudo lors de l'inscription, ça empêche toute fraude de ce côté.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>