IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sessions - bonnes pratiques pour un débutant


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Par défaut Sessions - bonnes pratiques pour un débutant
    Hello tout le monde.

    J'ai hésité à poster dans la rubriques "Sessions" mais vu que je suis débutant ....

    Je développe à mes heures perdues (ce n'est pas ma profession) et on a fait appel à moi en catastrophe pour développer une petite interface web pour environ 500 utilisateurs (enregistrement de données en base, restitution ....)

    Je ne suis pas un pro et je suis donc face à une grande responsabilité

    Vous me direz : qui est assez fou pour faire appel à un amateur pour développer un site pour 500 utilisateurs ?

    Pour l'instant j'ai développé cette petite interface en local sous la plateforme wampserver.
    Et je me pose la question de la gestion des sessions.
    Tous les utilisateurs sont connectés dans le même LAN.

    J'ai peur qu'il y ait des conflits de sessions ou tout autre type de tracas lié à la connexion simultanée de plusieurs utilisateurs.

    Pouvez-vous m'indiquer quelles les règles de bases à respecter et les actions à mener pour que les choses soient faites proprement ?

    je vous explique quand même rapidement le principe d'identification que j'ai mis en place :
    Il n'était pas question de faire gérer aux utilisateurs des id/passw
    Chaque utilisateur recevra donc un mail personnalisé avec l'url d'accès dans laquelle est passée en paramètre une clé cryptée (différente et unique pour chaque utilisateur) et que je récupère ensuite en GET.

    Je vérifie ensuite que cette clé est valide et je la stocke ensuite en session et je vérifie régulièrement côté serveur que la variable session associée à cette clé est non vide sinon --> déconnexion
    Je précise que je n'utilise pas les cookies (peut-être devrais-je ?)

    Voilà je voulais donc savoir qu'elles sont les règles de bases à adopter pour faire les choses correctement, je reprécise que tous les utilisateurs sont dans le même LAN.

    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    J'ai peur qu'il y ait des conflits de sessions ou tout autre type de tracas lié à la connexion simultanée de plusieurs utilisateurs.
    Pas de souci, l'identification de la session se fait avec un token (une chaine de caractère incompréhensible) qu'il est d'ailleurs possible de manipuler manuellement.
    Cet identifiant de session (ou SID) transite entre le navigateur de l'utilisateur et le serveur soit par paramètre sur URL soit (par défaut) par cookie.
    C'est donc au navigateur qu'est liée la session et non à l'ip.
    Même si tu ne fais pas d'authentification au sens login / password, la réception d'un paramètre sur $_GET pour identifier un utilisateur lance bien un session_start non ? Si c'est ça tu n'as rien d'autre à faire.

    Je précise que je n'utilise pas les cookies (peut-être devrais-je ?)
    Tu en est sûr ? Regarde ce qui se passe au niveau des requêtes HTTP quand tu navigue sur le site avec une session ouverte (tu peux regarder ce genre de chose avec un plugin firefox comme Firebug).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Par défaut
    Merci Benjamin,

    oui j'ai bien commencé par un session_start.

    J'ai regardé les requêtes http (avec entête http direct et non firebug )
    et j'ai des lignes du type : Cookie: PHPSESSID=jbhos6fmdr2oqmo01pu00d9nc2
    c'est de çà que tu parles ?
    Mais çà c'est un fichier créé sur le serveur, non ?

    Je faisais plutôt allusion aux cookies sur le poste client, si cela peut servir à quelque chose de les utiliser dans mon cas .....
    (ps : comme tu peux le voir, j'ai des lacunes sur les fondamentaux, il y a des notions que je devrais approfondir )

    En fait ma crainte est d'avoir 2 (ou plusieurs) utilisateurs connectés en même temps et qui s'échangeraient leurs données sans le savoir.
    Les techniciens dans ma boîte ont mis en place un système de timestamp car ils avaient rencontré ce type de problème quand 2 utilisateurs étaient connectés derrière le même proxy et comme dans mon cas les 500 utilisateurs sont dans le même LAN et que mon appli sera hébergée à l'exterieur du LAN, voilà pourquoi j'ai peur ...

    Merci encore pour ton aide.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    les sessions marche par client, y'a un cookie de sessions coté client, et un fichier de sessions par client coté serveur, le cookie de sessions contient uniquement le hash de sessions

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Passer une cle (id) de session en GET n'est pas souhaitable.
    Par ailleur il faut te dire qu'il existe par nom de domaine ou adresse intranet,
    deux cookies
    Le cookies de données ou tu mets ce que tu veux et qui est permanant si tu le souhaites, par exemple 1 ans ...
    Le cookies de session se crées automatiquement sur le micro d' un des 500 users. il contient par exemple "lkjqkjllj454569qsxsx!!ppoosisisisikk"
    id de session d'un visiteur.
    Ton serveur, ou qu'il soit a créé en même temps un fichier texte
    lkjqkjllj454569qsxsx!!ppoosisisisikk.txt
    qui va comprendre toutes les données du visiteur.
    La fin de vie de base du fichier texte (même s'il reste souvent présent)
    est de 15/20 minutes sans activitée du visiteur
    Le cookies de session lui meurt dés que le visiteur ferme son navigateur.
    (je n' ais pas dit quitte le site !)
    Voila tu y vois plus clair j' espéres.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par mauriser Voir le message
    La fin de vie de base du fichier texte (même s'il reste souvent présent)
    est de 15/20 minutes sans activitée du visiteur
    Le cookies de session lui meurt dés que le visiteur ferme son navigateur.
    (je n' ais pas dit quitte le site !)
    t'es sur de toi ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    t'es sur de toi ?
    Oui c' est du moins la régle de base,
    mais sur quel point as-tu un doute

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 21
    Par défaut
    Citation Envoyé par mauriser Voir le message
    Bonjour,
    Passer une cle (id) de session en GET n'est pas souhaitable.
    Par ailleur il faut te dire qu'il existe par nom de domaine ou adresse intranet,
    deux cookies
    Le cookies de données ou tu mets ce que tu veux et qui est permanant si tu le souhaites, par exemple 1 ans ...
    Le cookies de session se crées automatiquement sur le micro d' un des 500 users. il contient par exemple "lkjqkjllj454569qsxsx!!ppoosisisisikk"
    id de session d'un visiteur.
    Ton serveur, ou qu'il soit a créé en même temps un fichier texte
    lkjqkjllj454569qsxsx!!ppoosisisisikk.txt
    qui va comprendre toutes les données du visiteur.
    La fin de vie de base du fichier texte (même s'il reste souvent présent)
    est de 15/20 minutes sans activitée du visiteur
    Le cookies de session lui meurt dés que le visiteur ferme son navigateur.
    (je n' ais pas dit quitte le site !)
    Voila tu y vois plus clair j' espéres.
    Merci pour ta réponse.
    Oui je suis convaincu qu'il serait préférable d'identifier les utilisateurs par un id et un pwd, mais là une des contraintes que l'on m'a imposée est de ne pas obliger les utilisateurs à gérer des id/pwd, j'ai donc opté pour une clé propre à chacun (clé que j'ai complexifiée)

    Donc au final si je comprends bien, je n'ai pas de souci à me faire, j'ai fait tout ce qu'il fallait ?

Discussions similaires

  1. Petite question de bonne pratique pour débutant :)
    Par nabodix dans le forum Débuter
    Réponses: 4
    Dernier message: 04/02/2009, 13h58
  2. Bonne pratique pour inclure source de projet open source ?
    Par joseph_p dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 05/07/2007, 22h51
  3. Réponses: 5
    Dernier message: 12/09/2006, 19h06
  4. Tutoriel SEO : Introduction et bonnes pratiques pour l'optimisation de pages Web
    Par Community Management dans le forum Référencement
    Réponses: 0
    Dernier message: 06/07/2006, 01h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo