|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Bonjour,
Je veux limiter certaines pages de mon site à l'accès. J'utilise pour cela des sessions. Tout fonctionne pour l'identification des mots de passes et des logins qui sont dans une base de données SQL Server. Par contre, j'ai un pb pour le suite. J'ai mis le code suivant sur chacune de mes pages afin que pour les consulter, l'utilisateur ai ouvert une session : code: Code :
|
||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 2 288 ![]() |
Les sessions sont, il me semble, valable pour une durée donnée (que tu définis quand tu crées ladite session.
Donc oui si tu as mis qu'elle était valable 3h, la fermeture du navigateur ou le rédémarrage d'Apache conserve tout de même la validité de ta session pendant 3h. Montres le code qui crée la session pour voir |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Les sessions sont stockées (en general) dans des fichiers sur le serveur.
L'identifiant de ce fichier est (en general) stocké dans un cookie. Du coup, si tu ferme tout, mais que le cookie est encore valide sur le poste client (date pas perimée) et que la session est encore valide sur le serveur (date pas perimée) ben tu est reconnecté automatiquement. (t'es pas deconnecté, en fait) Plusieurs solutions : - timeout sur le cookie / la session (genre 15 min) comme ça, au bout de 15 minutes sans action de l'utilisateur, la session est detruite - sur la page d'accueil du site, tu vide la session, ça oblige à se reconnecter - y'en a surement d'autres, mais c'est dejà les pistes les plus classiques |
|
|
00
|
|
|
#4 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
code de création de la session :
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Dans ce cas, desactive la propagation de l'identifiant de session par cookie.
Comme ça, l'utilisateur est obligé de se loggué à chaque fois qu'il va sur ton site par une adresse directe et pas par un lien (l'identifiant de session est propagé dans les liens) Pour plus d'infos, il y a les tuto sur les sessions |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Comment puisque désactivé la propogation de session par lien ? Il ne faut pas que l'utilisateur soit bloqué à chacune de mes pages. Tout de que je veux c'est qu'il soit obligé de se reconnecter à chaque fois qu'il revient dessus.
|
|
|
00
|
|
|
#7 | |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Citation:
Propagé l'identifiant par les liens, ça veut dire que le serveur va rajouté l'identifiant à chaque lien de tes pages, de facon automatique et transparente. Donc si l'utilisateur clique sur un lien de la page, ça marche. Par contre, si il tapes l'adresse dans IE, ça marche pas (il est pas connecté) Ca se configure dans la conf. du serveur. Ca depend aussi des hebergeurs. Mais un tutos sur l'utilisation des session pour securiser un site t'aiderais surement |
|
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Voilà c'est exactement ce que je veux faire. Je viens d'aller voir le fichier php.ini dans le dossier apache. J'ai enlevé un ";" pour rajouter une fonction mais ça ne marche pas. Quand je met le lien dans le navigateur, il m'autorise toujours à accèder à la page sans l'ouverture de la session.
Code :
|
||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Est ce que quelqu'un sait quoi faire dans le php.ini pour que la session s'arrête dès que l'utilisateur n'est plus sur le site et par conséquent doit s'indetifier à nouveau s'il revient ?
Merci. |
|
|
00
|
|
|
#10 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
En haut de la page du forum, tu as un lien "FAQ session"
Et dedans, il y a ça : http://php.developpez.com/faq/?page=...ons_confphpini |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Un fichier est bien créé quand je démarre ma session. Par contre à chaque fois que je change de page, il m'en crée un autre, parfois vide. A quoi est ce dû ?
|
|
|
00
|
|
|
#12 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Si il en crée un autre, c'est que tu ouvres une autre session.
Ton identifiant de session ne doit dons pas etre propagé, sinon le "session_start" n'ouvrirais pas une nouvelle session mais utiliserai celle en cours. |
|
|
00
|
|
|
#13 | ||
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
En fait, une fois identifié, je fais la vérification au départ de chacune de mes pages :
Code :
à chacune de mes pages. Est ce que que c'est juste ? Sinon, comment faire pour envoyer les informations d'une page à une autre ? |
||
|
|
00
|
|
|
#14 | |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Je veux par etre lourd, mais bon...
Je te parle de l'identifiant de session, pas des variables stockées dans la session... Citation:
- les sessions (données persistentes sur le serveur) - les cookies (données persistentes chez le client) - GET - POST mais pour tout ça, commence par lire les tutos et les cours sur le PHP, les Session et les formulaires... |
|
|
|
00
|
|
|
#15 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Ca fait déjà un moment que je sais comment marche les POST et les GET.
Tout ça ne me dit pas pourquoi il me crée un autre fichier avec un id différent, avec un contenu vide. Ca j'ai bien compris que c'est parce que mon id ne se propage pas, mais je ne sais pas pourquoi et comment y remédier. Quant au tuto, c'est fait déjà plusieurs jours que je suis dessus et je n'ai toujours pas trouvé la réponse. Si je viens ici c'est parce que je n'ai pas trouvé. |
|
|
00
|
|
|
#16 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Il y a possibilités pour propager l'identifiant de session :
- en utilisant les cookies (ca se regle dans php.ini) - dans l'URL (par GET) de facon automatique (URL rewriting, ca se configure dans php.ini) - dans l'URL à la main, mais ça craint Regarde donc la conf de ton php.ini Tu peux aussi essayer, dans la pluspart de tes pages, de faire : (en activant register_globals dans php.ini) Si ca n'affiche rien, ou pas toujours la meme chose, tu as bien un souci avec la propagation de ton identifiant de session, sinon c'est autre chose. |
|
|
00
|
|
|
#17 | |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
Ca marche, cependant j'ai un autre pb. Quand je suis à une page et que je fais PAGE PRECEDENTE, internet me mets ce message d'erreur :
Citation:
|
|
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : juin 2007 Messages : 28 ![]() |
enfin, si je fais actualiser, ça marche mais s'il faut le faire à chaque fois...
|
|
|
00
|
|
|
#19 |
|
Membre chevronné
![]() Ingénieur développement logiciels Inscription : juillet 2004 Messages : 817 ![]() |
Ce warning, c'est normal.
Il apparait lorsque tu fait "Retour" vers une page qui a envoyé des données par POST. Car si tu fait "Retour" sur une telle page, les données sont postées à nouveau. Et donc, si par exemple tu viens d'acheter une voiture sur internet, tu te retrouves avec 2 voitures achetées. D'où l'interet de rediriger sur une autre page apres identification (comme la pluspart des forums) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com