2 sessies

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robin de Vries

Robin de Vries

01/03/2009 13:33:00
Quote Anchor link
ik heb een functie om een sessie in de database op te slaan, alleen pas na 2x uitvoeren (en dus 2x inserten in database) pakt hij daadwerkelijk de sessie, hoe kan dat?

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
<?php
    function create_session($p_sUser){
        $oDb = new database;
        $sIp = $_SERVER['REMOTE_ADDR'];
        $sClient = $_SERVER['HTTP_USER_AGENT'];
        $sSql = "INSERT INTO ".prefix."sessions (user,session_begin,session_end,ip,client) VALUES ('".$p_sUser."',NOW(),NOW(),'".$sIp."','".$sClient."')";
        $oDb->sql_query($sSql);
        $sSql = "SELECT id,session_begin FROM ".prefix."sessions WHERE user=".$p_sUser." AND client='".$sClient."' AND session_begin <= ( NOW() - INTERVAL 1 SECOND )";
        echo "<br />".$sSql."";
        $aRow = $oDb->sql_array($oDb->sql_query($sSql));
        $_SESSION['id'] = $aRow['id'];
        $_SESSION['created'] = $aRow['session_begin'];
        echo 'creating session';
    }
    
    function
update_session(){
        $oDb = new database;
        if(!isset($_SESSION['id'])){
            $this->create_session(0);    
        }

        else{
            $sSql = "UPDATE ".prefix."sessions SET session_end=NOW() WHERE id=".$_SESSION['id']." LIMIT 1";
            echo $sSql;
            $oDb->sql_query($sSql);
        }
    }

?>
 
PHP hulp

PHP hulp

08/04/2020 16:46:53
 
Frank -

Frank -

01/03/2009 13:45:00
Quote Anchor link
Slechte code die voor veel problemen zal gaan zorgen. Tip: Ga een andere structuur bedenken, dit zal niet goed gaan werken.

Binnen iedere functie een nieuw database object aanmaken, lijkt me nergens voor nodig en onnodig veel performance te kosten. Hier ga je echt problemen mee krijgen, zeker wanneer je MySQL gebruikt. Die kan er toch al niet goed tegen wanneer er veel concurrent users zijn. Verder is het aanmaken van output binnen een functie niet handig, dat maakt de code bijzonder lastig te bouwen, debuggen en onderhouden.

Ik zie trouwens de hele meerwaarde van de functies niet, je bouwt iets om een sessie heen terwijl de sessie exact hetzelfde doet. Ga dan het gedrag van de sessies veranderen, je eigen sessie manager, lijkt me handiger.
 
Joren de Wit

Joren de Wit

01/03/2009 13:45:00
Quote Anchor link
Hoogstwaarschijnlijk komt dat door de volgorde waarin verschillende elementen van je script uitgevoerd worden en zul je de pagina eerst nog een keer moeten herladen voordat de sessieinformatie daadwerkelijk beschikbaar is.

Kijk dus nog eens goed naar de manier waarop je deze functies in je script gebruikt...
 
Robin de Vries

Robin de Vries

01/03/2009 13:51:00
Quote Anchor link
uhm. op index.php staat gewoon

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$oSession
= new session;
$oSession->update_session();
?>
 



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.