Ik ben de laatste tijd bezig geweest met een session handler om sessies naar de database te schrijven. Nu gaat er alleen iets mis met het schrijven naar de database. De sessie wordt geschreven, alleen is het sessie_id regelmatig 0 en wordt de waarde nooit ingevuldt. De schrijf functie van de handler is:
<?
function write($ses_id,$ses_data)
{
//$ses_id is het id van de sessie, net zoals bij de read functie
//$ses_data is de data die geschreven moet worden
//we gaan de controle aanmaken, zodat de sessie ook alleen bij 1 ip geldig is:
$controle = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
//uiteraard willen we alles weer in de DB schrijven. Hiervoor weer een query opstellen:
$query = "INSERT INTO Sessies"; //we gaan de gegevens in de tabel Sessies opslaan
$query .= " (sessie_id,tijd_aangemaakt,waarde, controle)"; //de velden waar de gegevens moeten komen
$query .= " VALUES"; //uiteraard moeten er gegevens in komen
$query .= " ('".mysql_real_escape_string($ses_id)."', NOW(),
'".mysql_real_escape_string($ses_data)."', '".$controle."')"; //en dit zijn de gegevens die we in de DB zetten
//nu gaan we die query weer uitvoeren
$result = mysql_query($query);
//en kijken of dat gelukt is
if(!$result)
{
//niet gelukt
return false; //terugsturen dat het verkeerd ging
}
else
{
//het is gelukt waarschijnlijk gelukt. Nog 1 laatste check:
if(mysql_affected_rows() != 1)
{
//het aantal aangepaste rijen is niet 1. Dus blijkbaar ging er toch iets fout.
return false; //terugsturen dat er iets fout ging
}
else
{
//alles ging goed en de sessie is opgeslagen
return true; //terugsturen dat alles gelukt is
}
}
}?>
Schrijven gebeurt gewoon door $_SESSION['bla'] = "tekst";
Heeft iemand een idee waarom het fout gaat?