Gå til innhold

Log inn/Log ut


Anbefalte innlegg

Jeg har laget en side som er passord beskyttet, men jeg lurer på hvordan jeg får "lagra" passordet når noen logger inn. Jeg vil ha sånn at man må trykke på "Log Ut" for å komme ut.

 

 

login.php:

<form method="post" action="loggetinn.php">
Brukernavn: <br> <input id="input" type="text" name="brukernavn"><br>
Passord: <br> <input id="input" type="password" name="passord"><br>
<input id="input" type="submit" value="Login">
</form>

 

 

loggetinn.php:

<?php

// Brukere start
$brukere["bruker1"]="pass1";
$brukere["bruker2"]="pass2";
$brukere["bruker3"]="pass3";
// Brukere slutt

if($brukere[$_REQUEST["brukernavn"]] == $_REQUEST["passord"]){
  echo "Du er logget inn!";
}
else{
  echo "Du er ikke logget inn!";
  exit;
}
?>

 

Tar imot alle svar :p

Lenke til kommentar
Videoannonse
Annonse

Sessions er fint å bruke i flere sammenhenger, ofte er det kjekt å starte med sessions for å lage administrasjonsområder, for så å gå over til noe man har mer kontroll over.

Sessions er i grunn så enkelt som det kan få blitt. For å klargjøre siden din for å bruke sessions må du sette koden

<?php session_start(); ?>

helt i toppen av hvert dokument på websiden din. Bruker du ett includescript på hele siden så holder det å sette dette i toppen av dokumentet includescriptet står i.

 

Sessions benytter seg oftest av cookies, og skriver om urlen og forms når hvis du ikke har cookies påskrudd. Dette gjør at du kan sende variabler fra ett dokument til ett annet uten at du gjøre noe annet enn å sette variabelen.

 

Session starter du ganske enkelt ved å ha ovennevte kodesnutt i toppen av dokumentet, og ved å ganske enkelt gjøre:

<?php $_SESSION['loggetinn'] = 1;
?>

 

For å fjerne alle sessions (logge ut, f.eks.) kan du bruke den ganske selvforklarende funksjonen

<?php session_destroy(); ?>

 

Ved hjelp av dette kan du altså ha noen dokumenter som dette:

login.php

<?php
session_start();
if(!isset($_POST['submit']))
{
//login form her
}
else
{
if($_POST['username'] == "admin" && $_POST['password'] == "passord")
{
$_SESSION['loggetinn'] = 1;
echo 'logget inn';
}
else
{
$_SESSION['loggetinn'] = 0;
echo 'feil brukernavn eller passord';
}
}
?>

admin.php

<?php
session_start();
if($_SESSION['loggetinn'] == 1)
{
// skriv ut adminpanel.
}
else
{
header("location: login.php");
}
?>

logout.php

<?php
session_start();
session_destroy();
header("location: index.php");
?>

 

Prøvde så godt jeg kunne å forklare, men blir kanskje litt kaos i den lille boksen her, men håper du forstår.

Endret av LoS
Lenke til kommentar

Anbefales ikke å ha bare sjekke på den måten, da noen kan "stjele" sessionen og være innlogget med engang.

 

Sett f.eks

$_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

 

og sjekk

 

if ($_SESSION['check'] === md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {

//innlogget

}

 

Da må brukeren fake IP og browser for å kunne komme inn i tillegg til å "stjele" sessionen og siden det hashes med MD5 så vet ikke en hacker hva han må fake. :)

Lenke til kommentar
Session_register er ikke det nødvendig?

Fra manualen:

Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readability. With $_SESSION, there is no need to use the session_register(), session_unregister(), session_is_registered() functions. Session variables are accessible like any other variables.
Lenke til kommentar
Anbefales ikke å ha bare sjekke på den måten, da noen kan "stjele" sessionen og være innlogget med engang.

 

Sett f.eks

$_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

 

og sjekk

 

if ($_SESSION['check'] === md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {

//innlogget

}

 

Da må brukeren fake IP og browser for å kunne komme inn i tillegg til å "stjele" sessionen og siden det hashes med MD5 så vet ikke en hacker hva han må fake. :)

Godt tips. Det skal jeg huske på :)

Lenke til kommentar
Anbefales ikke å ha bare sjekke på den måten, da noen kan "stjele" sessionen og være innlogget med engang.

 

Sett f.eks

$_SESSION['check'] = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

 

og sjekk

 

if ($_SESSION['check'] === md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']) {

//innlogget

}

 

Da må brukeren fake IP og browser for å kunne komme inn i tillegg til å "stjele" sessionen og siden det hashes med MD5 så vet ikke en hacker hva han må fake. :)

 

Fant dette i PHP-dokumentasjonen:

[Editor's Note] Locking a session to an IP address will sometimes result in valid user's sessions not being restored.  ISPS sometimes use more than one proxy server, the ISP may direct the traffic through a different proxy on each request[/Note]

Vet ikke om det har noe å si, men det var nå det som stod om IP-sjekking på den siden.

 

 

 

siden det hashes med MD5 så vet ikke en hacker hva han må fake. :)

Session-variablene kan vel ikke leses av andre uansett, de får jo bare en session ID. Så om du lagrer IP-en så er det ingen som kan se det?

Lenke til kommentar

Eksempelet var vel kun for å forstå hvordan du enkelt kan bruke sessions for å logge ut og inn og være innlogget. Kode som øker sikkerhet, og som samtidig kan forvirre leseren er ikke alltid like smart å bruke. Han skal lære seg å bruke sessions. Dessuten så er det ikke verdens enkleste ting å snappe opp sessioniden heller. Uansett, fint at du hjelper til! :)

Lenke til kommentar

Eg har i blant opplevd problemer med å definere fleire sessionvariabler, for å så sjekke begge to.

 

For eksempel:

if($blah == $foo) {
$_SESSION['validale'] = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']);
$_SESSION['username'] = $sql['username'];
header("Location: http://example.org/valider.php");
}

 

valider.php:

if(md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT']) == $_SESSION['valdale'] AND $sql['username'] == $_SESSION['username']) {
// Foo this
}

(Koden kan sikkert inneholde feil, dette var berre eit eksempel.)

 

 

Dette har eg i nokre tilfeller (på nokre serverar) opplevd at ikkje fungerer.

Er eg den einaste?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...