The_Lozer Skrevet 19. desember 2006 Rapporter Del Skrevet 19. desember 2006 hei, Jeg er ute etter ett login script som setter en cookie med timeout på 10min når man logger inn. Og er det mulig å ha en ting som sjekker om cookie'en stemmer på en annen side f.eks om den er der så sier den noe sånt som du er logget inn, else du er ikke logget inn. om det lar seg gjøre hvordan? Takker for alle svart. Lenke til kommentar
Martin A. Skrevet 19. desember 2006 Rapporter Del Skrevet 19. desember 2006 En cookie er som regel permanent. Som feks "Husk Meg"-funksjonen på diverse forum. En session bruker man som regel når men ikke benytter en slik funksjon, den kan du sette timeout på. $_SESSION['timeout'] = time() + (60*10); Da kan du enten sjekke om $_SESSION['timeout'] eksisterer, og samtidig sjekke at den er større enn time(), og da sette den nok en gang. Dette for at sesjonen skal leve i 10 nye minutter. Eller du kan lage en egen sesjon, feks $_SESSION['innlogget'] = 1; //brukeren er logget inn $_SESSION['timeout'] = time() + 600; //600 = 10 minutter header("Location: nyside.php); //Videresender brukeren til nyside.php exit; //Avslutter resten av scriptet. //nyside.php if ( isset ( $_SESSION['timeout'] ) && $_SESSION['timeout'] > time() ) { //Du er fortsatt innlogget, forsett med det du gjorde. } else { //Logg inn på nytt du. } Lenke til kommentar
Ståle Skrevet 19. desember 2006 Rapporter Del Skrevet 19. desember 2006 Nei, en cookie er den som passer best til ting som skal ha en timeout. http://no2.php.net/manual/en/function.setcookie.php time gir tiden nå i sekunder (UNIX timestamp), og så legger du til hvormange sekunder til du vil at den skal være valid. setcookie ("TestCookie", $value, time()+600); Lenke til kommentar
Martin A. Skrevet 20. desember 2006 Rapporter Del Skrevet 20. desember 2006 Hva med de som ikke støtter cookie da? Lenke til kommentar
ze5400 Skrevet 20. desember 2006 Rapporter Del Skrevet 20. desember 2006 Hva med de som ikke støtter cookie da? 7539768[/snapback] Hvor mange er da det? De som ikke har småkaker aktivert kan jo nesten ikke logge inn noen steder... Lenke til kommentar
vidarlo Skrevet 20. desember 2006 Rapporter Del Skrevet 20. desember 2006 Hva med de som ikke støtter cookie da? 7539768[/snapback] PHP sin session funksjon har workaround rundt dette. Henge på php-session identifier på alle linker på sida, slik at det fungerer uten cookies også. Lenke til kommentar
DarkSlayer Skrevet 20. desember 2006 Rapporter Del Skrevet 20. desember 2006 Må ta dette ut fra mitt hode da jeg ikke husker detaljene.... cookie er jo noe som lagres på brukerens maskin, ergo mulig å endre ... farlig med andre ord. Når en bruker logger inn så lager jeg en hash(md5) av et random nummer eller noe. Denne hashen lagres på bruker i db, og til cookie. Passer på at denne hashen er unik, fordi man skal kunne hente opp en bruker fra db med hashen. Så i db på bruker så lagrer man når man logget inn, eller sist aktivitet alt etter hva man ønsker. Ved neste gang en bruker loader en side, så erdet jo bare å hente hash fra cookie, slå opp bruker fra db og hent med tiden ... sjekk tid, og ta en avgjørelse. Bare husk å slette fra db hashen på logout, og når det viser seg at bruker har overskredet tiden. Gjerne sett en default verdi i db i hash feltet som ingen brukere kan opprette på. Dette er nok noe paranoid løsning, som kanskje er litt db ineffektiv, men så lager jeg ikke systemer for mer enn en liten skare brukere med liten total load på db. (hobbyting med andre ord). Men går også an å bruke session variablen til å lagre tiden/hashen, og andre interessange variabler. Dette blir jo liggende på serveren, og ikke sendt over nett til klient. Lenke til kommentar
ZoRaC Skrevet 21. desember 2006 Rapporter Del Skrevet 21. desember 2006 login.php: <?php function checkLogin($password) { if (!isset($_COOKIE['password']) { return false; } else if ($_COOKIE['password'] !== md5($password)) { return false; } else { return true; } } $password = "et_passord"; if (isset($_POST['password']) { setcookie("password", md5($_POST['password']), time() + 60 * 60 * 10) // gyldig i 10 min } if (!checkLogin($password)) { ?> <form method="post" action=""> Password: <input type="password" name="password"> <input type="submit" value="Log in"> </form> <?php exit; } Så i alle passord-beskyttede filer: require_once("login.php"); Ikke testet, skrevet i full fart, men sånn ca slik Uansett ville jeg heller brukt sessions til innlogging som skal være gyldig i bare 10 min, cookies er bedre til å lagre innlogging i flere dager f.eks... Lenke til kommentar
The_Lozer Skrevet 21. desember 2006 Forfatter Rapporter Del Skrevet 21. desember 2006 (endret) <?php function checkLogin($password) { if (!isset($_COOKIE['password']) { return false; } else if ($_COOKIE['password'] !== md5($password)) { return false; } else { return true; } } $password = "et_passord"; if (isset($_POST['password']) { setcookie("password", md5($_POST['password']), time() + 60 * 60 * 10) // gyldig i 10 min } if (!checkLogin($password)) { ?> <form method="post" action=""> Password: <input type="password" name="password"> <input type="submit" value="Log in"> </form> <?php exit; } Dette scriptet funker ikke.. det skjer ingenting.. Hva er feil? Endret 22. desember 2006 av The_Lozer Lenke til kommentar
Ståle Skrevet 21. desember 2006 Rapporter Del Skrevet 21. desember 2006 (endret) *nothing to see here* Misforstod litt Endret 21. desember 2006 av Stale2k Lenke til kommentar
ZoRaC Skrevet 21. desember 2006 Rapporter Del Skrevet 21. desember 2006 Staale2k: Hvorfor det? Lenke til kommentar
The_Lozer Skrevet 22. desember 2006 Forfatter Rapporter Del Skrevet 22. desember 2006 <?php function checkLogin($password) { if (!isset($_COOKIE['password']) { return false; } else if ($_COOKIE['password'] !== md5($password)) { return false; } else { return true; } } $password = "et_passord"; if (isset($_POST['password']) { setcookie("password", md5($_POST['password']), time() + 60 * 60 * 10) // gyldig i 10 min } if (!checkLogin($password)) { ?> <form method="post" action=""> Password: <input type="password" name="password"> <input type="submit" value="Log in"> </form> <?php exit; } Hva er feil her? Takker for alle svar Lenke til kommentar
Ståle Skrevet 22. desember 2006 Rapporter Del Skrevet 22. desember 2006 <?php function checkLogin($password) { if (!isset($_COOKIE['password'])) { return FALSE; } else if ($_COOKIE['password'] !== md5($password)) { return false; } else { return true; } } $password = "et_passord"; if (isset($_POST['password'])) { setcookie("password", md5($_POST['password']), time() + 60 * 60 * 10); // gyldig i 10 min } if (!checkLogin($password)) { ?> <form method="post" action=""> Password: <input type="password" name="password"> <input type="submit" value="Log in"> </form> <?php exit; } ?> Det var noen glemte ) og en ; Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå