Gå til innhold

Sette opp meny som vises når brukeren logger på?


Gjest Slettet+432

Anbefalte innlegg

Gjest Slettet+432

Noen her som vet hvordan man gjør sånn at når en bruker har logget på så får han tilgang til forskjellige menyer, eks. Nedlastinger og så videre...??

 

Vet at man bruker sessions, men vet ikke hvordan.. Tenker litt på å bruke fullstendig loginside-skriptet til minlilleverden.net

Lenke til kommentar
Videoannonse
Annonse

sessions er riktig ja, søk gjerne etter et par tutorials, så vil du se hvordan det kan brukes:

google

har som alltid mange gode forslag!

 

les også på php.net sin dokumentasjon

 

Det er ikke forklart i en håndvending, så gjør helst noen forsøk selv og kom tilbake med problemer etterpå.

 

Du bør også vite at det er relatert til Cookies (mest sannsynlig) og dermed til HTTP headers, i tilfelle du støter på nye uforståelige feilmeldinger.

Lenke til kommentar

Sessions er ikke noe man lærer i en håndvending hvis man ikke vet hva cookies er, eller hvordan HTTP fungerer.

 

Jeg vil virkelig anbefale å lese både php.net sin dokumentasjon (står en del eksempler der) f.eks funksjonen session_register() er relevant.

 

Jeg vil også likevel oppfordre deg til å finne en tutorial og følge den.

 

Kort sagt vil det foregå slik: (pseudokode)

 

1) På loginsiden

 

*) sjekke om brukeren har sendt inn gyldige logindata (typisk bruker passord)

*) registrere en session med navn hvis det er tilfelle

 

På alle andre sider som skal ha spesielle ting for innloggede:

*) sjekke om en viss sesjon er registrert

*) skrive ut link hvis så er tilfelle

 

På logutsiden:

 

*) fjern sessionen. det kan gjøres uavhengig om den er registrert eller ikek

Lenke til kommentar

En session kan sees som et lite minne område som er delt av alle sidene under en url, der variabler kan bli lagt, og hentet fram ved behov. Som for eksempel brukernavn og passord, som jeg leste i en tutorial. På de sidene du vil ha innlogging for å vise linkene/download etc, så blir det slik, pseudokodisk:

if(brukernavn og passord er lagret i session)
{
 if(brukernavn og passord er riktig i forhold til en database (feks.))
 {
    vise "hemmelig" innhold.
  }
  else
  {
     gi beskjed om at du må være innlogget for å se innholdet.
   }
}
else //Dersom brukernavn og passord ikke var registrert, må brukerern logge seg inn.
{
 skrive ut login skjema
} 

Lenke til kommentar

Slik ser en funksjon jeg har brukt innimellom for å sjekke om brukeren er logget inn ut. Øverst i alle filene, Absolutt øverst(før noe html) så må du ha "session_start();"

function IsLoggedIn()
{
   if(isset($_POST['uid']))
   {
       $_SESSION['uid'] = $_POST['uid'];
       $_SESSION['pwd'] = $_POST['pwd'];
   }
 
   if(isset($_SESSION['uid']) && isset($_SESSION['pwd']))
   {
       mysql_connect("bruker","pass","database");
       $user = $_SESSION['uid'];
       $pass = $_SESSION['pwd'];
       $sql = "SELECT * FROM brukere WHERE userid = '$user' AND userpwd = '$pass' LIMIT 1"; 
       $result = mysql_query($sql);
       if(!$result)banner_msg("No data received from database..");
       if (mysql_num_rows($result) == 0)
       {
           banner_msg("No access for this username and/or password.");
           logout();
           return FALSE;
       }
       else
       {
           return TRUE;
       }
 
 
   }


}

banner_msg() er kun en liten funksjon som skriver ut en linje på slutten av sida med info om hva som skjer. I steden for den har du selvsagt din måte å informere brukern om hva som skjer.

 

logout() er en fuknsjon som sletter sessionen(med brukernavn og passord osv) og ser slik ut:

function logout()
{
 unset($_SESSION['uid']); 
 unset($_SESSION['pwd']); 
 unset($_POST['uid']);
 unset($_POST['pwd']);
 unset($uid);
 unset($pwd);
 session_destroy();
}

 

Bruker også mysql til å sjekke brukernavn og passord, men du kan selvsagt også her gjøre det om til din egen måte.

 

Der jeg vil vise det hemmelige innholdet da:

if(IsLoggedIn())
{
  skriv_hemmelig_innhold();
}
else
{
  echo "Du må være logget inn for å se dette innholdet..";
}

Håper dette var somewhat forståelig. Gjerne få tilbakemeldinger på om dette er lurt/dumt eller rett og slett usikkert.

Endret av phanti
Lenke til kommentar

Du trenger ikke en personlig session, type brukernavn eller noe sånt, hvis han ikke skal ha noe personlig opplegg.

 

Hvis det er snakk om å være logget inn eller ikke, og i såfall vise et ekstra meny element, kan han bare bruke $_SESSION["logget_inn"] for eksempel, og bruke den på alle som logger seg inn.

Lenke til kommentar

ehh.. jeg rotet litt, men følgende er en demo for helt enkelt å demonstrere prinsippet, hvis du ikke har noen bruekrdatabase og ikke trenger å skille mellom forskjellige brukere.

 

3 filer; login.php, index.php og logut.php

 

login.php:

<?php
session_start();
if($_POST["passord"] == 'heioghopp'){
 session_register('innlogget');
 header('Location: index.php');
 exit;
}
else{
 echo "<form method=POST>Skriv inn hemmelig passord! (heioghopp)<br><input name=passord type=password><input type=submit></form>";
}

 

index.php:

<?php
session_start();
if(session_is_registered('innlogget')){
 echo "Du er logget inn!<p>";
 echo "Her kan jeg vise en super-duper hemmelig download link hvis jeg vil.";
}
else{
 echo "Du er ikke logget inn, vennligst gå til <a href=login.php>Login-siden</a> og logg deg inn";
}
?>

 

logut.php

<?php
session_start();
session_unregister('innlogget');
echo "Du er nå logget ut, enten du var logget inn eller ikke!";
?>

Lenke til kommentar
  • 3 uker senere...
Gjest Slettet+432

Du, det skal liksom være en side der brukere kan registrere seg, og når de har registrert seg, kommer opp en side med informasjonen de har oppgitt.

Og alle som er registrert, har tilgang til download-siden. De som ikke er registrert, vil da få en melding om at han må logge seg på...

Er det noen som kan lage en tutorial av det, eller noe slikt? Sånn at det blir for hver bruker som registrerer seg? Jeg bruker minlilleverden.net sin "fullstendig loginside". Den bruker MySQL.

Endret av Slettet+432
Lenke til kommentar

RebooT: De fleste her har sikkert lært seg PHP via en bok eller online tutorials. Det som står på php.net er *meget* bra, kjøp deg eventuelt "Beginning PHP" og "Professional PHP" fra Wrox Press.

 

Se også www.hotscripts.com's Php-del. scriptene som ligger her er ev meget varierende kvalitet, men det ligger i alle fall reim på reim med kildekode her som du kan se på for å lære deg hvordan ting *kan* gjøres.

 

HJ

Lenke til kommentar
  • 2 uker senere...

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