fundacja tvn joomla-cms.com.pl
A+ A A-

Class PDO login user

  • Kategoria: PDO
  • Opublikowano: wtorek, 30, kwiecień 2013 13:24
  • Super User
  • Odsłony: 41352

Class PDO

userClass część 3

 

Licencja Creative Commons
userClass.php, prk_user.sql by Adam Berger is licensed under a Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Unported License.
W oparciu o utwór dostępny pod adresem www.joomla-cms.com.pl

    Klasę użytkownika postanowiłem zrobić tak jak session, przypisanie połączenia z PDO przez konstruktor. Do tego trzeba było się zastanowić co będzie potrzebne do działania całości. Doszedłem do wniosku, że na początek, zrobię metodę odpowiedzialną za sam proces logowania, do której potem będę się odwoływał w pliku index.php w głównym katalogu. Następnie wykonam mniej istotne rzeczy z mojego punktu widzenia. Do metody trzeba zaimportować id sesji z klasy userSesionClass. Do logowanie jeszcze będę potrzebował ip, datę. Do pobrania ip posłużyłem się metodą, która dodatkowo sprawdza, czy user łączy się przy pomocy proksy (teoretycznie). Do czyszczenia danych przychodzących z post, też najlepiej było zrobić osobną metodę, która efektywnie będzie wykonywać powierzone zadanie. Następną sprawą to wylogowanie. To na sam początek powinno wystarczyć do prawidłowego działania.

userClass.php

include_once basename('databaseClass.php'); require_once basename('userSesionClass.php'); class User {                   private $name; // dane z tablicy $_POST                   private $password; // dane z tablicy $_POST                   private $name_user; /// kto zalogowany                   private $sesion; /// przypisanie classy sesji                   public  $error; // czy poprawna                   private $post; // czyść post                   private $post1 = array(); // czyść post                   private $db;  /// przypisanie połączenia z PDO przez konstruktor                             public function __construct()           {              //parent::__construct();                       $this->db               = new DBBER();  // połączenie z bazą                       $this->sesion           = new Session(); // session                   }

           ############################ Zaloguj #####################################      public function zaloguj($name, $password)        {                     $this->name     = $this->czyscpost($name);                 $this->password = $this->czyscpost(md5($password));         try{                   if(isset($this->name))           {         $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);        $stmt = $this->db->prepare('SELECT u_login, u_haslo, u_email  FROM `'.$this->db->dbprefix().'user` WHERE `u_login`=:username && `u_haslo`=:password && `u_aktywny`=:u_aktywny && u_zalogowany=:u_zalogowany');

       $stmt->bindValue(':username', $this->name, PDO::PARAM_STR);        $stmt->bindValue(':password', $this->password, PDO::PARAM_STR);        $stmt->bindValue(':u_aktywny', '1', PDO::PARAM_INT);            $stmt->bindValue(':u_zalogowany', '0', PDO::PARAM_INT);                $stmt->execute();         if($de = $stmt->fetch())                         {                          $this->sesion->przypiszsesje($this->name); /// przypisanie sesji                                           $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);                    $stmt = $this->db->prepare('UPDATE `'.$this->db->dbprefix().'user` SET u_sesion=:u_sesion, u_online=NOW(), u_ip=:u_ip, u_zalogowany=:u_zalogowany WHERE `u_login`=:username and `u_haslo`=:password');                      $stmt->bindValue(':username', $this->name, PDO::PARAM_STR);                                  $stmt->bindValue(':password', $this->password, PDO::PARAM_STR);                      $stmt->bindValue(':u_sesion', $this->sesion->idsesion(), PDO::PARAM_STR); /// przypisanie sesji do bazy danych                                      $stmt->bindValue(':u_ip', $this->ip(), PDO::PARAM_STR);                                      $stmt->bindValue(':u_zalogowany', 1, PDO::PARAM_INT);                      $stmt->execute();              }elseif($this->name != $de['u_login'] and $this->password != $de['u_haslo']){                 echo $this->error = '<hr/><div align="center"><p>Błędne Login lub hasło!</p></div><hr/>';                          }else{                                   $this->wyloguj();                                  echo $this->error = '<hr/><div align="center"><p>Przepraszamy, podany rekord nie istnieje lub został zablokowany!</p></div><hr/>'; ///                                     }                         $stmt->closeCursor();                     }                          }catch(PDOException $e){                      echo 'Połączenie loguj nie mogło zostać utw.<br />'.$e;                     }                    return  $this->error;                                   }                               ############################ Sprawdź Admin #####################################         public function admin()             {               try{                $ad = false;                    $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                  $stmt = $this->db->prepare('SELECT u_admin  FROM `'.$this->db->dbprefix().'user` WHERE `u_login`=:username && `u_admin`=:u_admin');                     @$stmt->bindValue(':username',  $this->user(), PDO::PARAM_STR);                     $stmt->bindValue(':u_admin', 1, PDO::PARAM_INT);                         $stmt->execute();         foreach($stmt as $row)                     {             if($row['u_admin'] == 1)                                {$ad = true;}else{$ad = false;}             }             $stmt->closeCursor();                                       }catch(PDOException $e){                      echo 'Połączenie nie mogło zostać utw.<br />'.$e;                     }               return $ad;             }

                   ############################ Sprawdź User #####################################         public function user()           {          try{

                 $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                  $stmt = $this->db->prepare('SELECT u_login FROM `'.$this->db->dbprefix().'user` WHERE `u_sesion`=:u_sesion');                     @$stmt->bindValue(':u_sesion', $this->sesion->idsesion(), PDO::PARAM_STR);                          $stmt->execute();         foreach($stmt as $row)                     {             if(isset($row['u_login']))                                {$this->name_user = $row['u_login'];}             }             $stmt->closeCursor();                              }catch(PDOException $e){                      echo 'Połączenie nie mogło zostać utw.<br />'.$e;                     }               return $this->name_user;             }                   ############################ Czy proxy ip #####################################   public function ip()        {               if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])) // wartość superglobalnych                {                           $ip     = $_SERVER["HTTP_X_FORWARDED_FOR"];  /// ip potencjalnie niebezpieczny                           $tt     = $_SERVER["REMOTE_ADDR"]." proksy"; /// ip proxy                }else{                           $tt = $_SERVER['REMOTE_ADDR'];                     }                return $tt; // ." ".$tt_g        }                           ############################# czyść post ################################    public function czyscpost($post)             {               $this->post = $post;                           $this->post = trim($this->post);                           $this->post = strip_tags($this->post);                           $this->post = htmlspecialchars($this->post);                           $this->post = htmlentities($this->post, ENT_QUOTES,'UTF-8');                           $this->post = stripslashes($this->post);                           $this->post = stripcslashes($this->post);                        preg_match('/^[a-zA-ZąęćłńóśźżĄĆĘŁŃÓŚŹŻ0-9\@\_\-\.]+$/', $this->post, $this->post1);                   return $this->post1[0];             }                    public function wyloguj()          {                        try{                    $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);                    $stmt = $this->db->prepare('UPDATE `'.$this->db->dbprefix().'user` SET `u_sesion`=:u_sesion, u_ip=:u_ip, u_zalogowany=:u_zalogowany WHERE `u_login`=:username');            $stmt->bindValue(':username', $this->user(), PDO::PARAM_STR);                    $stmt->bindValue(':u_ip', $this->ip(), PDO::PARAM_STR);            $stmt->bindValue(':u_sesion', 1, PDO::PARAM_INT);                    $stmt->bindValue(':u_zalogowany', 0, PDO::PARAM_INT);             $stmt->execute();                                                             echo  $this->error = '<hr/><div align="center"><p>Zostałeś Wylogowany!</p></div><hr/>';;                           session_unset();                                }catch(PDOException $e){                      echo 'Połączenie wyloguj nie mogło zostać utw.<br />'.$e;                     }           return $this->error;                         }  

}

Tabela do bazy danych

prk_user.sql

CREATE TABLE IF NOT EXISTS `(tutaj nasz prefiks)user` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT,
  `u_login` varchar(55) NOT NULL,
  `u_email` varchar(120) NOT NULL,
  `u_haslo` varchar(255) NOT NULL,
  `u_aktywny` int(11) NOT NULL DEFAULT '1',
  `u_data` varchar(20) NOT NULL,
  `u_referer` varchar(255) NOT NULL,
  `u_sesion` varchar(255) NOT NULL,
  `u_online` varchar(25) NOT NULL,
  `u_ip` varchar(255) NOT NULL,
  `u_protokul` varchar(55) NOT NULL,
  `u_admin` int(11) NOT NULL DEFAULT '0',
  `u_zalogowany` int(11) NOT NULL DEFAULT '0',
 `u_agent` varchar(255) NOT NULL,
  PRIMARY KEY (`u_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

Dodaj komentarz


Kod antyspamowy
Odśwież

 Pozycjonowanie-Joomla, seo-joomla Tworzenie-Sitemap-joomla, TG-Chmura-Tagów, rs-rules-security Admin-Login-Security, joomla Licencja-Drupal, Licencja-ZenCart, Licencja-GPL2, Licencja-GPL3 Creative-Commons-License, joomla-2.5.x Kalendarz-Celtycki data-zodiak-data-majowie, moduł-GA-Gadu-gg, Moduł-Lotto-joomla K2-joomla Moduł-Kodownik-joomla kontakt-admin-3-pl Moduł-miłość-joomla Moduł-minutnik-joomla Google-Gadżet-strona-www Moduł-Multi-AnalogClock-joomla Grafika-Wektorowa-joomla Pascal-podstawy Pascal-instrukcja-if Pascal-pętla-for Pascal-Pętla-white-Repet Pascal-Instrukcja-Case Pascal Pascal-record Pascal-Tablice-(Macierze) Kolory-w-Pascalu Systemy-Liczbowe-10-16-8 Pak-top10-głosowanych-jQuery Waga-Bmi BF-Bear-Form Joomla+2.5+captcha+google BSD joomla, MP3 Creating, SEO, Admin tg RS BF The Celtic Forever Création Erstellen Toujours Immer Multi Contact-Admin-3-EN Contact-Admin-3-fr Contact-Admin-3-DE Open-Software-License-v.3.0-(OSL-3.0) System Interfejsy Mozilla joomla-metadane, seo-katalogi, wymiana Slider aukcjoner, Informator Osiemnaście CiastkoPl sem, Class Class-PDO-session login, registerUserClass, index PHP PDO, Class-ResponsiveCss zarabiarka-allegro Pogodynka Pogodynka Praca-Programisty Praca Funkcja-if Special+Arguments Simple-Captchta Jquery, Od 2 Konfiguracja 4.Instalacja 5.Konfiguracja 6.Instalacja 7.Konfiguracja 8.Metadane 9.Optymalizacja 10.Ciasteczka 11.System 12.Diagnostyka 13.Sesja Klasa Książka responsive Uniwersal Dodatek GoogAd.v1.4-polish-utf-8 Error Cooki Funkcje Linki Google Kompresja pdf, Dynamiczne template wycena Twoja Separation reklama ssd, bezpieczeństwo wzorce rekrutacja Zastosowanie Urządzenia Portale chat, dyski Platformy QUIZ 

Używamy cookies i podobnych technologii m.in. w celach: świadczenia usług, reklamy, statystyk. Korzystanie z witryny bez zmiany ustawień Twojej przeglądarki oznacza, że będą one umieszczane w Twoim urządzeniu końcowym. Pamiętaj, że zawsze możesz zmienić te ustawienia. To find out more about the cookies we use and how to delete them, see our privacy policy.

I accept cookies from this site.

EU Cookie Directive Module Information