Session class

Door Synaps Framework, 12 jaar geleden, 7.190x bekeken

Bij deze een sessie class waarmee je je eigen sessies kunt beheren. Sessie class heeft ongeveer alle functies die $_SESSION ook heeft, echter worden hiermee alle sessies opgeslagen in je database. Je kunt, met deze class, dus ook weer nieuwe functies erbij schrijven of wat je maar wilt.

Hier onder even de functies uitgelegt die deze class bevatten.

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
<?php
#load the Session class
Session::initialise();

#destroy all your sessions
Session::destroy();

#get a new session id
Session::newId();

#set new sessions (overwrites them automaticly when already exists
Session::set('user.name', 'pepijn');
Session::set('user.websites', array('http://www.phphulp.nl', 'http://www.google.nl'));
Session::set('user.id', '5');

#get session value
Session::get('user.name'); //will output 'pepijn'

Session::get('user');     //will output
                        //
                        // array(1) {
                        //    ["user"]=>
                        //        array(3) {
                        //            ["name"]=>
                        //                string(6) "pepijn"
                        //            ["websites"]=>
                        //                array(2) {
                        //                    [0]=>
                        //                        string(21) "http://www.phphulp.nl"
                        //                    [1]=>
                        //                        string(20) "http://www.google.nl"
                        //                }
                        //            ["id"]=>
                        //                string(1) "5"
                        //        }
                        //    }

#check if session exists

Session::exists('user.name'); // will output 'true'

#set expire time of sessions

Session::setExpireTime(60); //parameter in minutes!!

#get session Id

Session::getId(); //will output 'b53ad87d176efdc3f8b8565392449254f379f3e3'

#get a new session id, but keeps your sessions

Session::newId();

#get value type
Session::getType('user.name'); // will output 'string'
Session::getType('user.websites'); //will output 'array'

#delete a specific session

Session::delete('user.name');
?>


Voor deze classe heb je PDO nodig en PHP 5. SQL tabel:
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
<?php

CREATE TABLE `s_binSessions` (
  `sId` int(10) unsigned NOT NULL auto_increment,
  `sClientSessionId` varchar(40) NOT NULL default '',
  `sClientIpAddress` varchar(50) NOT NULL default '',
  `sClientDate` datetime NOT NULL default '0000-00-00 00:00:00',
  `sKey` varchar(255) NOT NULL default '',
  `sValue` text NOT NULL,
  `sType` varchar(50) NOT NULL default 'String',
  PRIMARY KEY  (`sId`)
)
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

//Sql export uit phpmyadmin, vandaar de backticks ;)
?>

Gesponsorde koppelingen

PHP script bestanden

  1. Session.php
  2. SessionException.php
  3. tbCombineArray.php
  4. IpAddress.php

 

Er zijn 10 reacties op 'Session class'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Karl Karl
Karl Karl
12 jaar geleden
 
Mij lijkt dat zodra je session start, dat je hem dan ook in de db wilt hebben. Nu stop je hem pas in de db als je een waarde gaat opslaan.
Wat doet die explode op lijn zestig?
Verder kan je nog die array en object cases bij elkaar stoppen in de switch.
Wat is het nut van dat by reference gedoe in de foreach van regel 86?
Komt dat hele gedoe niet overeen met dit:
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
<?php // Kleurtjes
$naam = 'test.blaat';
$stukjes = explode('.', $naam);

$waarde = 'huppeldepup';
$stukjes = array_reverse($stukjes);

foreach($stukjes as $stukje)
{

$array = array();
$array[$stukje] = $waarde;
$waarde = $array;
}

var_dump($array);
/* Levert:
array(1) {
  ['test']=>
  array(1) {
    ['blaat']=>
    string(11) 'huppeldepup'
  }
}
*/

?>

En waarom geen array_merge_recursive?
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
94
95
96
<?php // Kleurtjes
$naam = 'test.blup';
$stukjes = explode('.', $naam);

$waarde = 'huppeldepup';
$stukjes = array_reverse($stukjes);

foreach($stukjes as $stukje)
{

$array = array();
$array[$stukje] = $waarde;
$waarde = $array;
}


$naam = 'test.blaat';
$stukjes = explode('.', $naam);

$waarde = 'hanzeflans';
$stukjes = array_reverse($stukjes);

foreach($stukjes as $stukje)
{

$array2 = array();
$array2[$stukje] = $waarde;
$waarde = $array2;
}


