Trixar lite med ett inloggningssystem som inte vill fungera. Förenklat fungerar det såhär:
Inloggning
//Man har fyllt i forumläret
$result = mysql_query("SELECT * from users WHERE username='$HTTP_POST_VARS[username]'") or die (mysql_error());
$row = mysql_fetch_array($result);
if ($HTTP_POST_VARS[password] == $row[password]) {
//Ta från arrayen och plocka ner det i vanliga variabler
$userid = $row[id];
$userlevel = $row[userlevel];
$username = $row[username];
$time = time();
//Sätt session variablerna
$session_userid = $userid;
$session_userlevel = $userlevel;
$session_username = $username;
$session_last_activity = $time;
//Samma variabler, men för kakorna.
$livstid = time() + (60*60*24); //Ett dygns livstid
setcookie("cookie_userid", $userid, $livstid);
setcookie("cookie_userlevel", $userlevel, $livstid);
setcookie("cookie_username", $username, $livstid);
setcookie("cookie_last_activity", $time, $livstid);
header("Location: index.php");
}
Så långt fungerar allt väl, både sessionvariablerna och kakorna blir satta som de ska. Sedan har jag filen global.php som inkluderas på varje sida i systemet.
global.php
session_register("session_userid");
session_register("session_userlevel");
session_register("session_username");
session_register("session_last_activity");
session_register("session_redir");
if (!$HTTP_SESSION_VARS[session_userid]) {
//Om man stängt webbläsarfönstret så hämtar vi upp det ur kakorna.
$session_userid = $cookie_userid;
$session_userlevel = $cookie_userlevel;
$session_username = $cookie_username;
$session_last_activity = $cookie_last_activity;
}
Den är till för att man inte skall bli utloggad så fort som man stänger ner webbläsaren. Nya sessions variabler skapas ur kakorna. Nu till delen där det är något lurt, utloggningen:
Utloggning
//Radera ut session variablerna
session_unset();
//Sätt tomma kakor
setcookie("cookie_userid");
unset($cookie_userid);
setcookie("cookie_userlevel");
unset($cookie_userlevel);
setcookie("cookie_username");
unset($cookie_username);
setcookie("cookie_last_activity");
unset($cookie_last_activity);
header("Location: index.php");
Det är som sagt här det strular. Kakorna blir inte nollställda, och jag kan inte förstå varför! Och eftersom inte kakorna "dör" så skapas det ju hela tiden nya sessioner i global.php. Varför dör inte kakorna? Där har ni något att bita i! :)
Psst .. Kan hända att det finns lite "parse errors" i koden ovan. Men den funkar och köra, när jag föenklade den hit kom det nog med lite fel. Men ni fattar sammanhanget iaf.
Tacksam för hjälp!
------------------
<A HREF="mailto:chavez@post.netlink.se">Mvh Chavez
</A> UIN: 73975020
[Redigerat av Chavez den 27 dec 2001]