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

Class PDO session

  • Kategoria: PDO
  • Opublikowano: niedziela, 28, kwiecień 2013 13:39
  • Super User
  • Odsłony: 41858

   Class PDO session

 część 2

 

Licencja Creative Commons
class Session userSesionClass.php 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

   Na przykładzie klasy sesji pokaże jak chcę przekazywać dane pomiędzy klasami w samym konstruktorze, a nie przez dziedziczenie. Same dziedziczenie jest potrzebną rzeczą, lecz mnie interesuje czy takie połączenie jest szybsze.   Klasę sesji postanowiłem zrobić właśnie w taki sposób. Sama klasa sesji nie powinna być skomplikowana przyjąłem, że powinna składać się z numeru, jakoś zakodowanego np. przez sha1(), plus sprawdzenie poprawności samej sesji i na koniec dla zwiększenia bezpieczeństwa, np. co godzinę zmiana id sesji plus kodowanie danych usera. Zwróćcie uwagę na sam konstruktor tam będę sprawdzał poprawność sesji i nawiązywał połączenie z bazą danych. Oczywiście jak w pierwszej części tak i w drugiej, będę używał biblioteki PDO.

Piszcie co o tym sądzicie czy to aby na pewno szybsze.

userSesionClass.php

 include_once basename('databaseClass.php');
class Session 
      {
             private $sesion_id; // id sesji
             private $isSesion = false; // czy jest sesja
             private $db;      /// przypisanie połączenia z PDO przez konstruktor
             
        public function __construct() 
      { 
            $this->db   = new DBBER();
               ############################ Sprawdź Sesję #####################################
             if($this->sprawdzsesje() == true)
                    {
                      $this->czas_sesji();
                    }else{
                         session_unset();
                    }     
          }
        
          public function przypiszsesje($user)
          {
                       $_SESSION['u_login']        = $this->koduj($user);
                       $_SESSION['session_id']    =  sha1(session_id());
                       $_SESSION['start_sesion'] = date("Y-m-d H:i:s");
                       return;
          } private function sesja()
         {  
                    try{
                        ############### SESJA ###############################
        if($this->idsesion() && isset($_SESSION['u_login']))
                   {
                   $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
 
               $stmt = $this->db->prepare('SELECT u_sesion FROM `'. $this->db->dbprefix().'user` WHERE u_login=:u_login and u_sesion=:u_sesion');
                               $stmt->bindValue(':u_login', $this->dekoduj($_SESSION['u_login']), PDO::PARAM_STR);
                   $stmt->bindValue(':u_sesion', $this->idsesion(), PDO::PARAM_INT);
            $stmt->execute();
                   foreach($stmt as $row)
                 {                 
           if($row['u_sesion'] != 1 && isset($row['u_sesion']))
             {
                 $this->isSesion = true;
                    }else{
                 $this->isSesion = false;
             }
                }
                   }
         
             }catch(PDOException $e){
                     echo 'Połączenie w sesji nie mogło zostać utw.<br />'.$e;
                     $this->isSesion = false;
                  } 
               return $this->isSesion;      
         } 
         
      public function idsesion()
           {
          if(isset($_SESSION['session_id']))
            {
             $this->sesion_id = $_SESSION['session_id'];
            }
               return $this->sesion_id;   
           }
           
      protected function koduj($koduj)
           {
             return base64_encode($koduj);  
           }
      protected function dekoduj($koduj)
           {
             return base64_decode($koduj);  
           }
     public function sprawdzsesje()
          {
             return $this->sesja();
          }
 private function czas_sesji()
         {
           try{
                               $cz        = date($_SESSION['start_sesion']);
                               $basedate  = strtotime($cz);
                               $date1     = strtotime("1 hours", $basedate);
                               $this->czas_za_godzine = date("Y-m-d H:i:s", $date1);
                               
                   if(date("Y-m-d H:i:s") > $this->czas_za_godzine && $this->idsesion() != 1)
                       {
                         $_SESSION['start_sesion'] = date("Y-m-d H:i:s");
                        session_regenerate_id(); 
                    $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=:u_online, u_zalogowany=:u_zalogowany WHERE u_login=:u_login');
            $stmt->bindValue(':u_online', $_SESSION['start_sesion'], PDO::PARAM_STR);
                    $stmt->bindValue(':u_sesion', $this->idsesion(), PDO::PARAM_INT);
                    $stmt->bindValue(':u_zalogowany', 1, PDO::PARAM_INT);
                    $stmt->bindValue(':u_login', $this->dekoduj($_SESSION['u_login']), PDO::PARAM_STR);
                $stmt->execute();
                    $stmt->closeCursor();  
                         }
           }catch(PDOException $e){
                     echo 'Połączenie w czas sesji nie mogło zostać utw.<br />'.$e;
                    } 
              return;   
         }/* */
 }

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