function
combineArray($aArray1, $aArray2) {
            if(!is_array($aArray1) || !is_array($aArray2)) {
                return NULL;
            }

                $aNewArray = Array();
                
            foreach($aArray1 as $siIndex => $mValue){
                if(isset($aArray2[$siIndex]) && is_array($mValue) && is_array($aArray2[$siIndex])) {
                    $aNewArray[$siIndex] = combineArray($mValue, $aArray2[$siIndex]);
                }
else {
                    $aNewArray[$siIndex] = $aArray1[$siIndex];
                }
            }

            
            foreach($aArray2 as $siIndex => $mValue){
                if(!isset($aArray1[$siIndex])) {
                    $aNewArray[$siIndex] = $aArray2[$siIndex];
                }
            }

          return $aNewArray;
        }
  
$test1 = array_merge_recursive($array, $array2);
$test2 = combineArray($array, $array2);
$array2 = $array;
$array2['test']['blup'] = 'uhu';
$test3 = array_merge_recursive($array, $array2);
$test4 = combineArray($array, $array2);
var_dump($test1, $test2, $test3, $test4);
/* levert:
array(1) {
  ['test']=>
  array(2) {
    ['blup']=>
    string(11) 'huppeldepup'
    ['blaat']=>
    string(10) 'hanzeflans'
  }
}
array(1) {
  ['test']=>
  array(2) {
    ['blup']=>
    string(11) 'huppeldepup'
    ['blaat']=>
    string(10) 'hanzeflans'
  }
}
array(1) {
  ['test']=>
  array(1) {
    ['blup']=>
    array(2) {
      [0]=>
      string(11) 'huppeldepup'
      [1]=>
      string(3) 'uhu'
    }
  }
}
array(1) {
  ['test']=>
  array(1) {
    ['blup']=>
    string(11) 'huppeldepup'
  }
}
*/

?>

Levert hetzelfde resultaat. Als er dus twee keer dezelfde key is (wat in principe niet moet kunnen, omdat je dan een update doet als je die set) krijg je bij de php functie gewoon alle waarden. Dat lijkt mij toch netter, want als je ze d'r in hebt gekregen wil je ze er vast ook wel weer uitkrijgen.
Is het ook niet netter als je een exception o.i.d. gooit in die combineArray? Want als je daar geen array's krijgt (die je daar best wel hard verwacht) dan lijkt mij dat best wel een dikke screw up. En om dan null te return'en...
Tom Tom
Tom Tom
12 jaar geleden
 
0 +1 -0 -1
je kunt eens naar overloading kijken, gebruik ik zelf in mijn eigen session class.
Synaps Framework
Synaps Framework
12 jaar geleden
 
0 +1 -0 -1
@Tom, bij overloading heb je het over __get en __set?
Tom Tom
Tom Tom
12 jaar geleden
 
0 +1 -0 -1
@Synaps Framework, ja dat klopt
Synaps Framework
Synaps Framework
12 jaar geleden
 
0 +1 -0 -1
Die gebruik ik nooit. Vind ze verschrikkelijk :P
Tom Tom
Tom Tom
12 jaar geleden
 
0 +1 -0 -1
oke, het blijft jouw mening:P
Karl Karl
Karl Karl
12 jaar geleden
 
0 +1 -0 -1
Toch jammer dat je mijn puntjes gewoon negeert...
Synaps Framework
Synaps Framework
12 jaar geleden
 
0 +1 -0 -1
@Karl, doe ik niet hoor <3. Als ik wat tijd vind ga ik je punten implementeren.
Usso Apury
Usso Apury
11 jaar geleden
 
0 +1 -0 -1
Volgens mij heb je gebruikt gemaakt van nog een Database class, zou je die ook willen plaatsen? Anders kost het heel veel moeite om je script uit te proberen...
Wel een mooi script btw..!
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pim -
Pim -
11 jaar geleden
 
0 +1 -0 -1
Persoonlijk vind ik het ongelooflijk veel gedoe voor een session wrapper. Echt geoptimaliseerd is het ook niet, er zijn veel te veel queries. Meerdere back-ends worden niet ondersteund, noch een variabele cookie naam.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. Session.php
  2. SessionException.php
  3. tbCombineArray.php
  4. IpAddress.php

Labels

Navigatie

 
 

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.