Avatar billede nemesis Nybegynder
26. januar 2009 - 00:12 Der er 2 kommentarer og
1 løsning

autologin vha. cookies

Jeg har denne login funktionalitet på mit site:

<?php

    settype($id, "integer");

    require_once "mysql.inc.php";

    class Auth {

        var $email    = "";
        var $password = "";
        var $id      = 0;

        function Auth($email, $password) {

            if ($email && $password) {
                $this->email    = $email;
                $this->password = $password;
            }
            elseif ($_COOKIE['email'] && $_COOKIE['password']) {
                $this->email    = $_COOKIE['email'];
                $this->password = $_COOKIE['password'];
            }

        }

        function opdater() {
            //sql("UPDATE bruger SET senestelogin = NOW() WHERE id = ".$this->id);
            mysql_query("UPDATE bruger SET forrigelogin = senestelogin, senestelogin = NOW() WHERE id = ".$this->id);
        }

        function check() {
            $id = fetch_field("SELECT id FROM bruger WHERE email = '".$this->email."' AND password = MD5('".$this->password."')");
            $this->id = $id;
            return $id;
        }

        function senestelogin() {
            return fetch_field("SELECT forrigelogin FROM bruger WHERE id = ".$this->id);
        }

        function login_kraevet() {
            if (!$this->check()) {
                header("Location: login.php");
                die("Adgang nægtet");
            }
        }

        function logind() {
            setcookie("email", $this->email);
            setcookie("password", $this->password);
            $this->opdater();
        }

        function logud() {
            setcookie("email", 0, 0);
            setcookie("password", 0, 0);
        }

    }

    $auth = new Auth($_POST['email'], $_POST['password']);

?>

Nu kunne jeg tænkte mig, at cookie blev gemt selvom brugeren lukker browseren, så der ikke skal logges ind hver dag. F.eks. det i en måned e.l.
Avatar billede tmi Nybegynder
26. januar 2009 - 02:05 #1
function logind() {
            $expire = time()+84600*30; // dette er 30 dage
            setcookie("email", $this->email, $expire, "/");
            setcookie("password", $this->password, $expire, "/");
            $this->opdater();
        }
Avatar billede nemesis Nybegynder
26. januar 2009 - 11:38 #2
Perfekt, tak!
Avatar billede tmi Nybegynder
26. januar 2009 - 13:06 #3
Selv tak
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

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



Seneste spørgsmål Seneste aktivitet
I dag 16:05 win 10 vil ikke boote Af bb69 i Windows
I dag 11:20 Lenovo x390 Af tobberjas i PC
I dag 10:14 Alder i Excel Af Nanarsi i Excel
I dag 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel
I går 21:35 Flash Player Af ErikHg i Andet software