Problemer med loginsystem og sessions
Hey there..Jeg har nogle problemer, og umiddelbart kan jeg ikke finde fejlen. Jeg har lavet selve login delen, og man kan logge sig på og så videre, sessions bliver registreret og jeg har også fået det til at virke, med de sider som skal være beskyttede. Men dog alligevel ikke helt. Det er fordi, jeg har ikke, som mange andre en side hvor man logger ind, men jeg har til gengæld min login form, included på alle siderne. Se evt. www.webweaver.dk. Og meningen er så at når man logger ind, skal der i stedet for login formlen vises enten admin menu eller bruger menu, afhængig af hvem der logger ind. Det har jeg også lavet, sådan så det virker når man logger på. Men, når jeg så skifter til at anden side på sitet. Altså klikker på et link.. Så viser den lige pludselig formen igen på den side, ligesom før man loggede ind. Og det er selvfølgelig ikke meningen. Menuen skal jo gerne blive der. Og det er så her jeg ikke forstår, hvorfor det ikke virker, fordi jeg har testet at den gemmer mine sessions ordentligt, og det gør den, fordi jeg kan sagtens se den beskyttede side og udskrive session'en.. Det er kun den include login form/menu, der fejler.. Det får mig til at tro, at fejlen ligger et sted i min function_tjek_login.php fil, som er en anden fil jeg includer på alle sider, som jeg bruger til at tjekke om man er logget ind og til at finde ud af hvilken menu som skal vises ude i siden.
Håber I forstod den lange besværlige forklaring ;) Ellers må I lige sige til! .. Men her har I lige min kode til de forskellige filer..
menu/login:
$username = $_POST['username'];
$password = md5($_POST['password']);
$connect = mysql_connect("********", "********", "********") or die("Der kunne ikke oprettes forbindelse til databasen lige nu. Prøv igen senere.");
mysql_select_db("**********", $connect) or die("Databasen blev ikke fundet!");
$foresp = mysql_query("SELECT * FROM Profil WHERE brugernavn = '".$username."'", $connect) or die("Data blev ikke hentet ud af databasen!");
while($data = mysql_fetch_array($foresp)) {
$brugernavn = $data['brugernavn'];
$kodeord = $data['kodeord'];
$admin = $data['admin'];
}
if (isset($_POST['login'])) {
if ($username == $brugernavn && $password == $kodeord && $admin == 1) {
$_SESSION["username"] = $username;
$_SESSION["logged_in"] = TRUE;
$_SESSION["admin"] = TRUE;
} elseif ($username == $brugernavn && $password == $kodeord) {
$_SESSION["username"] = $username;
$_SESSION["logged_in"] = TRUE;
}
}
if (menu_tjek_login_admin()) {
echo "admin menu";
} elseif (menu_tjek_login()) {
echo "bruger menu";
} elseif (!menu_tjek_login_admin() || !menu_tjek_login()) {
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="login">
Username : <input type="text" name="username"><br />
Password : <input type="password" name="password"><br />
<input type="submit" value="Login">
</form>
<?
}
?>
function_tjek_login.php:
<?
session_start();
function tjek_login() {
if (isset($_SESSION['username']) && $_SESSION['logged_in'] == TRUE) {
return true;
} else {
header("location:http://www.jubii.dk");
return false;
}
}
function tjek_login_admin() {
if (isset($_SESSION['username']) && $_SESSION['logged_in'] == TRUE && $_SESSION['admin'] == TRUE) {
return true;
} else {
header("location:http://www.jubii.dk");
return false;
}
}
function menu_tjek_login_admin() {
if (isset($_SESSION['username']) && $_SESSION['logged_in'] == TRUE && $_SESSION['admin'] == TRUE) {
return true;
}
}
function menu_tjek_login() {
if (isset($_SESSION['username']) && $_SESSION['logged_in'] == TRUE) {
return true;
}
}
?>
Kan I se fejlen nogle steder?
På forhånd tak :)
Mvh. Lasse Jensen