[php] sessie-var destroyen na sluiten van browservenster

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Ik heb dit topic door gelezen maar ik denk dat de oplossing van mijn probleem daar niet in te vinden is ...

Dus dan maar dit topic eventjes geopend :)

Ik zit met het volgende probleem:

1) Ik heb een hoofdvenster met een link (knowledge_search.php). Als ik op die link klik, wordt er een nieuwe browser gestart (target=_blank).

In die link wordt er een variabele meegegeven die al of niet ingevuld wordt (TicketID).

2) Op de pagina "knowledge_search.php" controleer ik of die query-variabele (of hoe noem je dat) ingevuld is.
* zo ja: maak ik een sessie-variabele aan met de inhoud van die variabele (ik heb namelijk die waarde nodig in een pagina verder)
* zo nee: maak die sessie-variabele niet aan


Mijn vraag
Hoe kan ik ervoor zorgen dat, wanneer ik het tweede browservenster sluit, de sessie-variabele (enkel die sessie-variabele, niet de sessie) gedestroyed wordt?

De moeilijkheid ligt erin om dit te doen zonder het hoofdscherm te moeten refreshen.

Volgens mij lukt dat niet, maar toch zou ik het zeker willen weten

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

Verwijderd

session_unregister()

sessievariabele wordt weggegooid en de sessie blijft behouden. (sessie variabelen worden meestal, waarschijnlijk ook in jouw geval) bewaard op de server.

Acties:
  • 0 Henk 'm!

  • intermusic
  • Registratie: September 2002
  • Laatst online: 25-03 14:05

intermusic

Marc Hoekstra

Die session_unregister() zou je in een on_exit() window kunnen zetten.
Als die nieuwe window wordt afgesloten, kan je nog ff een popupje laten komen waarin de sessie gedestroyed wordt. Klant ziet dat popupje nauwelijks...

Acties:
  • 0 Henk 'm!

  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 16-08 17:16
Dit kan je beter oplossen door bij het OPENEN van de pop-up de ticketID opnieuw in te stellen, mocht die al bestaan. Of kom je dan in de knoei met iets anders?

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Maja, ik denk dat ik het toch op een andere manier zal moeten doen, want het is de bedoeling dat ik geen Javascript gebruik (ik vind het ook maar stom, maar ja).

toch bedankt voor de info

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

Verwijderd

Kan ook door middel van het event onBeforeUnload een popupje aan te roepen. (Modaldialog kan je bijna onzichtbaar krijgen) en dan in die popup de sessie te destroyen. Zonder Javascript zal het nooit lukken, aangezien serverside PHP nooit weet of een venster nog open is of niet. Er wordt namelijk geen melding naar de server gestuurd wanneer je een venster sluit en zal de sessie uiteindelijk gewoon time-outen.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Feyd-Rautha schreef op 14 May 2003 @ 13:33:
Mijn vraag
Hoe kan ik ervoor zorgen dat, wanneer ik het tweede browservenster sluit, de sessie-variabele (enkel die sessie-variabele, niet de sessie) gedestroyed wordt?
Moet ie perse deleted worden of wil je alleen maar dat ie onbruikbaar wordt verklaard daarna?

Want je zou natuurlijk een ticketAccessCounter kunnen maken en als die 1 of hoger is, dat je een nieuwe ticket erinzet.
Die ticketAccessCounter verhoog je dan bij de pagina die die ticket nodig heeft.

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 12:52
2) Op de pagina "knowledge_search.php" controleer ik of die query-variabele (of hoe noem je dat) ingevuld is.
* zo ja: maak ik een sessie-variabele aan met de inhoud van die variabele (ik heb namelijk die waarde nodig in een pagina verder)
* zo nee: maak die sessie-variabele niet aan
Waarom moet dat dan via een sessie - variable? Je kan die variable toch ook meegeven aan je URL, in je querystring ?
Feyd-Rautha schreef op 14 mei 2003 @ 16:26:
Maja, ik denk dat ik het toch op een andere manier zal moeten doen, want het is de bedoeling dat ik geen Javascript gebruik (ik vind het ook maar stom, maar ja).
Waarom mag je geen Javascript gebruiken?

[ Voor 29% gewijzigd door whoami op 15-05-2003 13:53 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
Verwijderd schreef op 14 May 2003 @ 13:40:
session_unregister()

sessievariabele wordt weggegooid en de sessie blijft behouden. (sessie variabelen worden meestal, waarschijnlijk ook in jouw geval) bewaard op de server.
In de nieuwere php-versies moet je geen session_unregister meer gebruiken, maar
unset($_SESSION['key']);
(PHP > 4.1.0)

Acties:
  • 0 Henk 'm!

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08 23:34
Mijn probleem is eigenlijk dat die sessie-variable zou moeten gedeleted (of leeg gemaakt worden) bij het sluiten van het venster ZONDER te refreshen . Maar daarvoor heb je Javascript nodig. Dus ik zal een andere manier moeten bedenken.

Waarom ik een sessie-var zou gebruiken:
ik zou namelijk die variabelen tever moeten doorgeven. De pagina waar ik die variabele nodig zou hebben ligt twee pagina's verder dan waar ze eventueel ingevuld zou moeten / kunnen worden

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Acties:
  • 0 Henk 'm!

  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
wat je ook zou kunnen doen is in je sessie bijhouden op welke pagina's er geklikt is. Op het moment dat het venster met die pagina geopend wordt, zet je een waarde die aangeeft dat het venster open is, en daar controleer je telkens op. Als die waarde gezet is en de pagina die wordt opgevraagd is niet gelijk aan de pagina van dat venster (geen refresh), dan delete die sessie variabelen die je er uit wil hebben
Pagina: 1