Class PDO router autoload

    Router & autoload()

 

    Plik router.php jest odpowiedzialny za automatyczne wczytywanie potrzebnych class do prawidłowego działania całości.
Wykorzystałem w nim funkcję __autoload() bardzo dobrze się tutaj sprawdzi. Do tego zrobiłem sprawdzanie poprawności class.
Wykorzystanie funkcji __autoload() przyśpieszyło działanie o 0,01 sek. Od tradycyjnego deklarowania class.

Licencja Creative Commons
router.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

  
  include_once (dirname(__FILE__) . '/template/'.basename('meta.php')); 

function __autoload($classname) {

$filename = dirname(__FILE__) . '/lib/'.basename($classname .".php");
include_once($filename); 

if(!class_exists($classname, false)) { 

echo "Unable to load class:".$classname; 

} } 

if (class_exists('parse_UrlClass')) {

$url = new parse_UrlClass(); // Adres

}else{

$error = "błąd class parse_UrlClass";

} 

if (class_exists('registerUserClass')) {

$userRejestracja = new registerUserClass(); // Register

}else{

$error = "błąd class registerUserClass";

} 

if (class_exists('userSesionClass')) {

$session = new userSesionClass(); // Sesion 

}else{

$error = "błąd class userSesionClass";

} 

if (class_exists('chatClass')) { 

$chat = new chatClass(); // Chat

}else{

$error = "błąd class chatClass";

} 

if (class_exists('userClass')) {

$user = new userClass(); // User 

}else{

$error = "błąd class userClass";

} 

if (class_exists('databaseClass')) { 

$pdo = new databaseClass(); // baza danych

}else{

$error = "błąd class databaseClass";

} 

if(!empty($error)) {

echo $error; 

}

Class index PDO

Plik index.php podzieliłem na części, a wygląd importuje z folderu template.

 

 

Licencja Creative Commons
index.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

Czytaj więcej: Class index PDO

Class PDO parse_UrlClass

Class PDO parse_UrlClass część 5

Obsługi i zarządzaniem adresami WWW

Licencja Creative Commons
parse_UrlClass.php, prk_adres.sql, prk_adreshref.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ę postanowiłem podzielić na dwie części, jedna odpowiedzialna za wysyłanie odpowiedniego pliku do wyświetlania. A druga za wysyłanie odpowiedniego adresu. Adresy przyjazne dla wyszukiwarek.

Pierwsza część

  Metoda url() służy do wybierania odpowiedniego adresu aktualnie wyświetlanego w pasku adresu z bazy danych, tak jak poprzednio użyłem biblioteki PDO. Następnie po wybraniu z bazy odpowiedniego pliku przesyłamy go do przeglądarki. Wcześniej adres czyścimy w metodzie skruc($url).

 

Druga część

  W drugiej części dostajemy adres z menu w postaci cyfr, w metodzie adres($adres).  Następnie jest czyszczony w skrucadres($url1) czy aby na pewno, są to liczby. Jeżeli tak to zostaje sprawdzony w bazie danych i czy znajduje się tam taki adres. Jeżeli znajdzie to zwraca ścieżkę do wyświetlenia w pasku adresu przeglądarki. Bardzo ciekawe rozwiązanie z mojego punktu widzenia. Adresy jak i nazwy prawdziwych plików zapisujemy do bazy danych w dwóch tabelach. Do tego będzie służył wpis w panelu administratora, który w późniejszym terminie wykonam. Żeby całość prawidłowo działała potrzebujemy jeszcze pliku .htaccess,   w którym umożliwimy używanie tak przygotowanych adresów. To co wykonałem, na tym etapie powinno wystarczyć.

 

parse_UrlClass.php

 

include_once basename('databaseClass.php');
class Url 
{
   private   $_url;
   private   $_url1;
   private   $akcja;
   private   $adres;
   private   $page;
   protected $l;

