Array van aanwezige sessies ?

Ik loop tegen het volgende en ben hier al een paar uur mee "zoet".

Graag wil ik on-the-fly files aanmaken met een unieke naam die tussentijds informatie kan opslaan. ik dacht aan iets zoals “9af897429fb6d96be8zd048d2d2fc00e.php” ( sessie_id + php extensie ). Zodat ik altijd weet welke gebruiker een bepaald bestandje heeft aangemaakt.

Deze informatie moet tijdelijk aanwezig zijn, nadat alle informatie aanwezig is kan de informatie in MySQL gedumbt worden en de file kan gedelete worden. Tot nog toe geen problemen.
( Op deze manier voorkom ik dat informatie in de database niet compleet is )

Met een array van alle aanwezige sessies, weet ik of dat een file nog nodig is of verwijderd kan worden.

Mijn vraag:
Is het mogelijk in php om een array te maken met alle aanwezige sessie_id()'s ?

Is het misschien een mogelijkheid om bestanden ouder dan 2 dagen automatisch te laten verwijderen door een php-scriptje? Op deze manier blijft de serverruimte toch redelijk schoon (als dit je bedoeling is).

is eventueel mogelijlk, maar vind dat geen ideale situatie...

Het lijkt mij niet mogelijk om de volgende redenen:

De sessievariabele wordt aangemaakt bij het opstarten van de browser. Dit is dus voor iedere Client uniek. Hiersoor kan eenvoudig onderscheid gemaakt worden tussen verschillende sessies. Op het moment dat je met php, als php-client, alle sessie sleutels, die op dat moment bij de server aanwezig zijn, kunt opvragen, dan zou dit een ongelooflijke security-leak zijn.

Kan je niet bij het opstarten van een sessie de sessie id opslaan in een databank? Bij het afsluiten of verlopen van de sessie kan je hem dan uit de databank halen. Of zie ik iets over het hoofd?

Waarom stop je tijdelijke informatie niet gewoon in sessievariabelen en als je alles verzameld hebt, dan schrijf je het weg.

[quote:128b6a12d8="aToMac"]Waarom stop je tijdelijke informatie niet gewoon in sessievariabelen en als je alles verzameld hebt, dan schrijf je het weg.[/quote:128b6a12d8]

Ik weet eigenlijk te weinig van sessies af, maar als het mogelijk is om meerdere waarden, meerdere malen te herschrijven in een aanwezige sessie.
Ik moet namelijk meedere waarden kunnen onthouden en herschrijven.

een ID voor de gebruiker
een ID voor een stelling
ID van een vraag
Behaalde punten
etc, etc

maar dan loop ik tegen het volgende aan:

Overschrijft $_SESSION[‘x’] van de ene gebruiker niet de sessie $_SESSION[‘x’] van de andere gebruiker ?

Kunnen er meerdere variabele waarden in één sessie opgeslagen worden ?

uw sessions worden op de client weggeschreven, niet op de server.

$_SESSION[‘user_id’] = “johan”;
dit wordt verwerkt in de browser, zeg maar. Op de client, net zoals bij een cookie.

ik werk voor een enquete met meerdere pagina’s bvb met een tijdelijke dbase en stockeer daar alles tot de laatste vraag gesteld is, dan gaat alles naar de def table.

Een vriend van me gebruikt met asp altijd xml en opmaakschema’s. Zo maakt ie alles op, slaat het op en bewaart het in een xml-file die gekoppeld is aan de sessionid. Als de klant zijn bestelling doet, parset ie de ganse xml in de dbase.

Iedereen bedankt voor een antwoord.

EL Mystica, het betreft hier dus ook een enquete met meerdere pagina’s. Ik ga denk ik voor de “oplossing” die “ibook2fast” heeft aan gedragen.

[quote:d95255ac2a="EL Mystica"]uw sessions worden op de client weggeschreven, niet op de server.

$_SESSION[‘user_id’] = “johan”;
dit wordt verwerkt in de browser, zeg maar. Op de client, net zoals bij een cookie.

ik werk voor een enquete met meerdere pagina’s bvb met een tijdelijke dbase en stockeer daar alles tot de laatste vraag gesteld is, dan gaat alles naar de def table.

Een vriend van me gebruikt met asp altijd xml en opmaakschema’s. Zo maakt ie alles op, slaat het op en bewaart het in een xml-file die gekoppeld is aan de sessionid. Als de klant zijn bestelling doet, parset ie de ganse xml in de dbase.[/quote:d95255ac2a]

Sessions worden nog steeds aan de kant van de server opgeslaan hoor!! Die code die jij geeft wordt toch gewoon op de server door PHP uitgevoerd?! Bijgevolg wordt daar ook iets weggeschreven.

Jij hebt gewoon sessions nodig martijn, en om op laatste je vraag te antwoorden, nee dat zal elkaar niet overschrijven! Voor iedere sessie van iedere gebruiker wordt een tekstbestandje aangemaakt op de server met als naam het session_id. Daarin worden dan die waarden bijgehouden. Op zich probeer jij eigenlijk gewoon sessions na te bootsen… dus gebruik die dan ook :slight_smile:

PS: een cookie die het session_id bijhoudt kan wel voorkomen aan die client zijde (al kan dit ook in de URL meegegeven worden), maar dat is dan ook het enige wat bij de client wordt bijgehouden. En dat is dan ook het enige wat heen en weer moet gecommuniceerd worden.

Dankje darkbone,

Dan ga ik aan de slag met het sessie verhaal. De meeste waarden hoeven niet ge-update te worden, dus die zou ik dan in een array kunnen opslaan in een sessie.
Andere waarden, vraag_id & behaalde score in een assosiative array in een score sessie…

heel erg bedankt

En als je dan ook de bestanden die groter zijn dan xxx bytes op de server laat staan, kan je hiermee evt. terugkomende bezoekers helpen; zij hoeven dan de reeds ingevulde data niet meer opnieuw in te voeren. Ik weet alleen niet of het voor jou (Martijn) waardevol is om deze data te bewaren...

[quote:2bf165ae4e="ibook2fast"]Ik weet alleen niet of het voor jou (Martijn) waardevol is om deze data te bewaren...[/quote:2bf165ae4e]

Het is voor een electronische enquete, als alle vragen zijn ingevult, moeten deze gestored worden in de database, en dan kunnen de bestanden weg. Maar ik ga nu voor de oplossing met de sessies.

[quote:7448daf6be]Voor iedere sessie van iedere gebruiker wordt een tekstbestandje aangemaakt op de server met als naam het session_id. Daarin worden dan die waarden bijgehouden.[/quote:7448daf6be]

Waar wordt deze data dan opgeslagen? Deze is bij een eigen webserver dan toch te vinden op je HD?

[quote:ece808c6de="ibook2fast"][quote:ece808c6de]Voor iedere sessie van iedere gebruiker wordt een tekstbestandje aangemaakt op de server met als naam het session_id. Daarin worden dan die waarden bijgehouden.[/quote:ece808c6de]

Waar wordt deze data dan opgeslagen? Deze is bij een eigen webserver dan toch te vinden op je HD?[/quote:ece808c6de]

Sessies worden opgeslagen in /tmp als ik mij niet vergis, dit is buiten de web root… maar je kunt ook een andere map aanwijzen als je dat wilt.