[PHP SESSIONS &... DNS!]

Fermé
walid - 18 mai 2006 à 03:03
 evilkopus - 27 août 2007 à 11:33
Bonjour à tous,

J'ai créé un site intranet (EasyPHP 1.8) sur une machine qui s'appelle samba dont l'adresse IP est 192.168.12.10


Les utilisateurs accèdent à la page d'accueil de cette machine en tapant dans leurs navigateurs : http://samba/ OU http://192.168.12.10

Ma page d'accueil, index.php commence par : <?php session_start() ?>
Donc un cookie est envoyé et dans mon dossier [tmp] je vois apparaitre le fichier lié à la session.
Les sessions se terminent dès la fermeture du navigateur (Config par défaut)

LE PROBLEME:

Quand un utilisateur se connecte sur http://samba/, je vois apparaitre un fichier correspondant à la session dans le dossier [tmp]

Le même utilisateur, et sans fermer la page qu'il vient d'ouvrir, s'il ouvre une 2ème page sur http://samba/, aucun fichier ne s'ajoute dans le dossier tmp.

Par contre, s'il ouvre une 2eme fentere avec http://192.168.12.10, je vois un 2eme fichier apparaitre dans [tmp] et donc une nouvelle session pour lui ce qui pose évidemment beaucoup de problèmes de navigation dans le site.

D'où ma question, comment faire comprendre à php (ou apache) qu'il s'agit toujours du même utilisateur?

Merci d'avance pour vos réponses.

RMQ : Ceux qui comptent répondre à mon poste en me conseillant de désinstaller easyphp et de passer à WAMP ou d'installer séparément les serveurs sans passer par un pack complet, s'abstenir! car ça voudrait dire qu'ils n'ont pas compris le problème que j'expose.
A voir également:

4 réponses

Exusez moi,

Une erreur s'est glissée dans ce que j'ai posté.
J'ai marqué dans mon post

"Ma page d'accueil, index.php commence par : <?php session_start() ?> Donc un cookie est envoyé et dans..."

Evidemment, aucun cookie n'est envoyé, j'utilise des sessions qui sont enregistrés sur un répertoire [tmp] du serveur.

ThanX
0
Delta9_THC Messages postés 65 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 26 avril 2009 2
18 mai 2006 à 10:25
Salut,

Si j'ai bien suivi tout est normal. Apache ne peut pas deviner que c'est la même personne qui navigue et que cette personne veut la même session sur toutes ses pages.
Il faut donc récupérer l'ID de session dans une variable et la passer en paramètre à ta page (par GET ou POST selon les traitements). Ensuite à l'ouverture, il faut récupérer cette valeur et indiquer à PHP que tu veux ouvrir CETTE session, et non en re-créer une.

Le mieux étant de regarder la doc PHP au sujet des sessions.

Le début de ta page va ressembler à ça :
if (isset($_GET['session']))     //si l'ID de session est passé en paramètre GET
	session_id($_GET['session']) ;   //on l'attribue à la session (reprise de session)
session_start() ;    //on démarre (ou reprend, selon la condition précédente) la session
$session = session_id() ;   //récupération de l'ID de session dans une variable $session


Bon ça c'est bien quand les pages se suivent mais quand tu en ouvres une nouvelle vierge et que tu vas ensuite sur le site ben ça marche pas.
Passe alors par des cookies, le fonctionnement est similaire et bien expliqué dans la doc.

J'espère avoir tapé juste.
0
Merci pour ta réponse.

Cependant, il y a quelque chose que je ne comprends pas.
Je prends un exemple :

Un utilisateur ouvre la page index.php en se connectant à http://AdresseIP/
En gardant cette page ouverte, s'il ouvre d'autres fenêtres et qu'il entre dans l'adresse http://AdresseIP/, aucun fichier n'est créé dans le dossier [TMP]. La session est automatiquement récupérée.(Sans utiliser les id sessions)

Par contre, tout en gardant cette page ouverte, s'il ouvre une fenêtre avec l'adresse http://NomDeLaMachine/ un nouveau fichier est créé dans le dossier [TMP] et donc une nouvelle session est démarrée.

Pourquoi ce comportement? Pourquoi tant qu'il saisit une adresse ip dans http, la session est gardée??? Et pouquoi en tapant le NomDeLaMachine une nouvelle session démarre???


Je ne suis pas sûr, mais je pense que ce comportement est dû au fait ques les headers envoyés au serveurs ne sont pas identiques si on tape http://AdresseIP ou http://NomDeLaMachine

Quelqu'un pourrrait confirmer mon explication???
Quelqu'un sait comment contourner le problème? Est ce que récupérer l'ID session comme proposé par "Delta" est la bonne solution.

ThanX
0
Delta9_THC Messages postés 65 Date d'inscription mardi 8 mars 2005 Statut Membre Dernière intervention 26 avril 2009 2 > walid
18 mai 2006 à 21:23
Re,

Je suis pas spécialiste donc mes propos ne seront pas les plus justes. Je pense que ta proposition sur les headers est peut être la plus plausible.
Maintenant, je répète, je suis pas spécialiste donc je peux pas confirmer.
0
Bonjour à tous,

Tout d'abord, je remercie Delta pour sa participation.
J'ai effectué des tests avec des collègues sur des environnements wan & lan, on arrive aux conclusions suivantes :

1- Il ne faut pas démarrer de session dans la page index.php ou toute autre page si elle comporte un formulaire d'authentification qui renvoie vers un script vérifiant login et mot de passe.
Cette page en question ne doit pas contenir de session_start(). Sinon attendez vous, un jour ou l'autre, à un problème de navigation ou à une faille dans la sécurité de votre site.

2- Le formulaire en question, doit renvoyer vers "actinon = http://adresseip/nom de la page traitant les données" et non pas vers "action : nom de la page traitant le script"

3- Dans les différentes pages de votre site, si vous utilisez des renvois (header Location:http://...) utilisez TOUT le temps l'adresse IP de votre machine et non l'adresse nom.


2 comportements à expliquer:

1- si un visiteur qui s'est déjà authentifié, ouvre une nouvelle fenêtre(tout en gardant la première ouverte), il pourra ouvrir une session différente avec le même nom d'utilisateur ou un nom d'utilisateur différent.

2- si un visiteur qui s'est déjà authentifié, utilise la même fenêtre pour revenir à la page d'accueil et ouvrir une nouvelle session : C'est la session en cours qui sera modifiée : Ainsi il pourra se reconnecter avec le même nom d'utilisateur ou un nom d'utilisateur différent sans pour autant ouvrir une nouvelle session.

Si vous avez besoin de plus amples explications, faites moi signe.

Walid G.
0
Walid G.


Je te remercie serieusement car moi je pétait les plombs en me cassant la tete sur ce probleme que je rencontre depuis une semaine.
MERCI MERCI MERCI MERCI
0