SESSION unique par page

Eléphant du PHP | 385 Messages

23 mars 2016, 14:35

Bonjour à tous, pourriez-vous m'aider?

Voilà je vous explique mon problème, quand je créer une affaire sur mon l'intranet il y a certaines données les besoins (qui sont des pièces) mais si j'utilise une autre fenêtre il prend la variable de session de la dernière fenêtre et l'autres oublié bien entendu car elles ont le même nom , j'ai donc pensé à faire une variable de session par id ou dans chaque page elle serait différente mais je ne suis pas certains cela soit la meilleur solution.

Merci de votre aide bonne journée.

Eléphant du PHP | 385 Messages

24 mars 2016, 13:55

Personne pour m'aider, je reformule comment je peux pour deux url identique mais dans deux onglets différent avoir un numéro différents pour les identifier, et si je switch entre les deux comment je sais que je suis dans la bonne page, à mon avis en sessions cela est impossible votre avis s'il vous plait? merci

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

24 mars 2016, 15:46

Moi, j'ai toujours pas compris au bout du 2ème essai, dsl, mais peut être que quelqu'un comprendra :)

Essaye de faire des phrases simples et courte (moins de 15 mots), en bon français et avec la ponctuation, peut être que ça aidera.
Parce que là, à chaque fois c'est 1 phrase unique de 15 kilomètres qui est difficilement compréhensible.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 385 Messages

24 mars 2016, 18:27

D'accord désolé,
Dans le cas d'un multionglet pour un même script avec des données stocké en session.
Quand je switch d'un onglet à l'autre les variables sont écrasés puisque en session, je voudrais savoir comment faire en sorte d'éviter cela?
la session dans ce cas sert je le rappelle à pouvoir ajouter des pièces à mon affaire des choses sans recharger la page.
PS: Ce n'ai pas mon code à l'origine.
Merci à vous

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

25 mars 2016, 03:54

Alors, les variables de session sont comme leur nom l'indique commune à toute la session d'un utilisateur sur un site.
Par défaut, une session sur un site est défini comme l'arrivée d'un visiteur sur un site, jusqu'à la fermeture du navigateur. Mais il est possible (et très courant d'augmenter la durée d'expiration de la session pour conserver les données au delà, par exemple pour qu'un utilisateur soit toujours connecté).

Que tu sois dans 2 ou 3 onglets différents, ça ne change rien, c'est la même session.

Si j'ai bien compris ta question, tu voudrai que ce soit des sessions différentes, mais ce n'est pas possible donc la solution est que tu identifies de façon unique chaque onglet.
Est-ce qu'il y a quelque chose (nom de page / variable ?) qui te permettrait d'identifier un onglet de façon unique ?
A défaut, tu peux tenter d'utiliser le timestamp du moment où l'onglet à chargé + une valeur rand() pour être encore + sûr.

Toutefois, je pense que tu as un souci de conception si tu en es réduit à faire cela car ça ressemble à du bricolage. Mais difficile de t'en dire + sans connaitre de façon globale ton besoin et encore + dur si ce n'est pas ton code à l'origine.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 385 Messages

25 mars 2016, 09:22

D'accord merci, je pense aussi que cela est du bricolage, vaut-il mieux que je bloque le multifenetre?

Pour une même page exemple afficher une affaire avec une variable session si je détecte qu'une deuxième page est ouverte pour une même personne je bloque, je sais que la meilleurs solution serait de ne pas utiliser la session dans ce cas là malheureusement on ne me laisse pas beaucoup de temps.

Merci à vous

Eléphant du PHP | 385 Messages

25 mars 2016, 11:58

Je me penche vers le mode multifenetre, par contre je ne pense pas qu'utiliser la session soit une bonne idée car si je fais

Code : Tout sélectionner

if( isset($_SESSION['page_verouille']) AND ($_SESSION['page_verouille'] == true) ){ header('Location: hp_info.php?id_dm='.$_GET['id_dm'].''); exit; }
donc je vérifie si la page est verrouillé donc déjà ouverte dans un des onglets, et lorsque l'opération est finit je déverrouille, seul problème avec cette méthode il faudrait mettre la variable de session à false dans toute les page au cas entre deux la personne change de page pour que la page ne reste pas bloqué.

Je peux procéder comment s'il vous plaît? Merci à vous.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9783 Messages

25 mars 2016, 13:17

Pourquoi vouloir bloquer l'utilisation dans 2 onglets différents ???
Si tu ouvres 2 fenêtres sur Amazon, que tu ajoutes dans le premier onglet un produit A, puis que tu vas sur le 2ème onglet, il y aura encore marqué 0 produit dans le panier, mais si tu ajoutes un produit B, ça va l'ajouter au panier et il y aura alors 2 produits, le A et le B.

C'est le fonctionnement de base de tous les sites internet.

Si tu essayes de bloquer cela tu t'exposes à des soucis et de bloquer le comportement légitime d'un utilisateur (par exemple si il ferme par erreur son navigateur).
Bref pour moi ce n'est pas souhaitable de faire cela et c'est la logique de ton application à changer plutôt que le comportement normal d'un navigateur.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 385 Messages

25 mars 2016, 14:11

Je comprends, je vais donc modifier le code existant comme vous me le conseiller.

Dans le code il-y a un tableau qui est mit à jour dans la page sans la recharger et qui est enregistrer ou pas en base selon l'utilisateur.

C'est justement celui-ci qui est stocké en session et qui pose problème, pour permettre à l'utilisateur de pouvoir ajouter dans ce tableau, j'utilise juste des variables ou je créer une table qui prendra les données temporairement et si on ajoute pas qui les supprimera?

Comment auriez-vous fait s'il vous plaît?

Merci à vous.