Gå til innhold

Logginn side for admin/moderator


Anbefalte innlegg

Hei,

Driver å skal scripte ett administrator/moderator panel til nettsiden min. Selve logginn siden skal sjekke om brukeren er admin/mod, er man admin eller mod og har skrevet riktig brukernavn og passord blir man sendt til index filen.

Beste og sikreste måten og gjøre dette på?
Og hvis man er innlogget på nettsiden fra før, så vil man ikke trenge og logge inn. Om en vanlig bruker f.eks går inn på subdomene jeg har adminpanelet på og han er innlogget så vil han enten få 404 Header eller innloggingssiden (men ikke mulighet for å logge inn, siden brukeren ikke er en admin/mod)


Noen forslag?
Takker for svar på forhånd!

Lenke til kommentar
Videoannonse
Annonse

Har sjekket litt på stackoverflow og har funnet frem til nogen lunde det jeg lette etter, men poster scriptet mitt når det er ferdig, her. For å få tips og forslag til forbedringer og hvordan gjøre det mer sikret.

Lenke til kommentar

Går ut ifra at du har en database som du lagrer admin/mod i - MySQL til eksempel.

Jeg ville opprettet en tabell hvor du i minstefall har id, brukernavn, passord og evt. tilgangsnivå.

 

Når du sender innloggingsdata til serveren, kjører du en spørring mot denne tabellen for å søke etter en match.

 

Hvis du får match {

- så videresender du brukeren til administrator/moderator panelet,

}

hvis ikke {

- så returnerer du en nøytral feilmelding til brukeren om at innloggingen misslykkes/feilet.

}

 

Benytter du php som programmeringsspråk, v5.5.0 eller nyere, kan du se nærmere på password_hash og password_verify.

Du bør også se nærmere på session_regenerate_id og session_write_close.

 

Her har du et raskt eksempel på bruk:

if (empty($_POST['username']) || empty($_POST['password'])) {   //  Først sjekker vi om påkrevde felt er tomme FØR vi kjører spørring mot db'en
    //  returnere en nøytral tilbakemelding om at noe feilet ("et eller flere påkrevde felt er tomme").
} else {  //  OK? da kjører vi en spørring mot db'en etter gyldig brukernavn
#    "gyldige detaljer som ble returnert basert på brukernavn, og satt i variabler"
        $username = 'adm123';
        $password = password_hash('pass123',PASSWORD_DEFAULT);
        $level = 3;  //  4 = webmaster, 3 = admin, 2 = mod til eksempel
//
	if ($_POST['username']==$username && password_verify($_POST['password'], $password)){  //  hvis match på både brukernavn og passord
                session_regenerate_id();  //  genererer vi en ny session id
		$_SESSION['access'] = true;
		$_SESSION['accessUser'] = $username;
		$_SESSION['accessLevel'] = $level;
		session_write_close();  //  skriver data umiddelbart til session
		header('Location: /index.php');  //  og videresend brukeren
		exit;  //  avslutt skriptet for å vidresende brukeren umiddelbart
	} else {
		$_SESSION['access'] = false;  //  eller ikke sette noe
		//  returnere en nøytral tilbakemelding om at noe feilet ("Innloggingen misslykkes. Sjekk at <inntastet brukernavn> er riktig brukernavn, og at du har benyttet riktig passord")
		header('Location: /login.php');  //  returner brukeren tilbake til innloggingssiden, eller til en annen landingsside
		exit;  //  avslutt skriptet umiddelbart
	}
}

Dette er ikke et komplett skript, så ikke bare kopier og lim inn. Men det er en start ;) Lykke til...

 

det er viktig at du har session_start() i toppen av hver side du ønsker å benytte innloggingen på.

 

Passordet bør hashes før det lagres til databasen. Så bruk av password_hash er burde ikke benyttes ved innlogging - kun password_verify...

Endret av Yawa
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...