Loading:

Książka Zend Framework 3. Poradnik Programisty.

Logowanie obiektowe

Prosty przyklad autoryzacji klasy i pare innych :) zobacz a nie pożałujesz 



Napisz Artykuł

Listing

//class.login.php
        class Login
        {
                /*****Zmienne bazy danych*****/
                private $db;
                private $db_host = 'localhost';
                private $db_user = 'user';
                private $db_pass = 'pass';
                private $db_base = 'base';
               
                /*****Zmienne sesji*****/
                private $user;
                private $rank;
               
               
                /*************************  M  e  t  o  d  y   k  l  a  s  y  *************************/
               
                function __get($var){
                        return $this->$var;
                }
               
                function __set($var, $val){
                        $this->$var = $val;
                }
               
                function __call($method, $arguments){
                        return false;
                }

                /*************************  M  e  t  o  d  y   l  o  g  o  w  a  n  i  a  *************************/
                               
                public function __construct(){
                        @ $db = new mysqli($this->db_host,$this->db_user, $this->db_pass,$this->db_base);
                        $this->db = $db;
                        if(mysqli_errno($db)){
                                return false;
                        }else{
                                return true;
                        }
                }
               
                public function zaloguj($name, $pass){
                        $zapytanie = "SELECT name, rank FROM users WHERE name = '". $name ."' AND password = '". sha1($pass)."'";
                        $wynik = $this->db->query($zapytanie);
                        $wiersz = $wynik->fetch_row();
                        $user = $wiersz[0];
                        $this->user = $user;
                        $this->rank = $wiersz[1];
                       
                        if(isset($user)){
                                $this->sesja_start();
                                return true;
                        }else{
                                return false;
                        }
                }
               
                /*************************  M  e  t  o  d  y   s  e  s  j  i  *************************/
               
                public function sesja_start(){
                        self::sesja_stop();
                        session_start();
                        if(!isset($_SESSION['zalogowany'])){
                        session_regenerate_id();
                            $_SESSION['zalogowany'] = true;
                    $_SESSION['name'] = $this->user;
                    $_SESSION['rank'] = $this->rank;
                                $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
                        }
                        if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
                                self::sesja_stop();
                        }
                }
               
                public static function sesja_trwa(){
                        session_start();
                        if(!isset($_SESSION['zalogowany'])){
                        $new_sesja = new login();
                                $new_sesja->sesja_start();
                        }
                        if($_SESSION['ip'] != $_SERVER['REMOTE_ADDR']){
                                self::sesja_stop();
                        }
                }
               
                public static function sesja_stop(){  //wylogowywanie
                        session_start();
                       
                        $stary_zalogowany=$_SESSION['zalogowany'];// przechowanie do sprawdzenie czy logowanie nastąpiło
                        $stary_name=$_SESSION['name'];
                        $stary_rank=$_SESSION['rank'];
                       
                        unset($_SESSION['zalogowany'],$_SESSION['name'],$_SESSION['rank']);
                        session_destroy();
                       
                        if(!empty($stary_zalogowany)){
                                return true;
                        }else{
                                return false;
                        }
                }
               
                /*************************  M  e  t  o  d  y   r  e  j  s  t  r  a  c  j  i  *************************/
               
                public function zarejstruj($name, $pass, $email){
                        if(isset($_SESSION['name']) == true){
                                self::sesja_stop();     
                        }
                        $id = NULL;//auto_increment samo sobie zwiększy id
                        $pass = sha1($pass);
                        $date = date('Y-m-d');
                        $rank = 2;
                        $stmt = $this->db->prepare("insert into users values(?, ?, ?, ?, ?, ?)");
                        $stmt->bind_param("sssssi", $id, $name, $pass, $date, $email, $rank);
                        if($stmt->execute()){
                                return true;
                        }else{
                                return false;
                        }
                }
               
                /*************************  Z  a  m  k  n  i  ę  c  i  e   p  o  ł  ą  c  z  e  n  i  a   z   b  a  z  ą   d  a  n  y  c  h  *************************/
               
                final function __destruct(){
                        $stmt->free;
                        $db->close;
                }
        }


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=3&t=12803

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: gieros Ranga: Poziom 10 Punktów: 493
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors