Ik denk dat dat een oneindige lus gaat geven als de gebruiker een cookie heeft.
Dus wat je doet is:
PHP-code:
elseif(isset($_COOKIE['login_cookie'])) {
...
header("Location: ".$_SERVER['REQUEST_URI']);
}
Op die "..." staan allemaal if else testen. Maar die header staat erbuiten. Dus hij wordt uitgevoerd ongeacht de if testen.
Dus als de gebruiker een cookie heeft zal hij altijd de pagina blijven refreshen, tenzij je in de If Else testen, de cookie ergens vernietigd waardoor het zou stoppen. Maar dat is niet bedoeling volgens mij. Iemand wil cookies zodat hij niet meer moet inloggen .
****
Hier:
PHP-code:
// ververs anders de sessietijd. Dit zorgt er voor
// dat de gebruiker ingelogd blijft zolang deze actief is.
$_SESSION['stime'] = $now;
Achter die $_SESSION['stime'] = $now; kan je een If Test plaatsen voor het Level te bekijken.
PHP-code:
...
}else {
// ververs anders de sessietijd. Dit zorgt er voor
// dat de gebruiker ingelogd blijft zolang deze actief is.
$_SESSION['stime'] = $now;
if($_SESSION['slevel'] == 1)
{
// Toon inhoud & partituren en dergelijke
echo "Welkom admin";
}
else
{
// De gebruiker is geen admin maar is wel ingelogd. Dus zijn level is te laag om de inhoud te zien.
echo "Sorry u bent niet gemachtigd om deze pagina te bekijken.";
}
}
Ik heb nu maar nummers genomen als "Level". Level 1 = toegang. Andere levels niet.
Dezelfde code moet je plaatsen achter:
PHP-code:
$_SESSION['suser'] = $naam;
$_SESSION['slevel'] = $row['level'];
$_SESSION['stime'] = time();
$_SESSION['smaxidle'] = 60 * 60;
// update cookie
// gebruik hierbij wederom het id en het versleutelde wachtwoord
setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
Dus:
PHP-code:
if(!strcmp($wacht, $row['pass']) && $_SERVER['REMOTE_ADDR'] == $row['last_ip']) {
// init session
$_SESSION['suser'] = $naam;
$_SESSION['slevel'] = $row['level'];
$_SESSION['stime'] = time();
$_SESSION['smaxidle'] = 60 * 60;
// update cookie
// gebruik hierbij wederom het id en het versleutelde wachtwoord
setcookie("login_cookie", $id.";".$wacht, time()+3600*24*31*2, "/");
if($_SESSION['slevel'] == 1)
{
// Toon inhoud & partituren en dergelijke
echo "Welkom admin";
}
else
{
// De gebruiker is geen admin maar is wel een lid (Aangezien hij een geldige cookie had.)
echo "Sorry u bent niet gemachtigd om deze pagina te bekijken.";
}
} else {
...
En dan die header op het einde gewoon weglaten. Dat zou moeten werken normaal gezien.
Mensen die niets met de site te maken hebben, krijgen een lege pagina. En mensen die ingelogd zijn,maar niet het juiste "level" hebben, die krijge die "Sorry u bent niet gemachtigd..." melding te zien.
Je moet dus die "== 1" wel eventueel vervangen door hetgeen jij gebruikt voor die levels.
Als ik me niet vergis.
Mvg,
Dave
Favorieten/bladwijzers