Een goedenavond iedereen,
ik ben doodop (veel gewerkt vandaag), dus ik houd het kort,
ik heb een kleine snippet gemaakt die je kunt gebruiken om je sessies te koppelen aan een database,
met PDO, omdat dat stoer is, en mysql_ zuigt =D
gebruik het zo;
<?php
include('session2database.php' );
try
{
$config['host'] = "";
$config['port'] = 3306; $config['database'] = "";
$config['username'] = "";
$config['password'] = "";
$db = new PDO("mysql:host=" . $config['host'] . ";port=" . $config['port'] . ";dbname=" . $config['database'], $config['username'], $config['password']);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
unset($config);
$sesClass = new session2db($db);
session_set_save_handler(
array(&$sesClass, "open"),
array(&$sesClass, "close"),
array(&$sesClass, "read"),
array(&$sesClass, "write"),
array(&$sesClass, "destroy"),
array(&$sesClass, "clean")
);
session_start();
$_SESSION['bla'] = 'h';
}
catch(Exception $e) {
echo 'error: ' . $e->getMessage() . '<br />' . PHP_EOL;
echo 'lijnnr: ' . $e->getLine();
}
en hier session2database.php;
<?php
class session2db
{
private $db;
function __construct($dbConnection)
{
if(is_object($dbConnection))
{
ini_set ('session.gc_probability','100');
ini_set ('session.gc_divisor','100');
ini_set ('session.gc_maxlifetime','300');
$this->db = $dbConnection;
}
else {
throw new exception('no database connection specified');
return false;
}
}
public function open() { return true; }
public function close() { return true; }
public function read($sessionId)
{
$lookupSql = "SELECT
`content`
FROM
`sessions`
WHERE
`id` = " . $this->db->quote($sessionId);
$result = $this->db->query($lookupSql)->fetchAll();
if (count($result) > 0)
{
return $result['content'];
}
return false;
}
public function write($sessionId, $sessionContent)
{
$insertSql = "REPLACE INTO
`sessions`
VALUES
(
" . $this->db->quote($sessionId) . ",
" . $this->db->quote(time()) . ",
" . $this->db->quote($sessionContent) . "
)";
return $this->db->query($insertSql);
}
public function destroy($sessionId)
{
$deleteSql = "DELETE FROM
`sessions`
WHERE
`id` = " . $this->db->quote($sessionId);
return $this->db->query($deleteSql);
}
function clean($lifetime)
{
$minTime = time() - $lifetime;
$cleanSql = "DELETE FROM
`sessions`
WHERE
`timestamp` < " . $this->db->quote($minTime);
return $this->db->query($cleanSql);
}
}
?>
'documentatie'/comments zijn wel in het engels trouwens, leek me handiger xd
succes ermee, en kijk maar hoe je het kan gebruiken

zorgt igg weer voor wat extra veiligheid

//jeroen