Avatar billede webcreator Nybegynder
20. juni 2003 - 13:26 Der er 22 kommentarer og
1 løsning

Gem login i cookie

Hej.

Jeg har et website, med flere funktioner, som jeg ønsker kun er tilgængelige, hvis personen er logget ind. Men det er træls, at skulle logge ind hver eneste gang, man får brug for en funktion - derfor vil jeg lave det vha. cookies. Jeg har flg. krav :

- Ved logon oprettes en cookie, som "expire" når browseren lukkes eller websitet forlades
- Ved logon (med "husk password") oprettes en cookie, som kun "expire", når man trykker på et log-ud-link

Da jeg aldrig har leget med sådan noget før, så får jeg brug for eksempler på :

- Oprette og gemme i cookie
- Hente data fra cookie, og gemme i HTML variabel
- Slette/expire cookie
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:27 #1
Jeg mente, at der skulle gemmes i PHP variabel - ikke HTML variabel :-)
Avatar billede Slettet bruger
20. juni 2003 - 13:29 #2
Du kunne tage et kig på PHP's sessionfunktioner:
http://www.phpfreaks.com/tutorials/41/0.php
Avatar billede ahv Nybegynder
20. juni 2003 - 13:30 #3
Oprette og gemme en cookie ->
setCookie("navncookie", "indholdafcookie", time()+60*60*24*365*2); // Vi giver den 2 års leve tid, det må være nok ;o)

Hente data fra cookie ->
$cookie = $_COOKIE['navncookie']; // $cookie indeholder nu indholdet af cookien

Slette en cookie ->
setcookie("navncokkie", "", time()-60*60*24); // Vi giver den minus levetid også dør den
Avatar billede ahv Nybegynder
20. juni 2003 - 13:31 #4
setcookie("navncookie", "", time()-60*60*24); // Vi giver den minus levetid også dør den
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:34 #5
Ahv > Cool, kort og kontant - sådan vil jeg have det :-)
Du skriver "indhold af cookie" - hvis jeg nu skal have username og password i den, hvordan adskiller jeg så det, og henter det seperat ?
Avatar billede Slettet bruger
20. juni 2003 - 13:37 #6
Du kalder bare funktionen to gange. Men jeg synes, du skal kigge på sessions, da de er bedre til at behandle informationer, som skal "smides væk", når brugeren forlader websitet.
Avatar billede ahv Nybegynder
20. juni 2003 - 13:37 #7
Du kan gøre det sådan her ->
setCookie("navncookie", "navn | kodeord", time()+60*60*24*365*2);

også explode ved |
Avatar billede ahv Nybegynder
20. juni 2003 - 13:38 #8
phoenixv -> De skal da netop gemmes indtil man trykker logud? Sessions dør så snart du lukker browseren eller de ikke har været rørt i 20 min.
Avatar billede ahv Nybegynder
20. juni 2003 - 13:39 #9
Du burde evt. md5 kodeordet i cookien så man ikke bare kan åbne denne og få det hele serveret.
Avatar billede Slettet bruger
20. juni 2003 - 13:41 #10
ahv>> Se hans første krav. Desuden kan man jo selv sætte expiration time på serveren.
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:42 #11
Ahv > Uha, lyder advanced - er det det ?
Kan du svare på hvordan værdier blev tilknyttet navn og kode, og hvordan disse blev hentet ? Eller er det som i et array, hvor de har "numre" ?
Avatar billede ahv Nybegynder
20. juni 2003 - 13:42 #12
Så må han lave en kombineret med sessions og cookie, så han tjekker for at man har sat hak i "Auto-login" og har man det opretter den så en cookie, når man så kommer igen tjekker den på om der er en cookie er der det lægger den indholdet i en session.
Avatar billede ahv Nybegynder
20. juni 2003 - 13:43 #13
setCookie("navncookie", "navn|kodeord", time()+60*60*24*365*2);

Vi vil have brugernavn og kdoeord ud hver for sig ->
$oplysninger = explode("|",$_COOKIE['navncookie']);
$brugernavn = $oplysninger['0'];
$kodeord = $oplysninger['1'];
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:45 #14
Ahv > Perfekt. Netop hvad jeg havde brug for.
Men dvs. at jeg nu kan åbne en gemt cookie, og derud fra læse kode og brugernavn ?
Avatar billede Slettet bruger
20. juni 2003 - 13:45 #15
Der skal ikke være apostroffer:

$brugernavn = $oplysninger[0];
$kodeord = $oplysninger[1];
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:45 #16
In that case, skal jeg have noget sikkerhed smidt på..
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:46 #17
PhoenixV > Ok - tak :)
Avatar billede ahv Nybegynder
20. juni 2003 - 13:52 #18
Vi kunne sige at indholdet af vore cookie var en md5("brugernavn kodeord");

Et lille eksempel ->

if ($_COOKIE['navncookie']) { // Vi tjekker om der findes en cookie
  $query = mysql_query("SELECT id, user, pass FROM tabel");
  while ($row = mysql_fetch_array($query)){ // Vi laver et gennemløb af tabellen i databasen for at se om der er noget som matcher vores cookie
      if (md5("$row[user] $row[pass]") == $_COOKIE['navncookie']){
        $_SESSION['id'] = $row['id']; // Hvis det er tilfældet registrer vi en session
      }
  }
}
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:55 #19
Det ændre vel ikke på, at indholdet i cookien er i txt-format ?
Avatar billede webcreator Nybegynder
20. juni 2003 - 13:56 #20
Jeg har ikke md5 på i min DB btw.
Avatar billede ahv Nybegynder
20. juni 2003 - 14:03 #21
Nej, det skal heller ikke være i databasen, det gør vi uden for, når vi registrer cookien har vi netop brugernavn og kodeord i to variabler f.eks. ->
$row[user] $row[pass]

Dem kan vi så lave en md5 på når vi smider den i en cookie ->
setCookie("navncookie", md5("$row[user] $row[pass]"), time()+60*60*24*365*2);
Avatar billede webcreator Nybegynder
20. juni 2003 - 14:24 #22
Ah, ok - på den måde. Fint nok. Nu vil jeg lige sidde lidt og lege med det så. Vender tilbage når jeg er færdig :-)

- tak for hjælpen so far.
Avatar billede webcreator Nybegynder
25. juni 2003 - 13:21 #23
Mange tak for hjælpen :-)
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