Jeg har en login side, der ser sådan her ud:
Det skal lige siges, at siden bliver kaldt fra en form side, hvor jeg
har de 3 input, email, password og autologin.
<?PHP
mysql_connect("localhost", "user", "psw");
mysql_select_db("database");
$email = $_POST["email"];
$psw = $_POST["psw"];
$autologin = $_POST["autologin"];
if($autologin == "on")
session_set_cookie_params(60*60*24*365, "/");
else
session_set_cookie_params(0, "/");
session_start();
$_SESSION["email"] = $email;
$_SESSION["psw"] = $psw;
session_write_close();
mysql_query("UPDATE blaa....") or die(mysql_error());
header("Location: /?page=user_login");
exit();
?>
I min index.php har jeg følgende kode:
<?PHP
if(!empty($_COOKIE["PHPSESSID"]))
{
session_start();
$email = $_SESSION["email"];
$psw = $_SESSION["psw"];
}
.... blaa... ?>
Mit problem er, at hvis jeg sætter autologin on (dvs. at cookien skal
have 365 dages udløb istedet for ved browser lukning), så bliver min
cookie overskrevet på index siden således, at cookien slettes, når
browseren lukkes!? Hvorfor gør den dét!?
Jeg har prøvet med min Firefox browser, at få den til at spørge hver
gang den sætter en cookie og lige efter login siden afsluttes og den
rederigere videre til index siden, sættes cookien fint til 365 dages
udløb - men så snart den kommer til index siden og kan se, at der er en
PHPSESSID, så overskrives cookien til at dø ved browser lukning!?
Jeg har set på PHP's side, at man kan have nogle problemer med sessions,
hvis man bruger header, men er der ikke en løsning på det? Jeg har ikke
register_globals on, men det ville jo givetvis løse problemet - m,en det
vil jeg helst undgå og ligeledes vil jeg helst undgå at have session
ID'et i URL'en.
Nogen gode idéer?
|