Avatar billede spm Nybegynder
07. oktober 2004 - 21:06 Der er 14 kommentarer og
1 løsning

session eller cookie

Hej. Jeg har et loginsystem kørende. Sikkerheden tænkes der ikke på.

Når man logger ind skal den oprette en session eller cookie og den skal først fjernes når der logges af systemet. og det kan være f.eks 10 timer senere.. Hvordan gøres det smarteste??
Avatar billede sukos Juniormester
07. oktober 2004 - 21:08 #1
?
if(isset($_GET["logout"])) {
$_SESSION = array();
session_destroy();
header("Location:/");
exit();
}
Avatar billede spm Nybegynder
07. oktober 2004 - 21:15 #2
ups.. Jeg har da klokket helt i min beskrivelse af spørgsmålet.
cookien eller sessionen skal gemmes i længere tid.
Det skal være sådan at når man logger ind har man alle muligheder på siden bl.a: meld ankomst.
Så logger man ud af systemet, man går og hygger sig lidt, for så at vende tilbage, så logger man ind igen og så skal tjekkes om man allerede har meldt sin ankomst eller ej. Har man så skal knappen "meld ankomsten" være deaktiveret, så man kun kan vælge meld afgang..

det er lidt kludret forklaret, men kan ikke gøre det meget bedre.. sorry
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 21:23 #3
Det lyder som om du skal bruge sessions...

Så er man logget ind indtil man lukker alle browservinduer.

Med cookies vælger du selv hvor længe man skal være logget ind (selv om man lukker browseren, eller slukker computeren)
Avatar billede shjorth Nybegynder
07. oktober 2004 - 21:25 #4
Altså så man ikke bliver logget ud med mindre man selv gør det ???
Avatar billede spm Nybegynder
07. oktober 2004 - 21:27 #5
så tror jeg det er cookies jeg skal bruge..
Jeg kan ikke få det til at virke med session :(
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 21:33 #6
Sessions er smukke. De virker som beskrevet ovenfor. Når browseren lukkes, forsvinder de...

Hvis login er ok (med check i din database osv.) skriver du en session med

$_SESSION['inde'] = "ok";

I starten af de nødvendige sider skal der så stå:

session_start();
if($_SESSION['inde'] != "ok") {
  header("Location: http://www.etellerandet.dk");
}

Så bliver brugeren sendt derhen, hvis ikke session(cookien) er på plads.
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 21:39 #7
Nogle maskiner har cookies slået fra (af en eller anden årsag) så det er ikke en helt så skudsikker løsning som sessions. Men hvis du vil bruge cookies skal du:

Når login er ok og alt det der:

if(isset($_COOKIE["inde"])) {
  //han er smuk og kan gøre hvad han vil
} else {
  setcookie("inde", "ok",time()+3600); //3600 = en time
}
Avatar billede spm Nybegynder
07. oktober 2004 - 21:41 #8
Det jeg er igang med er et system hvor forskellige kan anmelde deres ankomst og afgang.
dvs de logger på med et brugernavn. Det brugernavn skal gemmes i en cookie eller session når de melder deres ankomst.
Derefter logger de ud af systemet. I mellem tiden kommer der andre og melder deres ankomst nøjagtig ligesom den første.
Det skal så være sådan at når de kommer hen igen og logger på så skal siden kunne finde frem til at de allerede har meldt deres ankomst, og så skal "meld afgang" knappen være aktiveret, og sessionen eller cookien skal derefter slettes.
Avatar billede spm Nybegynder
07. oktober 2004 - 21:43 #9
tror jeg ende med at gøre det med mysql'en
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 21:49 #10
Det lyder til at du bare skal skrive en cookie, der holder længe.

"dvs de logger på med et brugernavn. Det brugernavn skal gemmes i en cookie eller session når de melder deres ankomst."

setcookie("brugernavn", $brugernavn, time()+3600*24*30); //nu holder den i en måned
setcookie("password", $password, time()+3600*24*30);

"Det skal så være sådan at når de kommer hen igen og logger på så skal siden kunne finde frem til at de allerede har meldt deres ankomst, og så skal "meld afgang" knappen være aktiveret, og sessionen eller cookien skal derefter slettes."

if(isset($_COOKIE['brugernavn']) && isset($_COOKIE['password'])) {
  GØR MELD AFGANG KNAPPEN AKTIV
  unset($_COOKIE['brugernavn'], $_COOKIE['password'])
}
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 21:51 #11
...eller evt. uden password linien i begge tilfælde jf. det du skriver :)
Avatar billede spm Nybegynder
07. oktober 2004 - 22:02 #12
men, laver det ikke kage i det når der er flere som kommer systemet?? for når jeg smider $_post[bruger] ind i cookie virker det ikke...

har lige fået det til at virke med mysql
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 22:07 #13
cookien er unik, da den jo ligger på klientens maskine. Hvis du har fået det til at virke med MySql må du logge brugerens IP eller lign for at lave det unikt. Den kan dog ændre sig, hvis brugeren slukker PC'en. Du skal have anførselstegn omkring bruger i $_POST['bruger']... Men jeg kender jo ikke dit system. Jeg har bare besvaret dit spørgsmål. :) Mvh
Avatar billede baitianlong Nybegynder
07. oktober 2004 - 22:09 #14
...og cookies er jo netop kager :)))) Men om der så er en milliard brugere er cookies intet problem. Bliver du ikke automatisk logget ind her på eksperten ? Det sker med cookies.
Avatar billede spm Nybegynder
13. oktober 2004 - 23:36 #15
slut
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester