Citat:
Ursprungligen postat av rhdf
Om en inkommande request saknar en giltig session så bör ju ditt backend inte returnera nånting.
här finns en teknik för att hantera detta beskrivet
http://ennuidesign.com/blog/Creating...cratch+Part+9/
man fixar altså ett unikt värde:
$_SESSION['token'] = md5(uniqid(rand(), TRUE));
Sen sätter man detta värde i ett dolt formulärfält på alla dina sidor.
Finns inte "token värdet" med i requesten så skickar man bara tillbaka en tom sida
if ( $_POST['token'] == $_SESSION['token']
|
Va? nej... Så behöver man inte göra.
Med PHP räcker det med att du sätter det du vill ha i sessionsvariabeln så finns den där tills sessionen får timeout. Varje gång sidan laddas om nollställs timeout tiden och detta gäller även AJAX-requests.
Det räcker alltså med att sätta sessionsvariabeln när man loggar in på sidan och sedan kollar man den. Du behöver inga dolda formulär.
Vid login räcker det med t.ex:
$_SESSION['id'] = $userId;
$_SESSION['loggedIn'] = true;
Sedan kollar du på varje sida innan du gör något annat:
if ($_SESSION['loggedIn'] == false || !$_SESSION['id'] > 0)
die();