Gå til innhold

Forslag til kva eg kan ha på eit kontrolpanel.


Anbefalte innlegg

Hei!

Eg har laga meg eit kontrolpanel. Eg lærer mykje av det, det er ein av grunnane til at eg har laga det.

 

Har de råd til kva eg kan ha på det? Eg har allereie laga innlogging, gjestebok, funksjon for adding av nyheter, funksjon for lesing av nyheter, utlogging og tillegging av nye brukarar. Alt opererer opp mot ein database.

 

Eg føler at sikkerheten er ganske svak. Alle inputs blir "scanna" av htmlentities() og htmlspecialchars().

Kva kan eg meir gjere?

 

Når ein har logga på, vert ein session true. På kvar side skjekkar eg om sessionen er true. Viss han ikkje er det, får du feilmelding. Eg går ut frå at dette er ganske spinkelt... :)

Eg har jo ein database, og alle brukarar sin siste ip vil verte lagra der, så eg er ganske bra oppdatert på ipen til folk som loggar inn. Då kan eg spore opp evt. dobbeltbrukarar.

 

Eg håpar på innspel. :)

Lenke til kommentar
Videoannonse
Annonse

Hvordan jeg gjør det:

 

1: Sjekk om det er en kjeks på klienten. Hvis det er det, sjekk med sessions i databasen hvorvidt ipen på klienten, tiden inlogget og brukernavnet (de to siste er lagret i kjeksen) stemmer med sessions. Hvis de gjør det. Sjekk med databasen hvilke brukerrettigheter brukeren har. Om det er ok, slipp inn.

2: Ingen kjeks nei. Be om innlogging. Hvis bruker og pass stemmer, skriv kjeks, samt legg til en oppføring i session i databasen.

 

 

EDIT: Med denne metoden kan jo såklart folk med fysisk adgang stjele kjeksen, men den vil kun virke lokalt på lanet.

Endret av ze5400
Lenke til kommentar

Eg skal prøve på det.

No prøver eg å lage ein funksjon der ein kan regulere tilgangen med adgangstrinn.

F. eks. skal kun trinn 1 legge til brukarar, dei skal kunne gjere alt.

Trinn to skal kunne administrere gjesteboka og legge til artikler, og trinn 3 skal kun kunne legge til artikler.

 

Eg har prøvd å lage denne funksjonen.

function access_level($access_level) {
$username = $_SESSION['username'];
$query3 = "SELECT access_level FROM users WHERE username = '$username'";
if(mysql_query($query3) == "$access_level")
 return true;
else
 return false;}

Vil dette i teorien virke? Det forutsetter jo at ein er tilkopla til databasen.

access_level i databasen er varchar.

Eg kunne tenke meg å berre kjøre denne funksjonen på kvar side.

Det er lenge sidan eg laga mine eigne funksjonar, så det er sikkert ikkje rett. Kva kan eg gjere?

 

Kunne tenke meg å kunne gjere dette på kvar side:

if (access_level(1)) {
   //Det brukaren skal få tilgang til }
else 
  die;

 

Nokon moglegheit for å gå det til?

Lenke til kommentar

Hvis du har en fil som importeres i alle (functions.php elsn), kan du deklarere arrayen $CURUSER, som du fyller med all info om inlogga bruker.

 

Så på toppen av hver fil trenger du global $CURUSER;.

i functions.php definerer du også brukerklassene, for å forenkle arbeidet ditt. Kan se slik ut f.eks.

 

define("UC_USER", 0);

define("UC_MODERATOR", 1);

define("UC_ADMINISTRATOR", 2);

 

så for å finne ut om en bruker har tillatelse:

 

if ($CURUSER['class'] >= UC_BRUKERKLASSE){

 

}else

die();

Lenke til kommentar

Etter brukeren er autentifisert får du tak i brukeriden.

 

if (loggedin()){
$CURUSER = mysql_query("SELECT * FROM users WHERE id = '" getuserid() . "' LIMIT 1;");
$CURUSER = mysql_fetch_array($CURUSER)
}

 

Dette krever jo såklart at du har lagd funksjonen getuserid() og loggedin().

 

loggedin() skal returnere true eller false, getuserid() skal (logisk nok) returnere iden til inlogged bruker.

 

:)

 

EDIT: La til code tagg.

Endret av ze5400
Lenke til kommentar

Takk for ein god hjelp. Eg slit fortsatt med autensiering, men det kan eg ta seinare.

Eg har no laga getuserid:

function getuserid($usernamesession) {
$getuseridquery = "SELECT id FROM users WHERE username = $usernamesession";
$userid = mysql_query($getuseridquery);
return $userid; }

...og loggedin

function loggedin() {
if ($_SESSION['online'])
 return true;
else
 return false; }

Dette ser vel bra ut? Så deklarerer eg $CURUSER i functions.php, og fyllar han i index.php? (Rett etter han har logga in)

 

Koden du har skrive gjer vel at alt som er i databasen vert lagra i ein assosiativ matrise, så dette skal vel kun gjerast ein gong?

Eg er lettare forvirra... :)

 

Korleis vert sturkturen i arrayet?

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