Gå til innhold

Logg-inn funksjon


Anbefalte innlegg

Okay, jeg har da altså laget en side fra scratch,hvor halve meningen er at du skal kunne oppdatere siden uten å måtte logge deg inn på FTPen og editere .php filer.

 

Slik som jeg har det da er lignende HW.no, med en midtrad som inneholder nyheter. For å legge til en slik nyhet logger en seg inn via forsiden, legger til det en vil skal bli den neste nyheten i en tekstboks og klikker OK.

 

Problemet: Jeg vil ikke at noen skal se tekstboksene osv hvor jeg legger inne nyheter via. Altså må en ha passord for å se disse sidene. Det er greit nok. På forsiden ligger et form som en skriver inn brukernavn og passord i. Så sendes resultatet til logget_inn.php som sjeker om passordet stemmer eller ikke. Hvis det stemmer tar den en include ("oppdater.php"); og viser den sida på logget_inn.php. hvis ikke viser den feilmelding. Nederst på oppdater.php er den en Submit-knapp. Når en trykker på denne blir all informasjonen overført og forsiden blir oppdatert.

 

Men, det er et sikkerhetsproblem. Hvis noen finner ut at det er en side som heter oppdater.php, er det bare å skrive inn denne addressen i nettleseren. Så skriver en inn nyheten og trykker Submit.

 

Så hvordan bør dette løses?

Lenke til kommentar
Videoannonse
Annonse

slik jeg har gjort det i login sidene mine..

så includer jeg en "isLoggedIn.php" i hvert script som sjekker om brukeren er logget inn (du kan jo f.eks sende med brukernavn/pw videre på hver side som cookie, eller bruke noe session styr)

om bruker/pw ikke stemmer så bare tar du en die og viser en innlogginsside, og er alt fint viser du siden med x-tra innhold :)

 

med andre ord MÅ du sjekke om brukeren er logget inn på HVER side du har tenkt til å ha "hidden stæsj" på, ellers kan jo hvemsomhelst poste.

Lenke til kommentar

Bruk sessions.

På logg inn sjekk siden så starter du en session og registrerer en variable som du videre sjekker på hver side som er beskyttet.

Du kan bare gjøre det enkelt og bruke $_SESSION['sjekk'] = true;

Bare husk at du må bruke start_session kommandoen på hver side, og så sjekke om de er logget inn.

Eller du kan jo gjøre det samme med cookies, men da vil jo folk som har støtte for cookies avslått få problemer.

Jeg bruker i hvertfall sessions til dette.

Lenke til kommentar
personlig bruker jeg en klasse sammen med sessions for dette. da sjekker constructoren om brukeren er logget inn i constructoren, og lagrer all data om brukeren i en variabel i objektet. i tillegg holder objektet tilkoblingen til databasen slik at jeg kan bruke den ved senere anledninger.

 

Aiii. Heh, det var voldsomt "Way over my head" bare da. Jeg har forstått at de to neste aspektene jeg skal se på når det gjelder PHP er sessions og cookies. Sessions fattet jeg NULL av når jeg sist tittet på det, mens cookies virket litt for enkelt :)

 

men jeg bruker for øyeblikket bare noen linjer med kode i et dokument som sjekker om du har skrevet inn rett passord of brukernavn, også lar jeg denne siden skrive ut <form>et ved hjelp av PRINT. Fungerer ganske greit det også, eneste minuset er at passordet ligger rett ute på sources bare bak en md5-kryptering. da er det liksom mulig å brute-force det MYE enklere enn hvis det lå et sted sikkert. Jeg tror nok jeg må bevege meg over på mySQL snart jah :p

Lenke til kommentar

jeg skrev et en stund siden. Kan sikkert gjøres bedre, men det er forhåpentligvis brukbart.

Alt du trenger å gjøre er å hashe deg et passord med md5(passord) og adde det i scriptet med brukernavn:


<?php

// Admin Auth System

// laget av Egil.B

//

//

// starter session

// som senere skal brukes til å autorisere brukeren

// gjennom hele administrasjons-systemet

session_start();

// hvis php session ikke eksisterer registrer variabler

if ((!$sessionpass) || (!$username))

{

Session_register('sessionpass');

Session_register('username');

//sett variabel $password og $username fra post_vars

$password=$_POST['password'];

$username=$_POST['username'];

//krypterer passordet fra formen

$md5pass = md5($password);

}

else

{

// bruker passord som ligger lagret  i gjeldende session

$md5pass = $sessionpass;

}

// validate user

// ikke mysql ennuh

if(($md5pass == 'md5hash') && ($username == 'bruker'))

{

// hvis passord er korrekt lagrer passord i session

$sessionpass = $md5pass;

}

else

{

// if login = false

include('login.php');

exit;

}

// if login = true

//.....

//

//script end

?>

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...