Strul med cookies

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Hur får jag

Har en funktion som används för att skapa och uppdatera cookies, den fungerar bra för allt jag vet.

function add_cookie( $user_id , $user_key )
{
	$user_id = stripslashes( $user_id );
	$to_live = time() + ( 60*60*24*7 ); // One week atm, TODO#12
	setcookie( ID_theService , $user_id , $to_live );
	setcookie( Key_theService , $user_key , $to_live );
	return true;
}

Problemet kommer när jag vill uppdatera användarens inställningar, där jag i slutet av den funktionen kör:

if ( $new_password_as_md5 != $user_key_from_cookie )
{
	add_cookie( $user_id , $new_password_as_md5 );
}

När den senaste koden körs loggas användaren ut och därefter krävs det två försök att logga in igen med det nya lösenordet. Någon idé om hur jag ska lösa detta?

Det är inte så att du försöker läsa cookien på samma sida som du sätter den? Jag utvecklar i Lasso och där går det inte att läsa cookien som sätts på samma sida.

Jo, jag läser dem pâ samma sida. Men det borde väl inte vara något problem att först läsa och sen skriva? Får kännslan av att det skulle vara mer osäkert att inte läsa en cookie på en sida gjord för att ta emot POST-data.

Det är när på samma sida en cookie först sätts och några rader längre ner läses som det inte fungerar eftersom cookien måste sättas i webbläsaren först vilket den inte gör förrän koden har exekverats och laddats i webbläsaren dvs sidan laddats en gång till. Följande kod i Lasso måste laddas två gånger för att innehållet i cookien skall synas i webbläsaren.

<?lassoscript
	cookie_set('en_kaka'='som smakar');
	'kakinnehåll: ' + cookie('en_kaka');
?>

Tack för dina svar Robert.
Hm... Men om jag först läser den existerande kakan och sen skriver över den med ny information, borde det inte gå då?

Det går att läsa kaka och sen skriva över den men du kan läsa den överskrivna datan först vid nästa hämtning av sidan eller annan sida som läser kakan.
Du kanske skall fundera på att använda sessionsvariabler istället?

1
Bevaka tråden