Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
855 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Conseil sur panneau d'administration en PHP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conseil sur panneau d'administration en PHP

n°1695594
lilougirl8
Posté le 01-03-2008 à 16:38:55  profilanswer
 

Bonjour,
 
J'aurais besoin d'un conseil, voilà je suis en pleine création de site internet. Sur mon site, les internautes pourrons s'inscrire, il auront donc un espace perso protégé par mdp...
 
En plus de ça, pour gérer le site, j'ai créer un panneau d'administration.
 
Les administrateurs et les membres sont actuellement sur la même table et se connecte via le même formulaire (par défaut ils ont accès aux mêmes infos que les membres), la différence est que il y a un lien caché uniquement pour les administrateur (type phpbb) qui donne accès au panneau d'administration du site. Je souhaiterai, dans un souci de sécurité, procéder à une nouvelle authentification via une page login indépendante exclusivement reservée aux administrateurs...
 
Mon problème est donc... comment mettre en place ça avec les sessions sachant que l'administrateur etant déjà connecté, il a déja une session valide (Comment différencier 2 sessions?) et faut t'il séparé la table admin et la table membres??

mood
Publicité
Posté le 01-03-2008 à 16:38:55  profilanswer
 

n°1696226
lilougirl8
Posté le 03-03-2008 à 12:23:47  profilanswer
 

Merci pour ton aide et rebonjour,
 
Voila j'ai donc réussi a créer 2 sessions courantes, que j'ai distingués par le nom (et aussi le nom des variable au passage).
 
J'ai donc 2 script indépendant pour le logger, et une nouvelle fonction que je met au debut de chaque page (additionner a la 1ere) à la quelle j'ai rajouter la vérification des droits :
 
voila le code :
 

Code :
  1. function page_securite_admin() {
  2.         if(isset($_SESSION['admin_logged'])) {
  3.                 if($_SESSION['admin_logged'] == 1) {
  4.                         if(isset($_SESSION['admin_ip_client']) && ($_SESSION['admin_ip_client'] == $_SERVER['REMOTE_ADDR'])) {
  5.                                 if (isset($_SESSION['admin_HTTP_USER_AGENT'])) {
  6.                                     if ($_SESSION['admin_HTTP_USER_AGENT'] == mhash(MHASH_SHA256, $_SERVER['HTTP_USER_AGENT'])) {
  7.                                                 if(isset($_SESSION['admin_user'])) {
  8.                                                         if($_SESSION['user']->droit == 4) {
  9.                                                                 return true;
  10.                                                         }
  11.                                                 }
  12.                                         }
  13.                                 }
  14.                         }
  15.                 }
  16.         }
  17.         return false;
  18. }


 
Je procede comem ça sur chaque page :
 

Code :
  1. session_name('membres');
  2. session_start(); // Création de la première session
  3. session_write_close(); // Fermeture de la première session, ses données sont sauvegardées.
  4. session_name('admin'); // Indication du nom de la seconde session
  5. session_start(); // Ouverture de la seconde session
  6. if(!page_securite()) { // Vérification de la 1ere session
  7.         header("Location:".$racine_relatif."/erreur.php?error=6" );
  8.         die();
  9. }
  10. else if(!page_securite_admin() || $_SESSION['user']->droit != 4) { // Verification de la session admin
  11.         header("Location:".$racine_relatif."/erreur.php?error=6" );
  12.         die();
  13. }
  14. else { // affichage de la page


maitenanent ça fonctionne, (par contre je c'est pas si c'est vraiment la meilleur façon de procéder).
 
par contre, j'ai un problème pour la deconnexion, je souhaiterai faire sauter la session admin, sans faire sauter la 1ere.
 
 
Pour eviter de vider toutes les variables sessions j'ai juste supprimé les principales avec unset. Pour la session
j'ai fait ça : session_destroy('admin');
 
mais ça a pa l'air de marcher.
 
Pourriez vous meclairer s'il vous plais ?

n°1696274
kao98
...
Posté le 03-03-2008 à 14:04:19  profilanswer
 

Moi, je n'aurais pas fait deux sessions, j'aurais complété celle qui existe déjà.
 
J'y aurais ajouté une donnée "est_administrateur", par défaut à 0, et qui passe à 1 dès que l'identification en tant qu'administrateur a été faite.
 
Ca donnerais, par exemple :
 
Un visiteur arrive sur le site : est_administrateur = 0
Le visiteur est identifié automatiquement (cookie), ou s'identifie lui-même : est_administrateur = 0
Le membre clique sur le lien du panneau d'administration. est_administrateur == 0, on affiche le formulaire de login
Le membre s'identifie en tant qu'administrateur : est_administrateur = 1
 
Et voilà, le tour est joué ! Bien sûr, est_administrateur n'est pas sauvegardé dans le cookie du membre et n'est donc conservé que pour la session courante.
 
Après, il faut peut-être sécurisé un peu plus que ça, mais l'idée de base est là, non ?


---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1696278
lilougirl8
Posté le 03-03-2008 à 14:09:24  profilanswer
 

Effectivement ça peut être une solution, j'ai voulu distingué 2 sessions alors que je peut en concerver une unique...
Mais ma question la plus important est ce que niveau sécurité ça change quelque chose de distingué les sessions ou au final ça change pas beaucoup?

n°1696280
kao98
...
Posté le 03-03-2008 à 14:10:20  profilanswer
 

Je ne crois pas que ça change quoi que ce soit, si ce n'est en terme de simplicité de développement.
Mais je ne suis pas non plus un pro des sessions !


Message édité par kao98 le 03-03-2008 à 14:10:37

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
n°1696301
lilougirl8
Posté le 03-03-2008 à 14:49:51  profilanswer
 

merci pour ton conseil, j'ai revu tout mon système cété une usine à gaz j'ai fait comme tu ma dit... ça a l'air de rouler,

 

Donc : Pour la deconnexion, je vide simplement ma session_['administrateur'], ce qui permet de rester connecter... tout de meme a la deconnexion.


Message édité par lilougirl8 le 03-03-2008 à 14:50:22

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Conseil sur panneau d'administration en PHP

 

Sujets relatifs
PHP : SMTP server response: 501 Bad address syntax[PHP] Lire/Modifier/Enregistrer fichier .txt
[PHP/MYSQL]PlanningInterface web de remonté de log
PHP et Modbus/TCPScript PHP / upload
include PHP: garder le chemin du module intégré[PHP] Demande de script
[PHP] Récupérer les noms de tous les fichiers[PHP][MAIL] Envoyer un message d'échec de distribution
Plus de sujets relatifs à : Conseil sur panneau d'administration en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR