2 sessies
Code (php)
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
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);
}
}
?>
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);
}
}
?>
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.
Kijk dus nog eens goed naar de manier waarop je deze functies in je script gebruikt...