Espace membre par numero d'idClasse

didine7231 - 4 mars 2013 à 14:39
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 - 7 mars 2013 à 13:43
Bonjour à tous,

j'ai un soucis pour mon espace membre que je fais en php. J'aimerais avoir un espace membre pour chaque classe, pour les profs et pour l'administrateur. Sauf que je ne sais pas comment faire. La page pour se connecter a l'espace membre ressemble a ca :

<?php
// on teste si le visiteur a soumis le formulaire de connexion
if (isset ($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset ($_POST['pass']) && !empty ($_POST ['pass']))) {
$base = mysql_connect ('127.0.0.1', 'root');
mysql_select_db ('espacemembre',$base);

// on teste si une entrée de la base contient ce couple login/pass
$sql = 'SELECT count(*) FROM membre WHERE login="'.mysql_real_escape_string($_POST['login']).'"
AND pass_md5="'.mysql_real_escape_string(md5($_POST['pass'])).'"';
$req= mysql_query($sql) or die ('Erreur SQL !
'.sql.'
'.myslq_error());
$data=mysql_fetch_array($req);

mysql_free_result($req);

// Si on obtient une réponse, alors l'utilisateur est un membre

if ($data[0] == 1 )
{
session_start();
$_SESSION ['login'] = $_POST['login'];
header ('Location: espacemembre.php');
exit ();
}

// si on ne trouve aucune réponse, alors l'utilisateur s'est trompé soit dans son login, soit dans son mot de passe
elseif($data[0] == 0 ) {
$erreur='Compte non reconnu.';
}

// sinon, alors la, il y a un gros soucis

else {
$erreur = ' Probleme dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
}
else {
$erreur = ' Au moins un des champs est vide.';

}
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>BTS SIO Networkin'</title>
<link rel="stylesheet" type="text/css" href="style.css" >
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>



<li>CFP Sainte Croix
Lycée Sainte Croix
Site du zéro

Korben
Le journal du geek










Connexion à votre espace membre

<form action="indexespacemembre.php" method="post">
Login : " />

Mot de passe : " />




</form>
<?php
if (isset($erreur)) echo '

',$erreur;
?>















</html>


Du coup je me connecte toujours à la même page d'espace membre.
J'espère que vous pourrez m'aider. Merci d'avance.

15 réponses

cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
5 mars 2013 à 18:17
Salut, jusque-là, tout va bien.
Il faut récupérer une ressource commune à un rôle.
Pour cela, il te faut une table supplémentaire dans la db pour la gestion des rôles.
Exemple :
r_id | r_role
--------------
1 | Admin
2 | Manager
3 | Intégrateur

Par la suite, une gestion des ressources avec ci-dessous comme exemple pour le manager :
rs_id | rs_r_id | rs_ressource
-------------------------------
1 | 2 | gestion-user-read
2 | 2 | gestion-user-write
3 | 2 | gestion-page-read

Donc, tu constateras que le role id 2 (le manager) à accès aux ressources 1,2,3 dans la table ressource car roles.r_id est égal à ressource.rs_r_id.

Par la suite, tu affiches et tu laisses les accès aux ressources à un rôle prédéfini.
Tu peux faire cela avec une db pour gérer les ressources dynamiquement ou bien avec un fichier conf de type XML ou autre et tu ajoutes de nouveaux rôles et ressources manuellement.

Et donc bien sûr, tu ajoutes un champ supplémentaire à la table membre avec en valeur, le rôle que tu veux lui attribuer (1, 2 ou 3, etc.) membres.m_r_id est égal à roles.r_id.

Vois-tu le fonctionnement ?

stéph
0
Tout d'abord merci de ton aide.

Je t'explique cela en détail : Dans ma base pour l'instant j'ai deux tables qui sont celles ci :
membre (id,login,pass_md5,idClasse) idClasse en référence a id de Classe
classe (id,libelle)

et les champs dans classe sont : libelle id
BTS SIO 1PRO 1

BTS SIO 1 2
BTS SIO 2PRO 3
BTS SIO 2 4
FORMATEUR 5
ADMINISTRATION 6

Et en faite ce que je voudrais c'est qu'on aille sur une page différente suivant l'idClasse.

Je sais pas si tu comprends..
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
5 mars 2013 à 22:20
Je comprend ce que tu veux faire.
Ce que tu veux est très simple, pour que le membre ce logue à son espace de membre, tu dois faire une vérification par rapport à ces accès. Dans la même requête SQL, tu fais un LEFT JOIN sur la table classe.
Genre :
SELECT idClasse FROM membre
LEFT JOIN classe 
ON (membre.idClasse = classe.id) 
WHERE login = :login 
AND pass = :pass


En PHP, tu rediriges par rapport à idClasse :

<?php
switch ($row['idClasse']) {
    case 1:
        header("Location: page-1.php");
        break;
    case 2:
        header("Location: page-2.php");
        break;
}
?>



Mais pour moi ce n'est pas la solution.
Le problème qui t'attends, la redondance de code.
Imaginons que le membre ce connecte à sa page respective.
Tu vas créer pour chaque membre une page index reprenant un header, un footer, un menu principal mais différent pour chaque membre.
Si deux mois plus tard, il te faux un nouveau type de membre, je ne voudrais pas être à ta place.

Alors qu'avec mon idée, tu as une seul page avec des conditions.
Avec la possibilité de bloqué des accès et par la suite, les données.
Même pour un menu principal, tu affiches les liens accessible aux membres (Read-only, voir l'explication plus bas).
Il te suffit de créer une gestion supplémentaire pour les administrateurs pour gérer dynamiquement une liste de checkbox cocher/décocher des ressources pour données des accès ou non à un rôle.
En reprennent mon exemple, j'ajoute un accès supplémentaire pour les admin :
rs_id | rs_r_id | rs_ressource
-------------------------------
4 | 1 | gestion-role-write

Connais-tu les acronymes RO et RW ?
RO = ro read only (lecture seul)
RW = read and write (lecture et écriture)
Comment vas-tu gérer ce genre de données si tu sépares le tout, ça sera ingérable.

La seul difficulté (rien de difficile) que tu as avec ma méthode, c'est un deuxième LEFT JOIN, car il y a deux tables.
Et tu diriges tout les membres vers la même page.

Imagine toi qu'avec mon Framework, au travers d'une seul page index, je gère deux backoffice qui eux même gèrent une multitude de sites avec des Templates complétement différents.
Le truc pour arriver à ce niveau, c'est de gérer correctement les URL et l'objet pour travailler en MVC.
Mais voilà, c'est pas ton objectif mais pour gérer correctement tes membres, c'est un bon départ.

stéph
0
Je voudrais bien faire comme tu me dis mais je connais rien la dedans.
0

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

Posez votre question
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
6 mars 2013 à 12:30
Je comprend ! Ce que je te demande c'est de sauter quelques étapes dans ton apprentissage et évité ce genre d'erreur.
Donc, il y a une belle remise en question par rapport à ton idée que tu avais initialement.
Mais si tu veux, pose moi des questions au fur et à mesure dans le développement te ton application.
Commence par créer les tables et pour comprendre les liaisons, insère les valeurs dans chaque champs.
Par la suite, fait la requête dans le phpMyAdmin et dis moi ce que tu penses du résultat retourné.
Il y a un moment ou tu auras un déclic et tu visualiseras concrètement ton développement.

stéph
0
Je vais essayer votre méthode alors. Je vais prendre vos explications ci dessus et voir si je peux y arriver par mes propres moyens. Et si jamais j'ai des questions ou soucis je vous ferais signe
0
Du coup est ce que par exemple on peut mettre une ressource par page et par role ?
Par exemple si je veux mettre un cahier de texte ou les profs et les formateurs pourront écrire mais pas les élèves.
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
6 mars 2013 à 14:13
Oui, voici un exemple.

Table membre
m_id | m_login | m_pass_md5 | m_r_id | m_name
-----------------------------------------------
1 | toto | 123456 | 1 | didine7231 (Admin)
2 | titi | 921456 | 2 | Frédéric (Prof)
3 | tetu | 321456 | 2 | Valérie (Prof)
4 | tata | 421456 | 3 | Jean (Formateur)
5 | tete | 821456 | 4 | David (Élève)
6 | totu | 221456 | 4 | Pierre (Élève)
7 | toti | 421456 | 5 | Nicolas (Parent)
8 | tatu | 921456 | 3 | Francis (Formateur)
9 | tito | 421456 | 5 | Ives (Parent)

Table role
r_id | r_role
--------------
1 | Admin
2 | Profs
3 | Formateurs
4 | Élèves
5 | Parents

Table ressource
rs_id | rs_r_id | rs_ressource
-------------------------------
1 | 1 | cahier_de_texte-write
2 | 1 | cahier_de_texte-read
3 | 2 | cahier_de_texte-write
4 | 2 | cahier_de_texte-read
5 | 3 | cahier_de_texte-write
6 | 3 | cahier_de_texte-read
7 | 4 | cahier_de_texte-read
8 | 1 | ajouter_un_role-write
9 | 1 | ajouter_un_role-read

Dans cet exemple, tu as l'admin qui à accès en lecture et en écriture au cahier et à la création de rôle.
Les prof et les formateurs ont accès en lecture et en écriture au cahier.
Les élèves ont accès uniquement en lecture au cahier.
Et les parents, rien (même pas lecture) car il n'y a pas de ressource pour leur rôle.

Les liaisons via les champs sont membre.m_r_id role.r_id ressource.rs_r_id

stéph
0
Tout d'abord merci de prendre du temps pour moi.

D'accord ca j'ai compris. Mais ensuite pour mettre ca en php je vois pas du tout..
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
6 mars 2013 à 15:51
Tu maitrises bien le PHP ou pas du tout ? :)

stéph
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
7 mars 2013 à 10:38
C'est la deuxième fois que je propose ce beau projet et aucun débutant ne voit un intérêt.

Beaucoup de paroles et peu d'effets.

stéph
0
On va dire qu'en Terminal j'ai appris les bases tout ce qui fonction avec mysql, les formulaires avec les post. Et cette année pour un projet encadré personnel en développement ( parce que je suis en BTS SIO option dev) je dois faire un site pour notre section BTS SIO. C'est pour ca que je voudrais faire cela. Je voudrais pouvoir monter un site plutot pro, puisque je pense il va vraiment être mis en place au CFP ( centre de formation professionnel ). Et puis ca me permettrait d’approfondir mes connaissances. ;)


Amandine.
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
7 mars 2013 à 11:59
Super, c'est un beau projet.
Cela veux dire quoi pro pour toi ;)
Tu codes avec une méthode procédural et pas en objet.
Pour un petit projet, ça passe.
De plus, tu codes avec l'api mysql_ alors que PDO est bien plus pro.
C'est pas top.
Si tu veux faire des tests, ne travail pas directement sur le projet que tu souhaites présenter car avec ta culture actuel, c'est pas pro.

Si tu veux présenter un projet ambitieux dans le style professionnel, il faut déjà avoir de l'expérience. Mais, si tu es bien encadrer c'est différent.

Si je peux me permettre, fait ce tuto Débuter avec Zend Framework 1.5 (approche MVC) qui est super simple.
Par la suite, uniquement pour évoluer mais si tu n'y arrive pas c'est pas grave, essaye les versions ultérieur du Zend Framework.
Je disais, c'est pas grave, car si tu comprends déjà le fonctionnement de la version 1.5, ton projet aura de la gueule .

stéph
0
Quand je dis pro, c'est que je voudrais faire un site qui ressemble vraiment a un vrai site web. Pas forcément utilisé des outils pro.

Je vais étudié ce tuto. Merci beaucoup.
0
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
7 mars 2013 à 13:43
Super a+

stéph
0
Rejoignez-nous