begin process at 2008 07 21 00:33:54
1 213 530 membres
431 nouveaux aujourd'hui
14 167 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SESSION ET ACCES


Information sur le tutorial

Catégorie :Tutoriaux Date de création : 25/11/2005 11:45:28 Vu : 8 246 fois

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (15)
Ajouter un commentaire et/ou une note

Description

Gestion des niveaux d'accès avec php

Tutorial

Bonjour a tous développeurs et développeuses.
Ceci est une petit aide pour les débutants qui voudraient mettre des niveaux d'accès sur l'administration de leus site.

Tout d'abord, il faut créer une table administrateur dans laquelle vous mettez les champs login, password,numsession et numaccès.
Ensuite vous créez un page de vérification du login et du password dans lequel vous vérifierez si l'administrateur est bien enregistré dans la base de données. Si il est bien enregistré, vous lui permettez d'accéder à la partie administration du site en créant un numero de session.Une fois qu'il est sur la page administration, vous vérifiez son numero d'accès et vous affichez les liens ou non selon son niveau d'accès.

vous devez créer un lien de fermeture pour effacer le numero de session.

le numero de session sert à la sécurité de la partie administration. Tant que le numsession n'a pa été créé, on ne peut pas accéder au site.

voici le code:

enrgistrer le numsession
session_start();
$NumSession = session_id();
session_register("NumSession");
session_register("MonPassword");
session_register("MonLogin");
$Query = "Update administrateur set NumSession = '".$NumSession."' where Login='".$MonLogin."' and Password='".$MonPassword."';";
 mysql_query($Query) or die ("erreur de requête");

supprimer le numsession
session_start();
require("Connection.php");
mysql_connect(SERVEUR,NOM,MOTDEPASSE) or die ("Erreur de connexion au serveur");
mysql_select_db(BASE) or die ("Erreur de connexion a la base de données");
if (session_is_registered(NumSession))
 {
 $Query="Update administrateur set NumSession = ' ' where Login = '".$_SESSION["MonLogin"]."' and Password = '".$_SESSION["MonPassword"]."' and NumSession = '".$_SESSION["NumSession"]."';";
 mysql_query($Query) or die ("Erreur de requête : ".$Query);
 session_unset();
 session_destroy();
 }
header("location:Passwordpage.php");
?>

vérifier que le numsession existe
session_start();
if(!session_is_registered(NumSession))
 {
 header("location:Passwordpage.php");
 }
else
 {
 require("Connection.php");
 mysql_connect(SERVEUR,NOM,MOTDEPASSE) or die ("Erreur de connexion au serveur");
 mysql_select_db(BASE) or die ("Erreur de connexion a la base de données");
 }
?> 
 

