<?php
session_start();
// Dersom brukeren kommer fra innloggingsskjemaet, lagrer jeg brukernavnet
// og en kryptert utgave av passordet i sessions.
if (isset($_POST['brukarnamn']))
$_SESSION['brukarnamn'] = $_POST['brukarnamn'];
if (isset($_POST['passord']))
$_SESSION['krypassord'] = md5($_POST['passord']);
// Dersom brukeren har trykket på «Logg ut»-knappen, skal både sessions og
// alle cookies tømmes, nullstilles, slettes, elimineres.
if (isset($_GET['logout']) && $_GET['logout']) {
unset($_SESSION['brukarnamn']);
unset($_SESSION['krypassord']);
$_SESSION['utlogga'] = 1;
setcookie('julekake', '', time()-3600, '/', '.andebyonline.com');
setcookie('lukketvalnott', '', time()-3600, '/', '.andebyonline.com');
header('Location: http://'.$_SERVER['HTTP_HOST']);
}
// Dersom brukeren IKKE har trykket på «Logg ut»-knappen, og det finnes
// informasjon om innloggingsinformasjon i cookies men IKKE i sessions,
// må vi bake småkaker.
elseif (!$_SESSION['utlogga'] && $_COOKIE['julekake'] && !$_SESSION['brukarnamn']) {
$_SESSION['brukarnamn'] = $_COOKIE['julekake'];
$_SESSION['krypassord'] = $_COOKIE['lukketvalnott'];
setcookie('julekake', $_SESSION['brukarnamn'], time()+5184000, '/', '.andebyonline.com');
setcookie('lukketvalnott', $_SESSION['krypassord'], time()+5184000, '/', '.andebyonline.com');
}
// Nå er all informasjon fra cookies eller innloggingsskjema på plass i
// sessions. Så må den informasjonen tolkes til hvorvidt brukeren er
// innlogget eller ikke ...
// Jeg har av praktiske årsaker en egen variabel som forteller om brukeren er
// logget inn. Den skal i utgangspunktet være 0, altså «ikke innlogget».
$innlogga = 0;
// Nå sjekker vi om det finnes informasjon i sessions om innloggings-
// informasjon. Vi må også sørge for at kodesnutten ikke kjøres dersom
// brukeren har trykket på «Logg ut»-knappen.
if (isset($_SESSION['brukarnamn']) && isset($_SESSION['krypassord']) && $_SESSION['brukarnamn'] && $_SESSION['krypassord'] && !isset($_GET['logout'])) {
// Sjekk om det finnes en bruker i databasen som har den påloggings-
// informasjonen som er lagret i sessions. Merk at jeg har lagret
// alle passord i kryptert format, dersom du ikke gjør dette er det
// en litt vanskeligere operasjon (men ikke umulig). Denne delen må
// selvsagt også gjøres helt annerledes dersom du lagrer bruker-
// informasjon på en annen måte enn MySQL-databaser.
$query = 'SELECT * FROM brukarar WHERE brnamn=\''.str_replace('\'', '', $_SESSION['brukarnamn']).'\' AND passord=\''.$_SESSION['krypassord'].'\'';
$result = mysql_query($query);
$num = mysql_num_rows($result);
// Dersom det finnes resultater, betyr det at brukeren eksisterer
// og at passordet stemmer ...
if ($num == 1) {
$brukarinfo = mysql_fetch_array($result);
// ... så da lagrer jeg brukerens id og brukernavn i egne
// variabler så jeg kan bruke dem i scriptet...
$brn = stripslashes($brukarinfo['id']);
$brukarnamn = stripslashes($brukarinfo['brnamn']);
// ... og endrer «er brukeren innlogget?»-variabelen min
// til 1.
$innlogga = 1;
// Dersom brukeren kommer fra innloggingsskjemaet, og han
// har haket av for «Husk meg», må brukernavn og kryptert
// passord lagres i cookies.
if ($_POST['hugsmeg']) {
setcookie('julekake', $_SESSION['brukarnamn'], time() + 5184000, '/', '.andebyonline.com');
setcookie('lukketvalnott', $_SESSION['krypassord'], time() + 5184000, '/', '.andebyonline.com');
}
// Her har jeg et par andre funksjoner som det er greit
// å sjekke på dette tidspunktet i koden i mitt tilfelle
// -- jeg lagrer tidspunktet akkurat nå i databasen (for
// å senere kunne vise på skjermen når brukeren sist var
// aktiv, eller vise «X er pålogget akkurat nå»), og jeg
// sjekker om brukeren er blokkert og/eller satt i en
// postekarantene. Disse funksjonene er sannsynligvis
// ikke av interesse i ditt tilfelle, så jeg viser dem
// ikke her.
}
}
?>