Espace d'administration

Résolu
k4n4r Messages postés 3 Date d'inscription dimanche 12 septembre 2004 Statut Membre Dernière intervention 7 juin 2005 - 6 juin 2005 à 13:26
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 7 juin 2005 à 13:23
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

morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
6 juin 2005 à 13:43
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
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 juin 2005 à 13:42
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... :-)
0
k4n4r Messages postés 3 Date d'inscription dimanche 12 septembre 2004 Statut Membre Dernière intervention 7 juin 2005
6 juin 2005 à 15:23
Merci pour vos réponses, étant donnée que c'est un petit site je vais rajouté un champ dans la table membres.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 juin 2005 à 15:42
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 ;-)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
6 juin 2005 à 15:54
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...
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
6 juin 2005 à 16:10
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...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
6 juin 2005 à 18:07
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>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 09:02
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 juin 2005 à 10:19
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>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 11:16
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 juin 2005 à 11:24
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>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 juin 2005 à 11:24
j'ai oublié les \ aussi

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




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 11:33
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 juin 2005 à 11:40
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>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 11:44
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...
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 juin 2005 à 11:47
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>
0
k4n4r Messages postés 3 Date d'inscription dimanche 12 septembre 2004 Statut Membre Dernière intervention 7 juin 2005
7 juin 2005 à 13:15
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.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
7 juin 2005 à 13:18
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 ;-)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 juin 2005 à 13:23
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>
0
Rejoignez-nous