01 décembre 2005 14:58:08 :
Modif du titre
02 décembre 2005 11:44:43 :
categorie
  • signaler à un administrateur
    Commentaire de Troll29 le 25/11/2005 11:51:06

    N'hésitez pas à me poser des questions. et surtout n'oubliez pas que je suis nouveau et que c'est mon premier tutorial.Alors ne soyez pas trop vache si il est un peu simpliste mais j'essaie d'échanger quelques infos pour garder la notion d'échanges de concepts.

  • signaler à un administrateur
    Commentaire de malalam le 25/11/2005 12:43:03 administrateur CS

    Hello,

    plusieurs trucs :
    c'est vrai que c'est très -trop?- simpliste.
    je passe sur les notions de sécurité puisque finalement ce n'est pas vraiment le but du tuto.
    Par contre, session_register() est déprécié. Il faut assigner avec $_SESSION['nomChamp'] = valeur;
    Et mettre ses register_globals à off.

    Ensuite, à quoi te sert, dans ton exemple, d'enregistrer numSession dans ta table ? Tu ne t'en sers jamais.

    ah si un truc quand même : pourquoi stocker le mot de passe dans une variable de session ?

    le système normalement : un formulaire pour entrer un mot de passe et un identifiant.
    On vérifie dans la base si la paire existe. Si c'est le cas, on récupère l'utilisateur_id. (il manque un id à ta table). On le stocke. Et si on a besoin d'accéder à d'autres infos juste une fois de temps en temps, on se sert de cet id pour les récupérer dans la base. Tu peux stocker par contre les données dont tu as besoin souvent, comme le pseudo par exemple. Mais pas le mot de passe.
    Une fois que la session est créée, de toutes façons...elle reste la même. Si tu as stocké l'id, tu sauras toujours à qui tu as à faire.

  • signaler à un administrateur
    Commentaire de Troll29 le 01/12/2005 15:03:53

    je me suis mal expliqué dans mon tutorial. Le numsession sert a vérifier que l'administrateur est bien passé par la page de verif du mot de passe. Exemple: si quelq'un tape l'url de la page de l'administration et que le numsession n'a pas été créé alors on le renvoi a la page de vérif.
    Je n'ai pas mis l'id dans le tuto car il me semblait evident qu'on le mette.
    le mot de passe et l'identifiant en session me sert a une interface plus convivial avec le nom de l'utilisateur.

  • signaler à un administrateur
    Commentaire de FhX le 01/12/2005 19:48:40

    heuresement que je n'utilise pas ce genre de code :)

  • signaler à un administrateur
    Commentaire de Troll29 le 02/12/2005 11:47:35

    les tutoriaux servent aussi aux personnes qui débutent en php et qui ne connaissent pas grand choses. Si vous voulez que des codes d'expert, alors formez votre propre communauté:|

  • signaler à un administrateur
    Commentaire de Troll29 le 02/12/2005 11:50:36

    de plus ce code que vous critiquez fonctionne car j'ai fait des test en lignes et l'important pour un code c'est qu'il marche et non qu'il soit récent.

  • signaler à un administrateur
    Commentaire de malalam le 02/12/2005 16:43:26 administrateur CS

    Là n'est pas la question.
    Un tutorial, un code, fait pour les débutants doit être plus parfait encore qu'un code fait pour des experts.
    Parce qu'un débutant prendra de mauvaises habitudes...il ne sait pas ce qui est bon, et moins bon, dans un code. Dans un tuto, il va prendre ce qui y est marqué pour argent comptant.
    Alors, si tu veux faire un tuto...tiens compte des critiques que l'on t'adresse. Sinon ça ne sert à rien de faire un tuto.

  • signaler à un administrateur
    Commentaire de Troll29 le 02/12/2005 17:30:51

    mon dernier commantaire a été ecrit en raison du doute de la fonctionnalité du code que j'ai écrit. de plus, j'ai essayé d'écrire un tuto pour ne pas seulement pomper du code mais pour également essayer d'aider. Si ca n'a pas marché, tant pis pour moi mais soyez plus cool avec les nouveaux. et surtout ne pas dire "heuresement que je n'utilise pas ce genre de code".

  • signaler à un administrateur
    Commentaire de FhX le 02/12/2005 17:45:41

    Nan mais c'est un peu du cafouillage tout ca.
    Je me demande toujours à quoi peut bien servir ton code de tuto... gestion d'un "Qui est en ligne ?" ou alors gestion de session via MySQL ?

    Parce que j'ai beau chercher je ne trouve pas l'utilité évidente au minimum.

    Oui en faite, à première vu, tu veux faire de la gestion de session via MySQL tout en utilisant session_start(). C'est pour ca que je te dis que ca ne sert pas à grand chose ! Je dis pas que l'idée est mauvaise, car j'ai fais moi même une classe que tu peux retrouver sur ce site (quoi que... jl'update en vitesse) et qui fait de la gestion de session via MySQL sans session_start().

    En plus, tu utilises des fonctions qui sont un peu vieillote, et pour finir :
    "header("location:Passwordpage.php");" <== header('Location :Passwordpage.php'); (faut un espace entre Location et : )

    Voila voila :)

  • signaler à un administrateur
    Commentaire de Troll29 le 02/12/2005 17:58:41

    on s'est tous un peu emporte, surtout moi, ce n est pas grave et dans qulques années; lorsque nous serons de developpeurs de génies, on en gar dera un bon souvenir. En fait mon truc marche mais j'ai du mal a l'explquer; je sui programmeur mais la formation sera pour plus tard. alors je vais encore m'entrainer.
    merci quand meme.

  • signaler à un administrateur
    Commentaire de FhX le 03/12/2005 19:13:59

    C'est pas méchant ma critique, je dis juste que ton code pourrait servir à quelque chose si tu enlèves le session_start().

    A la limite, un tuto sur comment fonction les sessions en PHP, pourquoi pas ;)

  • signaler à un administrateur
    Commentaire de PmSphere le 17/11/2006 00:48:09

    Je comprends les motivations de TROLL29 et je les trouve bonnes.
    C'est grace a des initiatives comme celles la que les communautés avancent.

    Je comprensd egalement la mise au point de Malalam qui dit, avec raison, qu'un "article" au sens large destiné aux débutants est d'autant plus délicat qu'il ne faut montrer que le bon exemple.

    Et Fhx n'a pas tord non plus, dansle sens ou en apportant une critique brute, il souleve les points faibles.

    Le probleme entre vous est simplement les moyens d'exprimer tout ceci.

    Ce qui serait bien, c'est d'avoir une nouvelle version, harmonisée avec PHP4 ou 5, au code claire, découpé et commenté.
    Avec pour chaque "partie" intégré dans le code, un commentaire sur le fonctionnement de ladite partie.

    Et FHX, il est ou ton code de sessions sans session_start()? :D

  • signaler à un administrateur
    Commentaire de webdeb le 14/01/2007 23:58:41

    Je dépose mon tutoriel sur les sessions. Il se trouve à cette adresse :

    http://www.hugohamon.com/blog/lire-16-php-les-sessions-comment-ca-marche.html

  • signaler à un administrateur
    Commentaire de RcrivelliNET le 20/09/2007 00:52:17

    Bonjour à toutes et à tous,
    Je viens également mettre mon grain de sel dans votre conversation. La critique est facile et l’art difficile.

    Comme l’a si bien fait remarquer Troll29 nous sommes sur un site où se côtoient chaque jour une population de développeurs de tous niveaux confondus.

    mes nombreux post sur le sujet en attestent, je ne taris pas d’éloges sur les bienfaits d’un tel système. La critique fait partie intégrante de ce site, mais la critique, pour peu qu’elle ne soit gratuite, reste un art difficile à exercer.

    J’en irai donc de ma critique, en essayant d’y appliquer les formes et ainsi faire avancer la collaboration.

    La simplicité est une chose essentielle en informatique, mais l’art de simplifier les choses complique bien souvent notre travail.
    En effet ici une façon de simplifier le code aurait été d’utiliser des class par exemple.
    Mais notre de tutoriel ne se serait plus adresser à des débutants.

    Je crois qu’un code pour débutants ne doit pas être simplifié bien au contraire.
    Je pense que l'erreurs qui est faite sur cet exemple c’est avant tout le manque de documentation.

    Un code non commenté quel que soit le langage est un code qui ne vaut pas grand-chose, et la je ne parle pas que des débutants.

    Imaginez-vous un projet du genre PHPBB non documenté et non commenté, son espérance de vie serait très limitée.

    Un code pour débutants est donc la pour apprendre la bonne façon.

    Le fait de comprendre évite également ces erreurs de plus en plus répandue du à un copier coller.

    J’émets une vive critique sur ce qu’a dit Troll29 « l’important c’est que ça marche ».
    Bien sûr à la base le fonctionnement est correct, mais en programmation on ne peut pas se cantonner à une petite partie.

    Je vous donne un exemple très répandue dans le monde de VB. :

    If motdepass=’1234’ then
      Msgbox(‘Le mot de passe est bon
    Endif

    Pardon pour la syntaxe je n'ai pas fait de VB depuis longtemps !

    Bien sûr ce code fonctionne parfaitement. Mais il n’y a pas besoin de faire 15 ans d’ingénierie pour comprendre qu’il est dangereux de l’utiliser. Je ne vous ferez pas l’affront de vous expliquer pourquoi.

    Quoiqu’il en soit, toutes les contributions sont importantes et je remercie Troll29 d’avoir partagé son temps avec nous.

    Je vous souhaite une bonne soirée.

    Restez cool.

    Meilleures salutations.


  • signaler à un administrateur
    Commentaire de 001hoyem le 21/04/2008 15:58:47

    j'ai besoin d'un script pour le passage par login et mot de passe sécurise
    a la compte directeur pour mon site

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS