Session Handler Class, wordt steeds uitgelogd.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Software developer

Functieomschrijving Voor een gewaardeerde werkgever in de regio van Middelburg zijn wij op zoek naar een ambitieuze PHP/Symfony Developer. Een enthousiast persoon die het development team komt versterken met het aanpakken van complexe en nieuwe projecten. Ben jij op zoek naar een baan met veel uitdaging binnen een snelgroeiend e-commerce bedrijf, waar je de tijd en ruimte krijgt voor zowel persoonlijke als professionele groei? Lees dan snel verder! Dit ga je doen: Aanpassingssuggesties van collega’s in kaart brengen, vervolgens te analyseren en daarna te concluderen of de aanpassing een verbetering is; Ontwikkeling en beheer van de serviceportal in Symfony en

Bekijk vacature »

SAP Integratie Ontwikkelaar

Ben jij ambitieus in de verdere ontwikkeling van SAP binnen HANOS, en heb je kennis van SAP PI, CPI (SAP integration suite) en of andere middleware tooling? Dan ben jij mogelijk onze nieuwe SAP Integratie (middleware) Ontwikkelaar! Lees snel verder en solliciteer! Wat ga je doen? Als SAP Financieel Consultant ben je, als deel van een gedreven team van interne SAP consultants, de schakel tussen de gebruikersorganisatie en ICT. Je draagt proactief bij aan een optimale aansluiting van de SAP-functionaliteit (een applicatielandschap met o.a. Suite on HANA, Fiori, Hybris, C4C en BO), op de bedrijfsprocessen. Verder ondersteun je de HANOS

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Lead Fullstack developer

Functie omschrijving Ben jij een leergierige en ambitieuze junior developer met technische skills? Ben jij op zoek naar een werkgever die jouw de volledige vrijheid geeft om jezelf tot een volwaardige senior te ontwikkelen? Wij zijn op zoek naar een full stack developer die zich bezig wil bezig houden met het uitbreiden en verbeteren van de online webshop. Een onderdeel van jouw werkzaamheden is naast het beheren van de webshop ook om de processen en structuren te stroomlijnen. Werkzaamheden Onderhouden van de webshop (denk aan het bijhouden van de voorraad); Nieuwe functies toevoegen aan de product configurator door middel van

Bekijk vacature »

Front-end developer wanted! (Angular, React, Vue.j

Functie Under the guidance of 3 account managers, one of whom will be your point of contact within your expertise, you will start working for various clients. He or she will help you find a suitable and challenging assignment. Naturally, they will take your situation, experience and (technical) ambitions into account. The assignments last one to two years on average. This allows you to really commit to a project and make an impact as a consultant. Besides the assignment, you will regularly meet your colleagues from the IT department to share knowledge or discuss new trends, for example. Master classes

Bekijk vacature »

Python Developer

Dit ga je doen Als Python Developer ben je verantwoordelijk voor: Het ontwikkelen van Stuurprogramma's in Python zodat er verbindingen kunnen worden gelegd tussen besturingssystemen en (AV) hardware; Het testen en debuggen van Stuurprorgamma's; Het communiceren met noodzakelijke partijen in gevallen waar extra technische details nodig zijn om een Stuurprogramma te ontwikkelen of problemen op te lossen; Het maken van de nodige technische documentatie (in het Engels); Het participeren in een Scrum/Agile omgeving. Hier ga je werken Deze internationale organisatie is wereldwijd een succesvol producent en leverancier van professionele AV hard- en software. Klanten gebruiken de producten o.a. voor het

Bekijk vacature »

Low-code developer

Functie omschrijving Heb jij altijd al een training willen volgen in het buitenland? Voor een leuke opdrachtgever in omgeving Alphen ad Rijn zijn wij op zoek naar kandidaten die aan de slag willen als Low Code Developer! Beschik jij over HBO/WO nivo, bij voorkeur Informatica, maar een ander technische opleiding zoals bijv. wiskunde, natuurkunde is ook goed. Heb jij aantoonbare affiniteit met IT en ben jij gedreven, enthousiast, communicatief vaardig en klantgericht? Lees dan snel verder! Je wordt getraind tot een volwaardig Low Code Developer, het traject ziet er als volgt uit: Start 1e week januari, opleiding van 3 weken

Bekijk vacature »

Senior .NET developer

Functie As a Senior .NET developer you will work in our Research & development team. Our team consists of 17 colleagues! We are currently busy setting up a completely new architecture for a new product. We use VS2022 and .NET 6.0 for our new product. Your function is therefore mainly backend oriented. Since we develop measuring equipment for the chemical industry, it is also very important to develop high-quality software for its control. You are also responsible for designing, implementing and testing new features. For this position its also very important to ensure future-proof and sustainable architecture. Eisen - A

Bekijk vacature »

.NET developer

Functie Als ervaren .NET ontwikkelaar ontbreekt er aan passie en motivatie niks. Jij bent communicatief sterk en pakt iedere uitdaging dan ook met beide handen aan. Op projectbasis ga jij met je team of met enkele andere ontwikkelaars intern aan de slag bij diverse partners. Op basis van het project ga jij aan de slag en zijn de werkzaamheden en technieken erg divers. Jouw werkgever stelt jouw ontwikkeling hierin voorop, zo krijg je een vast vertrouwenspersoon die één keer in de maand op locatie van jouw project zal kijken hoe het gaat en of er eventuele aandachtspunten zijn. Daarnaast krijg

Bekijk vacature »

Senior SQR Java Developer

Vacature details Vakgebied: Software/IT Opleiding: Senior Werklocatie: Eindhoven Vacature ID: 13333 Introductie Are you passionate about contributing to the world's most advanced machines. Do you thrive in a challenging environment working with highly motivated and skilled teams? If so, we have the perfect opportunity for you! We are seeking a Senior Software Design Engineer for Sequence Tooling to play a critical role in creating and maintaining mission-critical software applications. In this role, you will focus on achieving maintainable software architecture that is transparent and easy to extend while maintaining a strong focus on software quality. You will work closely with

Bekijk vacature »

Applicatiebeheerder/ Ontwikkelaar

Dit ga je doen - Verantwoordelijkheid dragen voor het complexe applicatielandschap; - Schakelen met eindgebruikers en leveranciers; - Verdeling in werkzaamheden tussen dagelijks beheer ontwikkelen; - Het analyseren van de behoeften van gebruikers en het vertalen hiervan naar functionele specificaties voor de applicaties; - Actief bijdragen aan het leveren van passende oplossingen voor het applicatielandschap. Hier ga je werken Deze organisatie, gevestigd in de regio van Amsterdam is een van de meest toonaangevende mediaorganisaties in Nederland. Door de organisatiecultuur krijg jij veel ruimte om initiatief te nemen en zelfstandig aan het werk te gaan. Samen met het IT team zorg

Bekijk vacature »

Software Developer

Longship.io gaat de wereld veroveren met baanbrekende software en legendarische... pizza-avonden! Lees hier de vacature van IT Operations Manager! Bij Longship werken we met een team van 5 mensen aan software voor laadpaal operators. Longship is ontstaan in 2020 met als doel om de elektrische mobiliteitstransitie aan te jagen. We zijn nu al een wereldwijde speler doordat we continu voorop lopen in innovatie. Ons platform helpt het versneld elektrificeren van wagenparken, internationaal! Wij zijn een startup met grote ambities die we willen bereiken met een relatief klein en efficiënt team. Je krijg de kans om ontzettend veel te leren van

Bekijk vacature »

Laravel developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

Bekijk vacature »

Microsoft Acess Developer

Functieomschrijving Wat ga je doen? Heb jij ongeveer 3 jaar ervaring als Software Developer, en komen de volgende kennisgebieden jou niet vreemd voor: MS Acces, C# & SQL? Vind jij het daarnaast leuk om maatwerk software te ontwikkelen voor klanten in een bijzondere branche? Lees dan snel verder! Als developer ben jij samen met een gemotiveerd team van 10 collega’s verantwoordelijk voor het creëren van aangemeten software voor klanten. Je bent klantvriendelijk en oplossingsgericht ingesteld, omdat het essentieel is om de klanten zo goed mogelijk te helpen met hun uitdagingen. Het is mogelijk om vanuit huis je werkzaamheden uit te

Bekijk vacature »

Senior Organisatieontwikkelaar

Als Organisatieontwikkelaar zorg je ervoor dat we in het magazijn van Coolblue altijd vooruit voetballen op het gebied Medewerker en Organisatie Ontwikkeling. Zo draag je bij aan een toekomstbestendig magazijn waar we klanten én medewerkers elke dag blijven verwonderen. Wat doe je als Senior Organisatieontwikkelaar bij Coolblue? Als Organisatieontwikkelaar werk je voor het magazijn van Coolblue. Je krijgt er energie van om continue te bouwen aan een toekomstbestendige organisatie. Dat doe je samen met 17 collega's in het HR-team, ieder met een eigen specialisme. Je werkt graag zelfstandig en je weet snel je weg te vinden als verandermanager. Ook ben

Bekijk vacature »
Henk van Loo

Henk van Loo

26/01/2016 09:54:41
Quote Anchor link
Beste Mensen,

Ik heb sinds een half jaar een eigen PHP Session Handler Class geschreven.
Deze logt mij op random momenten uit, Het ene moment kan ik 2 uur zonder problemen werken op de site, het ander moment logt hij mij uit na de 2e klik binnen 1 minuut.

Als ik in de database kijk naar de laatste "view" tijd, dan staat deze wel goed ingesteld, de sessie is dus wel uitgelezen.
Hieronder mijn class:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
    class CSessionHandler implements SessionHandlerInterface
    {
        public static $SessionID = NULL;
        public static $iSessionLifetime = 3600; // 30 minuten

        public function __construct ( )
        {

            if ( is_numeric ( SYSTEM::GetSetting ( 'sysSessionLifetime' ) ) )
            {

                self::$iSessionLifetime = SYSTEM::GetSetting ( 'sysSessionLifetime' );
            }


            if ( ! session_set_save_handler ( $this ) )
            {
                new
CLog ( 9009, 'Unable to implement our CSessionHandler. Please track the issue and fix this.' );
                return;
            }

            
            ini_set ( 'session.gc_maxlifetime', self::$iSessionLifetime ); // expires in 30 minutes
            ini_set ( 'session.cookie_lifetime', self::$iSessionLifetime ); // 30 minutes
            ini_set ( 'session.save_path', dirname ( dirname ( __DIR__ ) ) . '/sessions' );
            session_set_cookie_params ( self::$iSessionLifetime );
            session_start ( );
        }

        
        public function open ( $sSavePath, $sSessionName )
        {

            // No need to open DB connection. (called at "session_start ( );")
            return true;
        }

        
        public function close ( )
        {

            // No need to close DB connection.
            $this->gc(); // Linux doesn't call the clean function, but uses a cronjob to delete session files.
            return true;
        }

        
        public function read ( $sSessionID )
        {

            
            $oQuery = DB::Query ( "SELECT SessionValue FROM Sessions WHERE SessionID = ? AND TIMESTAMPDIFF(SECOND, SessionTime, NOW()) <= " . self::$iSessionLifetime, $sSessionID );
            
            if ( DB::Num ( $oQuery ) > 0 )
            {

                DB::Query ( "UPDATE Sessions SET SessionTime = NOW() WHERE SessionID = ?", $sSessionID );
                
                $aFetch = DB::Fetch ( $oQuery );
                
                return $aFetch['SessionValue'];
            }

            
            return ''; // Session not set, return empty string. IMPORTANT!
        }
        
        public function write ( $sSessionID, $sSessionValue )
        {

            $oQuery = DB::Query ( "SELECT SessionID FROM Sessions WHERE SessionID = ?", $sSessionID );
            
            if ( DB::Num ( $oQuery ) > 0 )
            {

                DB::Query ( "UPDATE Sessions SET SessionTime = NOW(), SessionValue = ? WHERE SessionID = ?", $sSessionValue, $sSessionID );
                
                return true;
            }

            
            DB::Query ( "INSERT INTO Sessions (SessionID, SessionValue) VALUES (?,?)", $sSessionID, $sSessionValue );
            return true;
        }

        
        public function destroy ( $sSessionID )
        {

            DB::Query ( "DELETE FROM Sessions WHERE SessionID = ?", $sSessionID );
            
            return true;
        }

        
        public function gc ( $iSessionLifetime = null )
        {

            DB::Query ( "DELETE FROM Sessions WHERE TIMESTAMPDIFF(SECOND, SessionTime, NOW()) > " . self::$iSessionLifetime );
            
            return true;
        }


        public static function GetActiveUserSessions ( )
        {

            $oQuery = DB::Query ( "SELECT * FROM Sessions WHERE SessionValue LIKE '%userID%' AND TIMESTAMPDIFF(SECOND, SessionTime, NOW()) < " . self::$iSessionLifetime . " GROUP BY SessionID" );

            return DB::Num ( $oQuery );
        }
    }

?>


Zoals jullie zien heb ik al diverse pogingen gedaan via ini_set, maar helaas.
Bij het deactiveren van deze class werkt alles weer naar behoren.

Zien jullie waar het probleem zit?
Gewijzigd op 26/01/2016 09:56:45 door Henk van Loo
 
PHP hulp

PHP hulp

23/11/2024 06:38:16
 
E vH

E vH

26/01/2016 12:21:17
 
Thomas van den Heuvel

Thomas van den Heuvel

26/01/2016 14:40:32
Quote Anchor link
Ook stel je geen pad in in session_set_cookie_params(). Dan is mogelijk de sessie (of liever gezegd het sessie-cookie) alleen geldig in de huidige URL-directory. Maakt je site toevallig gebruik van zoekmachine-vriendelijke URL's? Dan zit je al snel in een andere "directory".

Daarnaast het volgende: de webserver waarop deze code actief is, is dit een Windows platform of iets anders? Volgens mij was er iets op Windows platformen waarbij sessies eerder als "verlopen" aangezien worden door de garbage collector omdat er op deze platformen er enkel zoiets is (of was, wellicht is dit inmiddels veranderd) als een modificatietijd, en niet (zoals op Unix/linux platformen) een accesstijd. Oftewel, op een Windows platform wordt het opvragen van een sessie-bestand niet geregistreerd waardoor deze, of deze nu actief is of niet, altijd op een vast moment vanaf zijn creatie verloopt. Een manier om dit (op Windows platformen) tegen te gaan is bijvoorbeeld het wegschrijven van een bitje zodat de modificatietijd elke "access" een schop krijgt.

EDIT, bijvoorbeeld zoiets, in zijn simpelste vorm:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// aanname: bij creatie van de sessie krijgt dit veld een initiële waarde (1 of 0)
$_SESSION['pingpong'] = 1 - $_SESSION['pingpong']; // flip de waarde
?>


Maar omdat je timeouts zo grillig verlopen is er mogelijk meer of iets anders aan de hand.

@Elmar vH: mogelijk zit je in de goede richting, maar het helpt om die informatie hier nogmaals te herhalen zodat iemand het zoekwerk niet nogmaals hoeft te doen en dat de informatie ook behouden blijft mocht de externe bron(nen) komen te vervallen.
Gewijzigd op 26/01/2016 14:43:41 door Thomas van den Heuvel
 
Henk van Loo

Henk van Loo

30/01/2016 11:39:26
Quote Anchor link
Bedankt voor jullie reacties, ik heb geen tijd gehad om eerder te reageren, excuses.
Ik zal jullie opmerkingen verwerken in het systeem, ik zal de uitkomst laten weten.

Het script draaide eerst op Windows, alleen deze voerde mijn Cronjobs (via de task scheduler) ineens niet meer goed uit waardoor ik weer terug gegaan ben naar mijn oude vertrouwde Linux server.

Bedankt.

Toevoeging op 30/01/2016 12:25:53:

De sessie cookie wordt nu aangepast, dit heb ik gecontroleerd. Dit was inderdaad eerder niet het geval, ik zal het eens aankijken vandaag.

Daarnaast werk ik inderdaad met SEO vriendelijke URLs, de cookies werden inderdaad geset op /portal. Ik heb dit aangepast zodat ze nu '/' als path hebben. Wat dom dat ik daar niet op gelet heb.

Uiteraard had ik zelf ook al gezocht, maar als je niet weet waar de fout zit is het zoeken een uitdaging.
 
Henk van Loo

Henk van Loo

01/02/2016 18:26:35
Quote Anchor link
Dank u wel heren. Alles lijkt te functioneren!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.