Session php

Signaler
Messages postés
3
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
9 octobre 2009
-
Messages postés
3
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
9 octobre 2009
-
Bonjour,
je me suis mis à utiliser WAMP pour créer un site internet.
j'ai suivi quelques conseils sur d'autres sites pour créer un système de session dans le but de filtrer l'accès à une partie du site.
Celle-ci "dialogue" avec une base de donnée. J'ai créé une table user contenant un login et un mot de passe. Ceci fonctionne à merveille. Par contre, j'aurai besoin à présent de définir l'accès aux utilisateurs pour tel table ou tel champ ?
Dois-je plutôt utiliser la table de mysql qui gère les utilisateur et leur droit, ou existe t il un module permettant de faire la liaison entre les table de mysql et celle que j'ai créer?
Y'a til un rapport avec le fichier connexion.php? Ce fichier sert à se connecter en début de page php à mysql. Pour se connecter, j'ai utilisé le login et le mot de passe administrateur.

je suis dans un brouillard complet. Merci de votre aide

4 réponses

Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Hello,

Je pense en effet qu'il y à un petit cafouillage.

Il faut bien différencier tes deux systèmes d'accès.

Accès à ton serveur de base de donnée :


Ton fichier connexion.php te sert (si j'ai bien compris) à te connecter à ta base de donnée qui se trouve sur ton serveur de base de donnée.
Pour cela tu as en effet besoin du login et mot de passe administrateur de ton serveur base de donnée.
Ces logins/mot de passe ainsi que les droits associés à ton utilisateur de base de données (A quel base l'utilisateur de nom X ou Y à l'accès) sont stockés dans une Table système d'une base de donnée système de ton serveur MySQL. Normalement tu n'as pas de raison de toucher à ces tables avant d'être un peut expérimenté.
L'administration de base de donnée est un travail à part. Dans une entreprise les personnes qui développent des applications et celles qui gèrent les bases de données (Backup, gestion des utilisateurs, des droits...) ne sont d'ailleurs généralement pas les mêmes.
Sur ce serveur de base de données tu as donc crée une base qui te sert pour ton site, des droits ont étés attribués à ton utilisateur du serveur de base de donnée afin qu'il puisse effectuer des opérations sur ta base (INSERT, UPDATE, SELECT...).

Accès à la partie privée de ton site :


Maintenant d'un autre coté, tu as crée un espace sécurisé sur ton site. Cet espace est accessible via un login et un mot de passe qui sont stockés dans une table "user" de ta base de donnée (Crée pour ton site et non la base de donnée système).
Ces deux systèmes de login/mot de passe sont donc totalement indépendants. D'ailleurs je te conseil de ne pas utiliser les même couples login/mot de passe pour ton serveur de base de donnée et ton accès à ton site Web.


Maintenant quel est ton but exactement ? Tu veux que les utilisateurs ai accès a certaines infos de tes tables ? Que cet accès soit différents pour chaque utilisateurs (Ou groupe d'utilisateurs) ?
_________________________________
Min iPomme
Messages postés
3
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
9 octobre 2009

Merci de m'avoir répondu si rapidement mais je vais reformuler ma question de façon convenable. En effet, j'ai l'impression d'avoir un peu cafouillé.

_Avant propre:

Cela fait un an que je suis détenteur d'un bts informatique en tant qu' administrateur réseau.Le développement d'application ne me plaisait pas tellement c'est pour cette raison que lorsque je faisais les exercices PHP,HTML,VB etc.... je ne comprenais pas ce que je faisais, et je ne retenais pas trop les choses.

_Introduction:

Je fais parti d'une association de musculation. J'ai décidé de créer un site internet en deux partie. La première est la partie publique, qui présente l'association etc.... accessible à toute le monde.
La seconde partie est privé. Elle ne sera accessible que par les personnes appartenant à l'association: adhérents,responsables,trésorier et président.
Dans cette partie privé, il y aura un planning semaine par semaine. Sur laquelle 4 types de personnes auront des droits différents. les responsables pourront noter leur présente en fonction du jour et de la tranche horaire. Ensuite les adhérents ne pourront que voir ce planning. Le trésorier aura les même droits que les responsable, mais en plus il pourra créer de nouveaux adhérents. Le président aura les mêmes droits que le trésorier mais en plus, il pourra créer des responsables, un nouveaux trésoriers etc... Chaque adhérent pourra à sa guise changer les informations sur sa fiche personnelle.


_Développement:

Sur le site publique, j'ai un formulaire composé de login, mot de passe et d'un bouton submit.
Ce formulaire renvoie sur une page Verif.php pour vérifier le contenu de ces informations. Si sa correspond aux champs de la table user, alors l'utilisateur accède à la partie privé. Sinon il retourne sur le formulaire de la page publique.

J'ai deux lignes en tête de ce fichier verif.php qui sont :
//connection au serveur
$cnx = mysql_connect( "IP du poste client", "nom utilisateur", "mot de passe user" ) ;
//sélection de la base de données:
$db = mysql_select_db( "nom de la base",$cnx ) ;
Ces deux lignes permettent de se connecter en fonction des droits de la personne. Correspond à la table de mysql user_prive.

J'ai remplacé les données entre les guillements par des variables. Celle-ci se remplissent en fonction des données que l'utilisateur insère. une fonction php qui récupère l'IP client, le nom et le mot de passe sont identiques entre la table user de ma base de donnée et la table user_prive de mysql. Cela fonctionne sur un seul poste. C'est à dire, que ça respect bien les droits de l'utilisateur: grant select, insert etc....
Mais lorsque l'on se connecte en simultané avec un autre pc, les deux ordinateurs ne peuvent se logguer simultanément. J'ai laissé tomber cette idée.

_Résolution:

Ayant compris que cette ligne mysql_connect( "IP du poste client", "nom utilisateur", "mot de passe user" ) ; permet de donner les droits d'accès a la base de donnée, j'ai pensé à un autre fonctionnement.
Au niveau physique, créer 4 dossiers portant ces noms: adhérents, responsables, trésorier, président. Au niveau de mysql, dans la table user_prive créer 4 utilisateurs: adhérents, responsables, trésorier, président avec des droits différents.
Dans ces différents dossier insérer un fichier connexion.php en fonction du nom d'utilisateur. Par exemple dans le dossier adhérent mettre
mysql_connect( "$IP", "adhérent", "mot de passe adhérent" ).
Insérer dans chacun de ces dossier les pages internet accessible aux utilisateurs spécifiques.
Dans la table user de ma base de donnée, j'ai le login, le mot de passe et le status:adhérent,responsable.... En fonction du login et du mot de passe du formulaire, le fichier Verif.php renvoie l'utilisateur s'il est correcte dans le bon "sous site" en fonction de son statut. Sachant que des pages seront tel que planning.php apparaitront dans ces 4 dossiers. j'ai donc pensé à mettre un if en tete de page:
sa cherche le loggin en font de $session("login") et sa correspondance dans le champ status pour éviter que des adhérents aient accès à la partie président juste en changeant des éléments dans la barre d'adresse.

_Finale
Je ne pense pas que ce soit un moyen très sain, donnez moi vos idées, pour faire un site le plus professionnel possible. Merci.
Au pire dirigez moi vers un site qui explique la manière de faire ça. J'apprend mieux quand je cherche par moi même.
Messages postés
567
Date d'inscription
mercredi 4 octobre 2006
Statut
Membre
Dernière intervention
30 août 2011
10
Il me semble que tu te complique un peut la vie. Voici ce que je ferais (et ce que beaucoup de personnes font je pense).

Je n'utiliserais qu'une connexion MySQL ;
J'utiliserais une table de droits ;
J'utiliserais un système d'inclusion de modules dans lequel chaque module gèrerais les droits ;
Je ferais un BackEnd (qui gèrerais les droits) pour la configuration du site et de chaque modules ;

Cela ressemble en réalité à un CMS. Si d'ailleurs tu n'as plus le temps de réaliser ce projet, tu peux t'intéresser aux CMS comme Joomlaqui comportent des modules qui permettent de réaliser un site comme tu le veux sans trop s'y connaitre en développement.

J'utiliserais une table de droits ;

Tu te crée une simple table de droits du style ID (Int auto incrément) Droit (VarChar 255)
Dans laquelle tu met ta liste de droits par exemple : 1-Annonyme (Non connecté)/2-User (Connecté/Inscrit mais non adhérent)/3-Adhérent/4-Responsable/5-Trésorier/6-Président/7-Admin (Gère l'ensemble du site)

Ensuite dans ta table User, tu ajoute une colonne droit dans laquelle tu pourras lister les droits d'un utilisateur, par exemple (3,5 pour le trésorier).

Ainsi pour chaque utilisateur tu définis des droits, ce qui permet de réagir rapidement et facilement quand un utilisateur change de droits.

J'utiliserais un système d'inclusion de modules dans lequel chaque module gèrerais les droits ;

Ce genre de système t'éviteras de dupliquer des bouts de code et de refaire 1 page par type de profiles.
Je créerais un site qui suivant l'url inclus des pages php.

Ensuite je créerais donc une unique page pour le calendrier, et suivant les droits de l'utilisateur je n'afficherais pas les mêmes choses.
Sachant que la plus part du module seras identique, tu gagneras du temps.
Si l'utilisateur n'as pas les droits, tu le redirige vers une page d'erreur du même style que quand il entre un mauvais mot de passe.

Pour le BackEnd (Ou partie administration), tu crée en quelque sorte un autre site dans un dossier /admin/ par exemple qui te permet d'administrer l'ensemble des modules. Seul les utilisateurs ayant les droit suffisant pouvant voir ces pages (Tu redirige les autres vers une page d'erreur).

Voilà une architecture qui est utilisée par la plupart des CMS...

_________________________________
Min iPomme
Messages postés
3
Date d'inscription
mardi 29 janvier 2008
Statut
Membre
Dernière intervention
9 octobre 2009

merci beaucoup, je vais me pencher sur ta réponse.
C'est très gentil à toi de m'avoir répondu si clairement