|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre à l'essai
![]() Inscription : mai 2005 Messages : 71 ![]() |
Bonjour à tous.
Après recherches, je me vois dans l'obligation de demander de l'aide ici. Voilà, j'aimerais que la connexion à une section privée soit refusé si la date d'expiration donné par l'admin est dépassé. Je travail avec une sesssion et base de donnée. J'ose imaginer que je n'ai pas à transporter la variable de page en page car la connexion sera accepté ou refusé. Donc, pas besoin de l'enregistrer...juste la vérifier. Si ce n'est pas le cas, j'aimerais le savoir. Je ne sais juste pas comment m'y prendre. Voici le code de ma page de login : Code :
Je vois un genre de : J'ajoute "expiration" à mon select de BD Ensuite : $today = date("Y-m-d"); if ($today > expiration) refuser la connexion (donc c'est ici que j'ai besoin d'aide) Il faut que j'adapte le tout au script que je possède. Merci à l'avance pour les réponses.
|
||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
Donc je récapitule ce que j'ai compris :
- Besoin de vérifier si la personne n'est pas rester inactive trop longtemps - Le cas échéant, la déconnecter. Pour ceci, quand la personne se connecte tu mets en session le temps maximum d'inactivité (en seconde). (On la note SESSION 1) Et au même moment tu créais une autre session qui va contenir le time() de sa connection. (On la note SESSION 2) -> Tu as 2 sessions exprimés en seconde. Maintenant il va te falloir créer un fichier que tu vas inclure à chaque pages que tu souhaites limitées aux membres dans lequel tu vas vérifier que le time() actuel est inférieur à SESSION 1 + SESSION 2. Ce qui signifie que la personne est encore connecté. Dans ce cas là, il ne se passera rien. Dans le cas ou le time() actuel est supérieur à SESSION 1 + SESSION 2, il te faudra exécuté un session_destroy() pour déconnecter la personne (Ou au moins un session_unset()). Je ne pense pas que ça soit bien compliquer à coder, s'il y a un problème, n'hésite pas |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : mai 2005 Messages : 71 ![]() |
Merci pour la réponse.
Mais j'ai du mal m'exprimer. Quand j'enregistre un membre, j'ai un champ à remplir pour la date d'expiration. Cela me permettra d'assigner un accès que pour un temps limité. Ex.: Un accès d'un jour ou une semaine etc... Donc je veux comparer la date d'expiration dans la base de donnée à celle de la journée en cours. Et si elle dépasse la journée en cours, il n'y a tout simplement pas de connexion possible. Voilà... Reste juste à savoir comment faire avec le script plus haut. Je crois bien que ça se fasse à même cette page. Désolé pour la complexité de mon explication et merci à l'avance pour un éclaircissement.
|
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Bien que ce que tu demande soit réalisable relativement facilement, il nous faut avoir quelques infos supplémentaires.
Nous allons modifier la façon de fonctionner de ton site et si tu n'y prends pas garde tu peux te retrouver à refuser l'accès à certains membres qui sont déjà enregistrés. ton site est t'il déjà en production ? Comment gerer les admins, qui sont aussi des utilisateurs ? doit t'on prevoir le cas d'un accès illimité dans le temps ? Que veut tu faire des utilisateurs lorsque leur compte sera obsolète ? (les supprimer de la base ou desactiver leur compte ?) Car de cela va dépendre la façon de faire. @++ |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : mai 2005 Messages : 71 ![]() |
Merci pour la réponse.
Je te réponds dans l'ordre de tes questions. - oui, il est en production (Ça aurait fait une grosse différence sinon ?) - pour les admin, il n'y en aura qu'un (la secrétaire) et j'ai un système de niveau d'accès déjà implanté. - seulement que pour l'admin mais ce n'est pas nécéssaire je veux faire ça au plus simple possible. - compte tenu que le champs "expiration" de ma base de donnée contient une date, la désactivation devrait se faire automatiquement. Pour la suppression, je n'y avais pas pensé. Cependant pour le peu que des gens auront accès, ce n'est pas primordiale. En tout, il va y avoir à peine 10 personnes qui passeront voir par année. C'est une base de donnée pour une association. Donc il y aura que de la consultation a part bien-sur la secrétaire qui pourra modifier à sa guise. Mais pour ça, mon système de niveau d'accès est déjà fonctionel. Soit (guest, member, admin) 3 niveaux. J'écris beaucoup mais j'essaye de donner le plus d'information possible pour que ce soit plus facile de me venir en aide. Alors merci encore à l'avance pour la boué.
|
|
|
00
|
|
|
#6 | ||
|
Membre éclairé
![]() Inscription : août 2006 Messages : 379 ![]() |
C'est simple en faite.
Quand la personne s'inscrit, tu récupères le time(), puis tu lui rajoute un temps donné :Donne une expiration le jour suivant (pile poil). (1 semaine = 60 * 60 * 24 * 7) Bref tu rentres donc cette valeur lors de l'inscription, et quand la personne se connecte, si le time() de sa connection est > a la colonne expiration, alors elle ne peut se connecter. Pour un accès illimité tu met 0, et tu vérifies : Code :
|
||
|
|
00
|
|
|
#7 | ||
|
Membre régulier
![]() Inscription : janvier 2007 Messages : 85 ![]() |
Pour completer la réponse de SpiritOfDoc tu peux effectuer le test dans la condition ci-dessous.
Code :
tu peux pour cela comparer la variable time() actuelle avec celle définie dans le profil du visiteur ($expire). Tu as donc 3 cas * $expire=0 acces autorisé * time()-$expire<0 acces autorisé * time()-$expire>0 acces refusé pense à mettre a jour ta requête SQL pour extraire la variable $expire en même temps que le reste. @++ |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com