Vraag & Antwoord

Webprogrammeren & scripting

Cookie- of sessieprobleem

1 antwoord
  • Ik ben (voor het eerst in mijn leven) bezig met een inlogsysteem (PHP). Wat ik wil is dat men vanaf meerdere plaatsen kan inloggen en uitloggen, zonder dat dit effect heeft op de andere plaats (dus uitloggen vanaf plaats A betekent niet uitloggen op plaats B). Verder wil ik session hijacking voorkomen, dus zet ik een random string in de cookie die overeen moet komen met een random string in de database bij die user. De cookies zet ik als volgt: [code:1:cfe5288d75]setcookie("login_cookie", $login->id.";".$sid, time()+60*60*24*30, "/", ".example.nl");[/code:1:cfe5288d75] waarbij $sid de random string is. En die string stop ik als volgt in de database: [code:1:cfe5288d75]$quer = mysql_query("SELECT sid FROM $db_prefix$table_user WHERE naam='".$_POST['naam']."'") or die(mysql_error()); $oldsid = mysql_fetch_assoc($quer); $storesid = $oldsid['last_ip']; $storesid .= ";$sid"; mysql_query("UPDATE $db_prefix$table_user SET sid='$storesid' WHERE id='$login->id'") or die(mysql_error());[/code:1:cfe5288d75] Bij de sessionhandling doe ik het volgende: [code:1:cfe5288d75]list($id, $sid) = split(";", $_COOKIE["login_cookie"]); $res = mysql_query("SELECT id, naam, sid FROM $db_prefix$table_user WHERE id='".$id."'") or die(mysql_error()); if(mysql_num_rows($res) > 0) { $row = mysql_fetch_assoc($res); if(preg_match("#$sid#", $row['sid'])) { // init session [/code:1:cfe5288d75]Dit lijkt op zich goed te gaan, ik kan in-en uitloggen vanaf meerdere locaties zonder dat het effect heeft op elkaar. Ik blijf echter niet continu ingelogd, na een uur de site niet bekeken te hebben ben ik weer uitgelogd. De cookie zou een maand geldig moeten zijn, dus ik zou gokken dat het daar niet aan ligt. Ik ben hier echter al een kleine week mee aan het stoeien, en kom er niet uit. Iemand een idee?

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.