     public function __construct()           {            $this->db   = new DBBER();  // połączenie z bazą           }  public function url()   {    try{        if(isset($_GET['akcja']))           $this->akcja = base64_decode($this->skruc($_GET['akcja'])); /// adres                   $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);                  $stmt = $this->db->prepare('SELECT u_adres, u_adrespage FROM `'.$this->db->dbprefix().'adres` WHERE u_adres=:u_adres');                   $stmt->bindParam(':u_adres', $this->akcja, PDO::PARAM_STR);                  $stmt->execute();              foreach($stmt as $row1)                     {                            if($row1['u_adres'] == $this->akcja)                         {                                $this->page = $row1['u_adrespage'];                         }else{                                $this->page = '404';                           }                            }

               if(file_exists('pliki/'.basename($this->page.'.php')))                   {                     return 'pliki/'.basename($this->page.'.php');                   }else{                     return 'pliki/'.basename('404.php');                              }                   $stmt->closeCursor();                 }catch(PDOException $e){                      echo 'Połączenie url nie mogło zostać utw.<br />'.$e;                     }           }   ###################################  czyści get adresu ###########################     protected function skruc($url)     {                       $copl   = array('ą','ę','ć','ł','ń','ó','ś','ź','ż');                       $CoPL1  = array('Ą','Ę','Ć','Ł','Ń','Ó','Ś','Ź','Ż');                       $co     = array('a','e','c','l','n','o','s','z','z');                                            $this->_url  = $url;                       $this->_url  = trim(str_replace('//','/',$this->_url));                       $this->_url  = str_replace($copl,$co,$this->_url); /// zamienia litery                       $this->_url  = str_replace($CoPL1,$co,$this->_url); /// zamienia litery                       $this->_url  = strtolower($this->_url);                       $this->_url  = preg_replace('/[^a-z0-9\.]+/si','',$this->_url);                                    return base64_encode($this->_url); /// dekoduj w pliku wykonawczym        }     protected function skrucadres($url1)     {                         $this->_url1  = (int)$url1;                         $this->_url1  = htmlentities(addslashes($this->_url1),ENT_QUOTES,'UTF-8');                      if(is_numeric($this->_url1))                             {                               $this->_url1;                             }else{                               $this->_url1=1;                               }             return $this->_url1;          }        ############################  przypisane do menu href= ###########################     public function adres($adres)     {          try{              if(isset($adres))               {               $this->adres = $this->skrucadres($adres);               }                            $this->db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);                   $stmt = $this->db->prepare('SELECT u_id,u_urlhref FROM `'.$this->db->dbprefix().'adreshref` WHERE u_id=:u_id');                   $stmt->bindParam(':u_id', $this->adres, PDO::PARAM_STR);                   $stmt->execute();                               foreach($stmt as $ro)                     {                            if(isset($ro['u_urlhref']))                         {                          $this->l = $ro['u_urlhref'];                         }                              }  

                 return $this->l; // zwraca adres             }catch(PDOException $e){                      echo 'Połączenie adres nie mogło zostać utw.<br />'.$e;                     }          }  }

 CREATE TABLE IF NOT EXISTS `prk_adres` (
  `u_id` int(11) NOT NULL AUTO_INCREMENT,
  `u_adres` text NOT NULL,
  `u_adrespage` text NOT NULL,
  PRIMARY KEY (`u_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1; 
 CREATE TABLE IF NOT EXISTS `prk_adreshref` (
  `u_id` int(11) NOT NULL,
  `u_urlhref` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

.htaccess 

RewriteEngine On
Options FollowSymLinks RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l RewriteRule ^(.+)$ index.php?akcja=$1 [L]

Class PDO classChat

ClassChat jest zrobiona tak jak pozostałe w PDO. Postanowiłem w metodzie protect_chat($p) filtrować wszystko co zostanie wpisane w polu textera, plus dodatkowo zrobiłem cenzurę słów polskich jak i angielskich. Następnie metoda usun() będzie odpowiadać, za usuwanie nadmiernej ilości wpisów np. 50 w późniejszym etapie określę ile. Metoda pisz($text, $user, $pokoj=null, $key=null ) będzie odpowiadać za zapis danych do pliku tekstowego, który będzie wyświetlany w pliku z chatem. Bardzo prosta klasa, lecz na początek będzie użyteczna.

Czytaj więcej: Class PDO classChat

Class PDO register

  PDO registerClass część 4

  Rejestracja Użytkownika

 

     Następną klasą, którą należało by zrobić, to rejestrację użytkowników. Tak jak poprzednio oczywiście PDO. Metodę w której będziemy sprawdzać dane przesłane z formularza w tablicy $_POST. Do tego jakaś walidacja danych i parę istotnych danych które mogą nam się przydać do weryfikacji użytkowników np. ip, referer, ogólne dane, protokół . Samą walidację wykorzystam z klasy user , żeby nie powielać już istniejących metod. Do uzyskania danych ogólnych posłużyłem się $_SERVER['HTTP_USER_AGENT'], z którego możemy w późniejszym czasie wyciągnąć interesujące nas dane. Następną informacją jaka może nam się przydać to, protokół z którego nastąpiła rejestracja. Pozostał jeszcze rerferer i ip. Te informacje na początek powinny nam wystarczyć. Do samej rejestracji postanowiłem użyć trzech podstawowych danych takich jak login, password i e-mail. Zrobiłem też sprawdzanie czy dany użytkownik już istnieje, poprzez sprawdzenie loginu oraz e-mail. Myślę że taka rejestracja powinna się sprawdzić. Jeżeli nie to możemy w łatwy sposób w późniejszym terminie dodać to co nas interesuje.

Licencja Creative Commons
registerUserClass.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

 

registerClass.php

include_once basename('databaseClass.php');
require_once basename('userClass.php');
class Register 
{
                  private $nameus;
                  private $passwordus;
                  private $email;
                  private $user;
                  public  $error;
                  private $db;
   
                
                public function __construct() 
          { 
                     $this->db    = new DBBER();
                     $this->user  = new User();
           ///parent::__construct(); 
                  }
                 
                  ############################ Rejestracja #####################################
    public function rejestracja($nameus, $passwordus, $email)
        {
          try{
        $this->nameus     = $this->user->czyscpost($nameus);   /// validacja @ _ - . z class user
        $this->passwordus = $this->user->czyscpost(md5($passwordus));   /// validacja @ _ - .z class user
        $this->email      = $this->user->czyscpost($email);   /// validacja @ _ - . z class user
                     
                      if(!empty($this->nameus) && !empty($this->passwordus) && !empty($this->email))
                         {     
               $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                           $stmt = $this->db->prepare('SELECT `u_login` FROM `'.$this->db->dbprefix().'user` WHERE `u_login`=:nameus or `u_email`=:email');
               $stmt->bindValue(':nameus', $this->nameus, PDO::PARAM_STR); 
               $stmt->bindValue(':email', $this->email, PDO::PARAM_STR);
                           $stmt->execute();       
                     if($stmt->fetch() > 0)
                    {
              echo  $this->error = "<div style='color: red;'>User już istnieje</div>";
                    }else{
 $stmt = $this->db->prepare('INSERT INTO `'.$this->db->dbprefix().'user` (`u_login`, `u_email`, `u_haslo`, `u_data`, `u_referer`, `u_sesion`, `u_ip`, `u_protokul`, `u_agent`) VALUES (
                                                                :nameus,
                                                                :email,
                                :passwordus,
                                                                 NOW(),
                                :u_referer,
                                                                :u_sesion,
                                :u_ip,
                                :u_protokul,
                                                                :u_agent)');  
 
                        $stmt->bindValue(':nameus', $this->nameus, PDO::PARAM_STR); 
                        $stmt->bindValue(':passwordus', $this->passwordus, PDO::PARAM_STR);
                        $stmt->bindValue(':email', $this->email, PDO::PARAM_STR); 
            $stmt->bindValue(':u_referer', $this->referer(), PDO::PARAM_STR);
                        $stmt->bindValue(':u_sesion', 1, PDO::PARAM_INT);
            $stmt->bindValue(':u_ip', $this->user->ip(), PDO::PARAM_STR); 
            $stmt->bindValue(':u_protokul', $this->protokol(), PDO::PARAM_STR); 
                        $stmt->bindValue(':u_agent', $this->useragent(), PDO::PARAM_STR);
               $ilosc = $stmt->execute();
                        $stmt->closeCursor();    
                        if($ilosc > 0)
                        {
                             echo $this->error = '<div style="color: red;">Rejestracja dodano '.$ilosc.' rekord </div>';
                        }else{
                            echo $this->error = "<div style='color: red;'>Wystapil blad podczas Rejestracji! </div>";
                        }
        }    
                       }else{     
                            echo $this->error = "<div style='color: red;'> Wprowadź Dane </div>";
                                }
              return $this->error;
              }catch(PDOException $e){
               return 'Połączenie rejestracja nie utworzone.<br />'.$e;
                    }                         
         }
              ############################ Z kąd #####################################
      protected function referer()
        {
           if(!isset($refer))
                      {
                     $refer = $_SERVER['HTTP_REFERER'];
                      }else{
                     $refer = "Proxy";
                      }
          return $refer;
        }
             ############################ Protokół #####################################
       protected function protokol()
     {
        if(!isset($protokol))
                {
                  $protokol = $_SERVER['SERVER_PROTOCOL'];
                }else{
                  $protokol = "N/A"; 
                }
         return $protokol;
    }
        
     protected function useragent()
       { 
         if(!isset($agent))
           {
                $agent = $_SERVER['HTTP_USER_AGENT'];
           }
            return $agent;
       }
}

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