Gå til innhold

Hvordan lage login-system på en website?


Anbefalte innlegg

Hei, jeg holder på med et prosjekt på skolen hvor vi skal lage en fungerende nettside for en oppfunnet firma. Jeg har laget selve siden og sånt, men jeg har lyst til å prøve å lage det litt mer komplisert enn det jeg har nå. Har derfor prøvd meg å lage et login-system, men med litt blandede resultater.

 

Jeg har brukt Dreamwiever til å lage det jeg har nå (insert i design-modus, ikke skrevet php-delen selv), men er usikker på hvordan jeg skal gå videre.

Sånn det er nå har jeg et login-felt på alle sidene.

På index-siden siden har jeg koblet det opp mot databsen, og jeg kan skrive inn brukernavn + passord for å logge inn, og komme til login-siden. Men her kommer problemet. Når jeg har logget inn, så kan jeg besøke andre siden, og da logger det ut, jeg kan oppdatere siden så logger den ut osv. Så når jeg logger inn, så er jeg bare logget inn på en side uten noen sammenheng med de andre. Du kan også bare skrive inn url-en til de sidene hvor du krever login også.

 

Det jeg ønsker er at når du logger inn på en av sidene, så skal du være logget inn på alle sidene, og du skal kunne oppdatere siden, bytte sider ol. og fremdeles være logget inn. Og siden som krever at du skal være logget inn for å åpne, skal kreve at du må logge inn eller alt være logget inn.

 

Jeg beklager den dårlige forklaringen, men det er det klarer nå. Kan så å si ikke noe php enda.

 

Er det jeg ønsker "enkelt", eller må jeg tukle ekstremt mye med php og databser? Kan basic ting med databser, men ikke noe avanserte saker.

 

Takker for all hjelp.

Lenke til kommentar
Videoannonse
Annonse

Du må ha en sjekk som sjekker om bruker er logget inn på hver sidevisning og hvis ikke blir brukeren ført tilbake til en standarside, f.eks logg-inn siden.

 

Til dette kan du bruke session-variablene i PHP.

 

1. Opprett session variabel med navn f.eks $autorisert = false

2. Ved innlogging og autorisering i database settes $autorisert = true

3. For hver sidevisning må det sjekkes om $autorisert = true

4. Ved utlogging eller tidsavbrudd settes $autorisert = false

 

Skal du ha en trigger ved tidsavbrudd lager du en session-variabel for dette også det du f.eks ligger inn en timestamp. Timestampen blir oppdatert for hver sidevisning. Hvis det er gått mer enn 30 min siden siste sidevisning kan man da si at autoriseringen har utgått.

 

Edit:

Du kan legge denne sjekken i databasen, men da må scriptet ditt sjekke databasen for hver eneste sidevisning. Det skaper unødvendig stor trafikk i databasen, men hvis dette er bare et skoleprosjekt med lite trafikk så fungerer det også.

Endret av Azidops
Lenke til kommentar

Det høres mistenkelig ut som om det bare er html formen som er på plass - ikke selve innlogginslogikken. Formen sender deg bare til en annen adresse med GET / POST hvor et annet script logger inn brukeren basert på informasjonen som er sendt med formen og forespørselen.

 

Jeg vil anbefale deg å få fingrende skitne og kjøpe deg en god bok (helst en som er oppdatert) som tar seg av brukerhåndtering, databaser og sessions. Dette er funksjonalitet som fort kan rote til nettsiden, så godt kildemateriale er kritisk for at dette skal kunne vedlikeholdes uten å miste hår.

 

PHP kan ta litt tid å sette seg inn i, men det vil definitivt lønne seg å lære det grundig kontra å basere seg på andre / automatiserte løsninger. Dette er hvis du er virkelig interessert og ønsker å lære. Jeg har jobbet med PHP i snart 7 år og lærer stadig nye ting i utviklingsprosessen.

Endret av emilkje
Lenke til kommentar

Hei, beklager sent svar, men har hatt det travelt.

Løste det med å bruke et login-system (ca. 6 php-filer) som jeg fant under en turtorial, og modifiserte det så det passet til min side. Jeg er klar over at det ikke er den optimale løsning, og jeg liker det ikke noe godt heller, man har ikke tid til å sette meg inn i php såpass mye før senere, og da er litt for sent å fikse på oppgaven, så valgte den løsningen.

 

Takk for at dere svarte.

 

PS. Om dere kunne ta en titt på denne tråden og se om dere kan løsningen/en metode for å løse det, hadde det hjulpet veldig :)

Endret av Fred7555
Lenke til kommentar
  • 1 måned senere...

hmmm... syns 6. php-filer virket meget overkill... Hva er inni dem forno a?

Gjør ingenting at det er delt opp i flere filer. Blir jo bare ryddigere ved å gjøre det. Kunne jo selvsagt hatt noe slik på samme side som form, men det er ikke så ryddig.

if(isset($_POST['registrering'])) { /* hent input og behandle data */ } 

Endret av Occi
Lenke til kommentar

Joa, ser den :)

 

Kikka litt på egne admin-script, og vakke så langt unna selv :D

 

Kjører også sepparat PHP og form i de tilfeller jeg ikke har selve formen i en funksjon...

Ellser er det jo db-oppkobling i egen, kontroll av felter etc. og til slutt selve scriptet...

Lenke til kommentar
  • 3 uker senere...

Vel kan gjøre det litt mer OO.

 

Lite utsnitt fra mitt system

class bsUserData {
var $username;
var $userlevel;
var $userid;
}

class bsAuth {

function __construct() {
// Sjekke user sessions og hente dataen
// deretter sette $_SESSION['user'] = bsUserData
}
}

 

Er på jobb nå, men kan komme med et bedre eksempel hvis det trengs.

Lenke til kommentar
  • 2 uker senere...
  • 2 uker senere...

Jeg har to forskjellige typer, en som bruker php, og lagrer alt i .xml filer.

Og en annen som bruker php, og lagrer alt i MySQL databaser, begge to er ganske enkel å forstå.

Alt er engelsk, pga. jeg har laget dem som eksempler til læring av php.

Ta kontakt på [email protected] om du trenger hjelp med å forstå disse

 

Legger med begge her

 

MySQL

XML

Ikke at jeg får sett hva du har gjort pga. linkene ikke fungerer, men generelt sett er det mer praktisk å bruke database til å lagre brukere (som brukes for login) da man som oftest bruker brukerinfoen flere steder, pluss man kan gjenbruke kode til større systemer som er helt avhengig av brukerinfo lett tilgjengelig for andre handlinger mot en database. Like greit å venne seg til det og ikke blande inn XML.

Lenke til kommentar

For å ha et godt login script burde du ha vanlig login form, hvor du ved bruk av php sjekker opp imot en brukerdatabase i MySQL. Du kan også via php lage nye, endre og slette ting ifra en MySQL database. Altså opprette, endre og slette brukere og brukerinformasjon.

 

Om du ønsker mer informasjon rundt hvordan dette gjøres, scripting m.m. send meg en mail, [email protected], så skal vi nok få til noe flott :)

 

 

PS: Det du trenger i et login script er,

webform, mysql connect, phpscript som da sjekker om brukernavn og pw er korrekt, aktivering av brukerkonto (er ofte greit, unngå spam, etc), mulighet for endring av passord...

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...