Witaj, Gość
Musisz się zarejestrować przed napisaniem posta.

Użytkownik
  

Hasło
  





Szukaj na forum

(Zaawansowane szukanie)

Statystyki
» Użytkownicy: 1
» Najnowszy użytkownik: Admin
» Wątków na forum: 67
» Postów na forum: 67

Pełne statystyki

Użytkownicy online
Aktualnie jest 2 użytkowników online.
» 0 Użytkownik(ów) | 1 Gość(i)
Google

Ostatnie wątki
Plik z indeksem strony
Forum: Plik z indeksem strony
Ostatni post: Admin
05-16-2025, 10:52 PM
» Odpowiedzi: 0
» Wyświetleń: 31
Plik z konfiguracją syste...
Forum: Plik z konfiguracją systemu
Ostatni post: Admin
05-16-2025, 10:06 PM
» Odpowiedzi: 0
» Wyświetleń: 14
Silnik systemu
Forum: Silnik systemu
Ostatni post: Admin
05-16-2025, 06:50 PM
» Odpowiedzi: 0
» Wyświetleń: 10
Interfejs połączenia z ba...
Forum: Interfejs połączenia z bazą danych MySQL
Ostatni post: Admin
05-16-2025, 03:23 PM
» Odpowiedzi: 0
» Wyświetleń: 6
Tabela z artykułami
Forum: Tabela z artykułami
Ostatni post: Admin
05-16-2025, 03:00 PM
» Odpowiedzi: 0
» Wyświetleń: 4
Tabela z danymi kontaktow...
Forum: Tabela z danymi kontaktowymi
Ostatni post: Admin
05-16-2025, 02:52 PM
» Odpowiedzi: 0
» Wyświetleń: 6
Tabela modułu pobierania ...
Forum: Tabela modułu pobierania plików
Ostatni post: Admin
05-16-2025, 02:35 PM
» Odpowiedzi: 0
» Wyświetleń: 6
Tabela zawierająca koment...
Forum: Tabela zawierająca komentarze
Ostatni post: Admin
05-16-2025, 02:20 PM
» Odpowiedzi: 0
» Wyświetleń: 4
Tabela z kategoriami blog...
Forum: Tabela z kategoriami bloga
Ostatni post: Admin
05-16-2025, 02:05 PM
» Odpowiedzi: 0
» Wyświetleń: 9
Tabela ze wpisami do blog...
Forum: Tabela ze wpisami do bloga
Ostatni post: Admin
05-16-2025, 01:52 PM
» Odpowiedzi: 0
» Wyświetleń: 4

 
  Plik z indeksem strony
Napisane przez: Admin - 05-16-2025, 10:52 PM - Forum: Plik z indeksem strony - Brak odpowiedzi

Zaczynamy od znacznika otwierającego skrypt i przepisania zmiennych GET, POST i COOKIE.

Kod PHP:
<?php
  
if(is_array($HTTP_GET_VARS))
    {
      while(list($k$v) = each($HTTP_GET_VARS))
         {
            if(is_array($HTTP_GET_VARS[$k]))
               {
                   while( list($k2$v2) = each($HTTP_GET_VARS[$k]))
                       {
                            $$k[$k2] = $v2;
                        }
                    @reset($HTTP_GET_VARS[$k]);
               }
            else
               {
                     $$k $v;
               }
         }
      @reset($HTTP_GET_VARS);
    }
  if(is_array($HTTP_P0ST_VARS))
    {
         while(list($k$v) = each($HTTP_P0ST_VARS))
              {
                    if(is_array($HTTP_P0ST_VARS[$k]))
                         {
                               while(list($k2$v2) = each($HTTP_P0ST_VARS[$k]))
                                    {
                                           $$k[$k2] = $v2;
                                     }
                               @reset($HTTP_POST_VARS[$k]);
                           }
                      else
                           {
                                $$k $v;
                            }
              }
          @
reset($HTTP_POST_VARS);
     }
   if(
is_array($HTTP_COOKIE_VARS))
     {
          while(list(
$k$v) = each($HTTP_COOKIE_VARS))
              {
                  if(
is_array($HTTP_COOKIE_VARS[$k]))
                      {
                           while(list(
$k2$v2) = each($HTTP_COOKIE_VARS[$k]))
                               {
                                  $
$k[$k2] = $v2;
                               }
                           @
reset($HTTP_COOKIE_VARS[$k]);
                      }
                  else
                      {
                           $
$k $v;
                      }
               }
            @
reset($HTTP_COOKIE_VARS);
     }
   if(
is_array($_GET))
     {
          while(list(
$k$v) = each($_GET))
               {
                  if(
is_array($_GET[$k]))
                      {
                           while(list(
$k2$v2) = each($_GET[$k]))
                                {
                                    $
$k[$k2] = $v2;
                                }
                           @
reset($_GET[$k]);
                       }
                  else
                       {
                           $
$k $v;
                       }
               }
           @
reset($ GET);
       }
     if(
is_array($_POST))
       {
           while(list(
$k$v) = each($_POST))
                {
                    if(
is_array($_POST[$k]))
                        {
                            while(list(
$k2$v2) = each($_POST[$k])
                                {
                                    $
$k[$k2] = $v2;
                                }
                            @
reset($_POST[$k]);
                        }
                     else
                        {
                            $
$k $v;
                        }
                 }
           @
reset($_POST);
        }
      if(
is_array($_COOKIE))
        {
           while(list(
$k$v) = each($_COOKIE))
                {
                     if(
is_array($_COOKIE[$k]))
                        {
                            while(list(
$k2$v2) = each($_COOKIE[$k]))
                                {
                                   $
$k[$k2] = $v2;
                                }
                            @
reset($_COOKIE[$k]);
                        }
                     else
                        {
                            $
$k $v;
                        }
                 }
           @
reset($_COOKIE);
         } 


Następnie, w odpowiedniej zmiennej deklamjmy nazwę modułu.

Kod PHP:
$CMSModule 'index'


Włączamy do pliku silnik systemu za pomocą instrukcji require().

Kod PHP:
require('./engine/engine.php'); 


Następnie pobieramy wartość ze zmiennej konfiguracji SConfigurationOf Site['mstgr] i rozdzielamy ją na dwie części za pomocą funkcji explode() i ciągu znaków „_". Wynik zapisujemy do zmiennej $ModuleToSet

Kod PHP:
$ModuleToSet explode(,$ConfigurationOfSite['mstgl']); 


Teraz sprawdzamy, czy pozycja o indeksie zero z tej tablicy jest równa ,, s". Jeśli tak, wówczas przekierowujemy użytkownika do pliku, którego nazwa jest zawarta w drugim elemencie tablicy. Przekierowanie wykonujemy za pomocą instrukcji Header , która wysyła nagłówki.

 
Kod PHP:
     if($ModuleToSet[0] == 's')

     Header("Location: {$ModuleToSet[1]}.php");



Następnie sprawdzamy, czy pozycja o indeksie zero z tej tablicy jest równa m". Jeśli tak, wówczas przekierowujemy użytkownika do pliku, którego nazwa jest zawarta w drugim elemencie tablicy. Przekierowania dokonujemy za pomocą instrukcji Header, która wysyła nagłówki.

Kod PHP:
elseif($ModuleToSet[0] == 'm')
    {
          Header("Location: {$ModuleToSet[1]}.php");
     


Następnie sprawdzamy, czy pozycja o indeksie zero z tej tablicy jest równa „strona". Jeśli tak, wówczas przekierowujemy użytkownika do pliku page.php wraz z wartością zmiennej id_pages, której nazwa jest zawarta w drugim elemencie tablicy. Przekierowania dokonujemy za pomocą instrukcji Header, która wysyła nagłówki.

Kod PHP:
elseif($ModuleToSet[0] == 'page')
        {
             Header("Location: page.php?id_pages={$ModuleToSet[1]}");
        


Kończymy skrypt PHP.

Kod PHP:
?>

Wydrukuj tę wiadomość

  Plik z konfiguracją systemu
Napisane przez: Admin - 05-16-2025, 10:06 PM - Forum: Plik z konfiguracją systemu - Brak odpowiedzi

Rozpoczynamy od znacznika otwierającego skrypt PHP.

Kod PHP:
<?php 


Następnie deklarujemy zmienną, w której będzie przechowywana baza danych używana do połączenia.

Kod PHP:
$DBIs 'mysql'


W kolejnej zmiennej deklarujemy nazwę serwera z bazą danych.

Kod PHP:
$HostToDB 'localhost'


Następna linijka to zadeklarowana zmienna wraz z nazwą użytkownika mającego dostęp do bazy danych.

Kod PHP:
$UserLogin 'root'


Kolejnym elementem, który należy zadeklarować, jest hasło użytkownika do bazy danych.

Kod PHP:
$UserPassword ''


Deklarujemy zmienną zawierającą nazwę bazy danych, do której mamy zamiar się odwołać

Kod PHP:
$DBName 'cemesik_blog'


W ostatniej zmiennej wpisujemy prefiks do tabelek umieszczonych w bazie danych. Po zmianie prefiksu w tym pliku będzie można używać innych nazw tabel w bazie danych.

Kod PHP:
$TablePrefix 'bloglm_'


Zamykamy skrypt PHP.

Kod PHP:
?>


Dane w tym pliku to jedyne dane, które będą wymagały edycji. W razie zainstalowania skryptu na jakimkolwiek serwerze wystarczy wpisać dane konfiguracyjne tylko w tym miejscu. Specjalnie wydzielony plik z danymi potrzebnymi do połączenia znacznie ułatwi nam pracę w wypadku jakichkolwiek zmian w konfiguracji.

Wydrukuj tę wiadomość

  Silnik systemu
Napisane przez: Admin - 05-16-2025, 06:50 PM - Forum: Silnik systemu - Brak odpowiedzi

Lokalizacja pliku: /engine/engine.php

Silnik systemu jest najważniejszym plikiem, który należy napisać dla błoga. Będzie on zawierał najbardziej popularne funkcje używane w całym systemie oraz definicje podstawowych zmiennych.

Rozpoczynamy skrypt PHP znacznikiem otwierającym:

Kod PHP:
<?php 


Następnie ustawiamy set_magic_quotes_runtime na wartość zero, aby wszystkie zmienne przychodziły do skryptu w takiej formie, w jakiej zostały przesłane (za pomocą metody GET lub POST). Musimy pamiętać o tym, aby takie zmienne odpowiednio zabezpieczać

Kod PHP:
set_magic_quotes_runtime(0); 


Rozpoczynamy sesję użytkownika. Sesję trzeba rozpocząć na samym początku skryptu, przed wysłaniem jakichkolwiek nagłówków do przeglądarki.

Kod PHP:
session_start(); 


Teraz zarejestrujemy zmienne w sesji użytkownika. Będą to między innymi:
usr_id - zawierająca ID użytkownika,
usr_name - zawierająca nazwę użytkownika,
usr_email - zawierająca adres e-mail użytkownika,
usr_template - zawierająca szablon użytkownika,
usr_language - zawierająca język użytkownika,
usr_admin - zawierająca informację o tym, czy użytkownik jest administratorem serwisu,
uzy_login - zawierająca informację o tym, czy użytkownik jest zalogowany na swoim koncie w serwisie

Kod PHP:
session_register('usr_id');
session_register('urs_name');
session_register('usr_email');
session_register('usr_template');
session_register('usr_language');
session_register('usr_admin');
session_register('usr_login'); 


Następnie, za pomocą instrukcji reąuire, dołączamy plik z konfiguracją bazy danych MySQL lub jakiejkolwiek innej bazy. Zawiera on podstawowe dane potrzebne do połączenia.

Kod PHP:
reąuire('./config.php'); 


Wykrywamy, na jaką wartość jest ustawiona zmienna $DBIs. Jeżeli jest ustawiona na wartość mysąl, wówczas dołączamy za pomocą funkcji include sterownik do bazy danych.

Kod PHP:
if($DBIs == 'mysql')

include(
'./engine/mysql_drv.php');




Gdy sterownik bazy danych jest już podłączony, możemy uruchomić połączenie z tą bazą. Wykorzystujemy tutaj funkcję ze sterownika, przypisując ją do zmiennej SConnection. Wewnątrz funkcji podajemy dane potrzebne do nawiązania połączenia z serwerem baz danych.

Kod PHP:
$Connection ConnectToDB$HostToDB$UserLogin$UserPassword); 


Następnie sprawdzamy, czy połączenie zostało nawiązane, porównując zmienną $Connection z wartością FALSE.

Kod PHP:
if($Connection == FALSE) { 


Jeżeli zmienna ma wartość FALSE, wówczas wyświetlamy błąd

Kod PHP:
echo 'It is no ability to connect with the database.'

Następnie za pomocą funkcji exit() kończymy działanie skryptu.

Kod PHP:
exit();



Jeżeli połączenie zostało nawiązane, możemy wybrać bazę danych. Wybieramy ją za pomocą funkcji ze sterownika bazy danych. Wynik funkcji przypisujemy do zmiennej SSelectingDB.

Kod PHP:
$SelectingDB SelectDB($DBName); 


Następnie sprawdzamy, czy baza danych została wybrana prawidłowo. Możemy to ustalić za pomocą instrukcji if, która sprawdza, czy zmienna, w której jest przechowywany wynik wybierania bazy danych, równa jest FALSE.

Kod PHP:
if ($SelectingDB == FALSE) { 


Jeśli zmienna jest równa FALSE, oznacza to, że wybranie tej bazy danych nie powiodło się. Wówczas wywołujemy odpowiedni komunikat.

Kod PHP:
echo 'It is no ability to select the database in the server.'


Kończymy wykonywanie skryptu za pomocą instrukcji exit().

Kod PHP:
exit(); 



Zadeklarujemy teraz funkcję, która wyświetli informację o błędzie, jeśli wystąpił podczas wykonywania zapytania do bazy danych. W parametrach będzie przyjmowała nazwę pliku, linię, w której został popełniony błąd oraz źle sformułowane zapytanie SQL.

Kod PHP:
function DBShowError($Message,$ErrorFhow_many,$ErrorLine,$ErrorSQLQuery) 
  



Wyświetlamy informację o błędzie w zapytaniu do bazy danych wraz z zapytaniem SQL, w którym błąd wystąpił.


Kod PHP:
echo 'Error in DB' ;
echo 
'<br />'
echo 
'In file: '.$ErrorFhow many;
echo 
'<br />'
echo 
'On line: '.$ErrorLine;
echo 
1<br />'; 
echo '
In Query'.$ErrorSQLQuery;
echo '
<br />'; 


W celu lepszej identyfikacji błędu możemy pobrać informacje zwrócone przez serwer bazy danych z funkcji ShowErrorOfDB().

Kod PHP:
echo 'Information from DB:';
echo 
ShowErrorOfDB();



Następnym etapem będzie pobranie tablicy konfiguracyjnej z systemu. Najpierw musimy sprawdzić, jaki interfejs bazy danych jest włączony do pliku.

Kod PHP:
if($DBIs == 'mysql') 
  



Deklarujemy zapytanie SELECT, które wybierze wszystkie dane z tabeli konfiguracyjnej.

Kod PHP:
$QueryConfig 'SELECT config_name, config_value FROM '.$TablePrefix.'config';




Sprawdzamy, czy zapytanie zostało wykonane poprawnie. Jeśli wystąpił błąd, odwołujemy się do funkcji wyświetlającej informacje o błędzie.

Kod PHP:
if(!MakeQuery($QueryConfig))
  


Do funkcji przekazujemy informację o błędzie w zapytaniu, plik, w którym on nastąpił, za pomocą _FILE_ , linie za pomocą _LINE_ i samo zapytanie do bazy danych, aby mogło zostać wyświetlone.

Kod PHP:
DBShowError('Error in Query',_FILE_,_LINE_,$QueryConfig);




Jeżeli zapytanie, które wpisaliśmy, było poprawne, wówczas pobieramy wynik do zmiennej $Result i liczbę rekordów do zmiennej $Rows.

Kod PHP:
$Result GetResult(); $Rows GetHowMany(); 


Następnie za pomocą pętli for przekształcamy uzyskaną z zapytania tablicę w tabelę asosjacyjną , w której kluczami będą wartości w polu config_name , natomiast wartościami dane wprowadzone do pola config_value.

Kod PHP:
for($i=0;$i<$Rows;$i++)
  {
$KeyResult $Result[$i]['config_name'];
$ConfigurationOfSite[$KeyResult] = $Result[$i]['config_value'];



Sprawdzamy, czy użytkownik jest załogowany na swoje konto w systemie. Korzystamy z funkcji empty, za pomocą której sprawdzamy, czy zmienna $_SESSION[tuzy_id'] zawiera jakąś wartość Jeżeli brak w niej wartości, wówczas definiujemy zmienne sesji jako puste.

Kod PHP:
if(empty($_SESSION['usr_id']))
   {
       $_SESSI0N['usr_id'] = '';
       $_SESSI0N['urs_name'] = '';
       $_SESSI0N['usr_email'] = ''


Przy zmiennych $_SESSION['usr_template'] i $_SESSION['usr_language'] wpisujemy wartości z tablicy konfiguracyjnej, którą przed chwilą uzyskaliśmy . Dzięki temu dla użytkownika niezalogowanego zostanie ustalony domyślny szablon i język strony.

Kod PHP:
$_SESSI0N['usr_template'] = $ConfigurationOfSite['dt'];
$_SESSI0N['usr_language'] = $ConfigurationOfSite['dl'];
$_SESSI0N['usr_admin'] = '';
$_SESSI0N['usr_login'] = '';




Teraz możemy przejść do blokowania użytkowników o określonym adresie IP. Na początek musimy sprawdzić, czy opcja ta została włączona za pomocą panelu administratora.


Kod PHP:
if($ConfigurationOfSite['blip'] == 'yes'){ 


Jeżeli opcja została włączona, wówczas wykonujemy zapytanie, aby pobrać wszystkie numery IP, z których dostęp jest zabroniony.

Kod PHP:
if($DBIs == 'mysql') {
  $QueryIP 'SELECT ip_number FR0M '.$TablePrefix.'baningip'
 } 


Sprawdzamy, czy zapytanie zostało wykonane poprawnie.

Kod PHP:
if(!MakeQuery($QueryIP))
{
  DBShowError('Error in Query',_FILE_,_LINE_,$QueryIP);



Pobieramy wyniki zapytania do zmiennych zawierających wynik oraz ich liczbę.

Kod PHP:
$Result GetResult();
$Rows GetHowMany(); 


Za pomocą pętli for sprawdzamy, czy którykolwiek z wyników pasuje do IP obecnego użytkownika zapisanego w zmiennej $_SERVER['REMOTE_ADDR'].

Kod PHP:
for($i=0;$i<$Rows;$i++)
  {
   if($Result[$i]['ip_number'] == $_SERVER['REM0TE_ADDR'])
  


Jeżeli wynik pasuje do obecnego adresu IP użytkownika, możemy mu wyświetlić stronę z informacją, że nie ma dostępu do strony. W tym celu włączymy odpowiedni plik.

Kod PHP:
include('./html_page/'.addslashes($_SESSI0N['usr_language']).'/ban_ip.html'); 


Następnie kończymy wykonywanie skryptu PHP za pomocą instrukcji exit().

Kod PHP:
exit();
   }
  }



Teraz należy włączyć zapisany w pliku określony język dla strony. Wpisujemy odpowiednią wartość w instrukcji if, aby sprawdzić, czy język został włączony.

Kod PHP:
if(!include('./language/'.addslashes($_SESSI0N['usr_language']).'/language.php'))
  


Jeśli określony język dla strony nie został włączony, wyświetlamy odpowiedni komunikat.

Kod PHP:
echo 'No language file found: '.addslashes($_SESSI0N U['usr_language']); 


Następnie kończymy pracę skryptu za pomocą instrukcji exit().

Kod PHP:
exit();



Teraz możemy wyświetlić szablon strony. Deklarujemy odpowiednią funkcję.

Kod PHP:
function PrintThemOfSite()
  


Wewnątrz funkcji musimy zadeklarować zmienne jako globalne, ponieważ są to zmienne ustawione poza funkcją i nie byłoby ich widać wewnątrz niej.

Kod PHP:
global $CMSModule;
global 
$SiteTitle;
global 
$SiteKeywords;
global 
$Brief0fPage


Następnie sprawdzamy za pomocą instrukcji if, czy można włączyć szablon użytkownika.

Kod PHP:
if(!include('./themes/'.addslashes($_SESSI0N['usr_template']).'/theme.php'))
  


Jeżeli nie można go włączyć do pliku, wówczas wyświetlamy odpowiedni komunikat.

Kod PHP:
echo 'File not found: '.addslashes($_SESSI0N['usr_template']); 


Wywołujemy także instrukcję exit() w celu zakończenia przetwarzania skryptu.

Kod PHP:
exit () ;

}




Funkcją, która będzie nam potrzebna, jest funkcja do deklaracji nagłówka strony. Przyjmuje ona argumenty :
  • $SiteTitle - zawierający tytuł obecnej strony, 
  • $Keywords - zawierający słowa kluczowe, które zostaną umieszczone w sekcji .



META strony oraz $BriefOfPage - zawierający opis strony, który także zostanie umieszczone w sekcji META.

Kod PHP:
function PrintHeader($SiteTitle,$Keywords,$BriefOfPage)
  


Na początek deklarujemy zmienne jako globalne, gdyż zostały one zadeklarowane na zewnątrz funkcji i daltego nie byłoby ich widać

Kod PHP:
global $ConfigurationOfSite;
global 
$PageLanguage


Deklarujemy elementy języka XHTML odpowiedzialne za utworzenie nagłówka strony.
Kod PHP:
echo '<?xml version="l.0" encoding='".$PageLanguage['coding'].'"?>';
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"';
echo '"http://localhost/dtd/xhtmlll.dtd">';
echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$PageLanguage['lang'].'">';
echo '<head>';
echo '<meta http-equiv="Content-Type" content="text/html; charset='.$PageLanguage['coding'].'" />';
echo '<meta http-equiv="Content-language" content="'.$PageLanguage['lang_config'].'" />';
echo 'cmeta name="copyright" content="Cemesik CMS" />'; 


W miejscu, gdzie znacznik META przyjmuje parametr description, wpisujemy zmienną odpowiedzialną za opis strony.

Kod PHP:
echo '<meta name="description" content="'.$BriefOfPage.'" />'


Natomiast w miejscu, gdzie znacznik META przyjmuje parametr keywords, wpisujemy zmienną odpowiedzialną za słowa kluczowe dla danej strony.

Kod PHP:
echo '<meta name="keywords" content="'.$Keywords.'" />';
echo 
'<meta name="robots" content="all" />';
echo 
'<meta name="rating" content="general" />';
echo 
'<meta name="reso-urce-type" content="document" />';
echo 
'<meta name="generator" content="Cemesik Blog" /> '


Następnie włączamy plik ze stylami CSS, za pomocą których będzie sformatowana nasza strona.
Kod PHP:
echo '<link rel="stylesheet" type="text/css" href="themes/'.addslashes($_SESSION['usr_template']).'/style.css" />'


W znaczniku title, czyli w tytule strony, wpisujemy zawartość zmiennej SSiteTitle, a następnie nazwę systemową strony WWW SConfigurationOfSite ['name'].


Kod PHP:
echo '<title>'.$SiteTitle.''.$ConfigurationOfSite['name'].'</title>';
echo 
'</head>';
echo 
'<body>'


Teraz deklarujemy tabelę, w której będzie zawarte logo naszej strony. Przypisujemy tabeli i komórce odpowiednie nazwy stylów, które później zadeklarujemy w arkuszu stylów CSS.

Kod PHP:
echo '<table class="table_logo">';
echo 
'<tr>';
echo 
'<td class="row_logo"></td>';
echo 
'</tr>';
echo 
'</table>';



Następnie wprowadzamy funkcję, która wyświetli ścieżkę dostępu do strony, na której obecnie się znajdujemy.

Kod PHP:
function PrintPath()
  


Deklarujemy zmienną $URIForModule jako globalną, gdyż jest ona zdefiniowana poza funkcją.

Kod PHP:
global $URIForModule


Następnie wyświetlamy ścieżkę za pomocą instrukcji echo.

Kod PHP:
echo $URIForModule;



Deklarujemy funkcję wyświetlającą bloki po lewej stronie naszej witryny.

Kod PHP:
function PrintLeftMenu()
  


Definiujemy wartości pobieranych zmiennych jako zmienne globalne, gdyż są zadeklarowane poza funkcją i nie byłyby widoczne.

Kod PHP:
global $DBIs;
global 
$TablePrefix


Następnie sprawdzamy, jaka baza danych jest włączona, i deklarujemy odpowiednie zapytanie.

Kod PHP:
if($DBIs == 'mysql')
  {
       $QueryBlock' SELECT * FROM '.$TablePrefix.'blocks
       WHERE
       block_side = "1"
       AND
       block_active = "t"
       ORDER BY
       block_poz ASC'
;
  


Za pomocą interfejsu wykonujemy zapytanie do bazy danych.

Kod PHP:
if(!MakeQuery($QueryBlock))
  {
      DBShowError('Error in Query',_FILE_,_LINE_,$QueryBlock);
  


Pobieramy wyniki zapytania i umieszczamy je w zmiennych.

Kod PHP:
$Result GetResult();
$Rows GetHowMany(); 


Deklarujemy tabelę w języku XHTML wraz z przypisaną do niej klasą, za pomocą której będziemy mogli ją później sformatować w arkuszu stylów CSS.

Kod PHP:
echo '<table class="l_menu" cellpadding="0" cellspacing="0">'


Rozpoczynamy pętlę for w celu wyświetlenia wszystkich bloków ustawionych po tej stronie witryny.

Kod PHP:
for($i=0;$i<$Rows;$i++) 
  



Wyświetlamy nagłówek bloku wraz z jego nazwą pobraną z bazy danych.

Kod PHP:
echo '<tr>';
echo 
'<td class="1_1">'.stripslashes($Result[$i]['block_show']).'</td>';
echo 
'</tr>';
echo 
'<tr>';
echo 
'<td class="1_2">'


Następnie, za pomocą instrukcji include(), włączamy plik zawierający dany blok, w celu jego wyświetlenia.

Kod PHP:
include('./blocks/'.$Result[$i]['block_name'].'/'.$Result [$i]['block_name'].'.php');
echo 
'</td>';
echo 
'</tr>';
echo 
'<tr>';
echo 
'<td class="1_3"></td>';
echo 
'</tr>';



Zamykamy całą tabelę bloków po lewej stronie.

Kod PHP:
echo '</table>';



Teraz deklarujemy funkcję wyświetlającą bloki po prawej stronie naszej witryny.

Kod PHP:
function PrintRightMenu()



Definiujemy wartości zmiennych pobieranych jako zmienne globalne gdyż są zadeklarowane poza funkcją i nie byłyby widoczne.

Kod PHP:
global $DBIs;
global 
$TablePrefix


Następnie sprawdzamy, jaka baza danych jest włączona i deklarujemy odpowiednie zapytanie.

Kod PHP:
if($DBIs == 'mysql') 
  
{
      $QueryBlock1 SELECT FR0M '.$TablePrefix.'blocks
      WHERE
      block_side 
"p"
      AND
      block_active "t"
      ORDER BY
      block_poz ASC
';



Za pomocą interfejsu wykonujemy zapytanie do bazy danych.

Kod PHP:
if(!MakeQuery($QueryBlock))
  {
       DBShowError('Error in Query',_FILE_,_LINE_$QueryBlock);
  


Pobieramy wyniki zapytania i umieszczamy je w zmiennych.

Kod PHP:
$Result GetResult();
$Rows GetHowMany(); 


Deklarujemy tabelę w języku XHTML wraz z przypisaną do niej klasą, za pomocą której będziemy mogli ją później sformatować w arkuszu stylów CSS.

Kod PHP:
echo '<table class="p_menu" cellpadding="0" cellspacing="0">'


Rozpoczynamy pętlę for w celu wyświetlenia wszystkich bloków ustawionych po tej stronie witryny.

Kod PHP:
for ($i=0;$i<$Rows;$i++)
    


Wyświetlamy nagłówek bloku wraz z jego nazwą pobraną z bazy danych.

Kod PHP:
echo '<tr>';
echo 
'<td class="p_l">'.stripslashes($Result[$i]['block_show']).'</td>';
echo 
'</tr>';
echo 
'<tr>';
echo 
'<td class="p_2">'


Następnie, za pomocą instrukcji include(), włączamy plik zawierający dany blok, w celu jego wyświetlenia.

Kod PHP:
include('./blocks/'.$Result[$i]['block_name'].'/'.$Result[$i]['block_name'].'.php');
echo 
'</td>';
echo 
'</tr>';
echo 
'<tr>';
echo 
'<td class="p_3"></td>';
echo 
'</tr>';



Zamykamy całą tabelę bloków po prawej stronie.

Kod PHP:
echo '</table>'; 



Deklarujemy funkcję, która wyświetli nam stopkę strony wraz z napisem Copyright.

Kod PHP:
function PrintFoot 
  



Elementy w stopce umieszczamy na warstwie, która dzięki przypisaniu do niej klasy zostanie później odpowiednio sformatowana w stylach CSS.

Kod PHP:
echo '<div class="foot">';
echo 
'Copyright &copy; 2004-2025 <a href="http://cemesik.7m.pl">Cemesik Blog</a>';
echo 
'</div>';
echo 
'</body>';
echo 
'</html>';



Następnie możemy zadeklarować funkcję, która wyświetli nam błąd, jeśli taki wystąpi. Funkcja ma jeden argument $lnformationContent, zawierający informacje o błędzie.

Kod PHP:
function PrintError($InformationContent)

global 
$PageLanguage;

echo 
'<div class="badstyle">';
echo 
$InformationContent;
echo 
'<br />';
echo 
$PageLanguage['back_error'];
echo 
'</div>';




Potrzebna będzie także funkcja, która poinformuje użytkownika o pomyślnym zakończeniu akcji. Będzie ona przyjmowała jeden argument $lnformationContent, zawierający informację o działaniach, które udało się wykonać

Kod PHP:
function PrintOK($InformationContent)
  {

global 
$PageLanguage;

echo 
'<div class="isok">';
echo 
$InformationContent;
echo 
'<br />';
echo 
$PageLanguage['good_go_next'];
echo 
'</div>';

 } 


Należy także zdefiniować funkcję do logowania się na konto administratora, aby przy bezpośrednim wejściu do panelu użytkownik mógł się od razu zalogować

Kod PHP:
function ShowLoginForm()
  {

global 
$AdminLang;

?>


Deklarujemy formularz, który zostanie wysłany do pliku login.php ze skryptem do logowania w serwisie. W formularzu umieścimy dwa pola. Pierwsze będzie przeznaczone na login, drugie na hasło do konta.

Kod PHP:
<form method="post" action="login.php">
<
table>
<
tr>
<
td><?php echo $AdminLang['account_name'];?></td>
<td><input type="text" name="account_login"></td>
</tr>
<tr>
<td><?php echo $AdminLang['password_access'];?></td>
<td><input type="password" name="account_pwd"></td>
</tr>
<tr>
<td></td>
<td><input type="hidden" name="login" value="yes"><input type="submit" value="<?php echo $AdminLang['login_me'];?>"></td>
</tr>
</table>
</form>
<?php

}

?>

Wydrukuj tę wiadomość

  Interfejs połączenia z bazą danych MySQL
Napisane przez: Admin - 05-16-2025, 03:23 PM - Forum: Interfejs połączenia z bazą danych MySQL - Brak odpowiedzi

Lokalizacja pliku: /engine/mysql_drv.php.

Aby ułatwić sobie pracę i umożliwić przeniesienie platformy błoga na inną bazę danych bez konieczności poprawiania całego systemu, powinniśmy utworzyć funkcje zawierające instrukcje dostępu do danej bazy i pozwalające się z nią łączyć W tym celu należy utworzyć i włączyć odpowiedni plik do systemu. Taki plik, czyli interfejs utworzony do połączenia z bazą danych MySQL, może zostać przekształcony w każdą inną bazę danych.

Rozpoczynamy od utworzenia pliku mysql_drv.php w katalogu engine. W pliku znajdą się funkcje napisane w języku PHP, a więc kod rozpoczynamy znacznikiem:

Kod PHP:
<?php 


Następnie deklarujemy funkcję do połączenia z bazą danych, która przyjmuje trzy argumenty: $HostToDB - nazwa hosta, na którym działa serwer z bazą danych, $UserLogin - login użytkownika, który ma prawo dostępu do tej bazy danych oraz $UserPassword - hasło użytkownika do bazy danych.

Kod PHP:
function ConnectToDB$HostToDB$UserLogin$UserPassword) { 


Wewnątrz funkcji wykorzystujemy polecenie mysql_connect, które ustanawia połączenie z bazą danych MySQL. Podajemy w nim parametry przekazane do funkcji. Polecenie deklarujemy wewnątrz warunku dla instrukcji if.

Kod PHP:
if (mysql_connect$HostToDB$UserLogin$UserPassword ) ) 


Jeżeli udało się nawiązać połączenie z bazą danych, zwracamy za pomocą instrukcji return wartość TRUE.

Kod PHP:
{

return 
TRUE;



Jeżeli nie udało się nawiązać połączenia z bazą danych, zwracamy za pomocą instrukcji return wartość FALSE.

Kod PHP:
else {

return 
FALSE;

} } 


Kolejnym krokiem jest wybór bazy danych dla naszego systemu. Deklarujemy funkcję, która wybierze bazę danych. Przyjmuje ona jeden argument, którym jest $DBName - zmienna zawierająca nazwę bazy danych.

Kod PHP:
function SelectDB($DBName) { 


Wykonujemy polecenie mysql_select_db, dla którego w parametrze podajemy nazwę bazy danych. Polecenie to umieszczamy wewnątrz instrukcji if.

Kod PHP:
if (mysql_select_db ($DBName) ) { 


Jeżeli udało się nawiązać połączenie z bazą danych, zwracamy za pomocą instrukcji return wartość TRUE.

Kod PHP:
return TRUE;




Jeśli nie uda się wybrać wskazanej przez nas bazy danych, zwracamy wartość FALSE za pomocą instrukcji return.

Kod PHP:
else {

return 
FALSE;

} } 


Następnie zadeklarujemy funkcję do wykonywania zapytań do bazy danych MySQL. Będzie ona przyjmowała jeden argument $QueryToDB, w którym będzie się znajdowało zapytanie w języku SQL.

Kod PHP:
function MakeQuery($QueryToDB) { 


Zmienną $ResultQuery deklarujemy jako zmienną globalną, aby była widoczna wewnątrz funkcji.

Kod PHP:
global $ResultQuery


Wykonujemy zapytanie do bazy danych za pomocą funkcji mysql_query. W parametrze tej funkcji podajemy zmienną dla zapytania SQL Wynik zapytania zostanie zwrócony do zmiennej $ResultQuery.

Kod PHP:
$ResultQuery mysql_query($QueryToDB); 


Następnie sprawdzamy poprzez instrukcję if, czy w wyniku znajdują się jakieś wartości.

Kod PHP:
if($ResultQuery) { 


Jeżeli w wyniku znajdują się jakieś wartości, wówczas zwracamy za pomocą instrukcji return wartość TRUE.

Kod PHP:
return TRUE;




Jeżeli w zmiennej $ResultQuery nie ma żadnych wartości, zwracamy za pomocą instrukcji return wartość FALSE.

Kod PHP:
else {

return 
FALSE;

} } 


Teraz zadeklarujemy funkcję, która zwróci nam błąd, jeśli wystąpił w bazie danych podczas wykonywania naszego zapytania.

Kod PHP:
function ShowErrorOfDB() { 


Deklarujemy dwie zmienne i przypisujemy do nich wartości z funkcji MySQL Funkcja mysql_error() zwraca opis błędu, natomiast funkcja mysql_errno() zwraca numer błędu.

Kod PHP:
$Error['text'] = mysql_error();
$Error['number'] = mysql_errno(); 


Następnie łączymy zmienne z ich opisem i wpisujemy je do zmiennej $lnformationOnError.

Kod PHP:
$InformationOnError 'Name: '.$Error['text'] .'Number: '.$Error['number']; 


Opis błędu zostanie nam zwrócony za pomocą instrukcji return.

Kod PHP:
return $InformationOnError; } 


Kolejna funkcja, którą utworzymy, będzie służyła do pobierania wyniku zapytania z bazy danych.

Kod PHP:
function GetResult() { 


Zmienną $ResultQuery uzyskaną w funkcji MakeQuery() deklarujemy jako zmienną globalną, aby była widoczna wewnątrz funkcji.

Kod PHP:
global $ResultQuery


Następnie za pomocą pętli while przepisujemy wszystkie wyniki do tablicy $ResultFromQuery[]. Pętla będzie wykonywana tak długo, aż nie zostaną wypisane wszystkie wyniki z bazy MySQL. Za wyniki odpowiada funkcja mysql_fetch_array($ResultQuery,MYSQL_ASSOC), w której pierwszym argumentem jest zmienna z wynikiem zapytania. Drugi argument jest opcjonalny. Możemy tu zdecydować, jaką tabelę chcemy uzyskać ponumerowaną czy asocjacyjną. Jeśli nie podamy argumentu, zostaną zwrócone dwie tabele. My użyjemy parametru MYSQL_ASSOC, aby została zwrócona tablica asocjacyjna.

Kod PHP:
while ($row mysql_fetch_array ($ResultQuery,MYSQL_ASSOC)) 
 {
   
$ResultFromQuery[] = $row;
 } 


Po zakończeniu pętli należy zwrócić wynik do zmiennej, do której przypisaliśmy wywołanie funkcji.

Kod PHP:
return $ResultFromQuery;




Przyda się nam jeszcze funkcja, która pobierze informację o ilości rekordów uzyskanych w wyniku zapytania.

Kod PHP:
function GetHowMany() { 


Na początek deklarujemy zmienną z wynikiem zapytania jako globalną.

Kod PHP:
global $ResultQuery


Aby pobrać do zmiennej $HowManyRecords liczbę wyników zapytania, odwołujemy się funkcji mysql_num_rows z podaniem w jej argumencie zmiennej z wynikami zapytania.

Kod PHP:
$HowManyRecords mysql_num_rows($ResultQuery); 


W kolejnym kroku zwracamy wynik za pomocą instrukcji return.

Kod PHP:
return $HowManyRecords;




Kończymy skrypt znakiem:

Kod PHP:
?>


Zapisujemy i zamykamy plik.

Wydrukuj tę wiadomość

  Tabela z artykułami
Napisane przez: Admin - 05-16-2025, 03:00 PM - Forum: Tabela z artykułami - Brak odpowiedzi

Tabela o nazwie bloglm_article będzie miała następujące pola:

  • article_id - identyfikujące artykuł, ustawione na długość 11 cyfr int(11), atrybut auto_increment,
  • article_title - będzie zawierało tytuł artykułu, ustawione na wartość varchar(150),
  • article_intro - będzie zawierało dane znajdujące się w spisie artykułów. Pole będzie miało długość 255 znaków - varchar(255).
  • article_cont - będzie zawierało pełny tekst artykułu, pole typu text,
  • article_autor - identyfikujące autora artykułu (może to być imię, nazwisko, pseudonim), w wypadku tego pola wystarczy wartość varchar(25),
  • article _howmany - będzie przechowywało wartość informującą o liczbie odczytań danego artykułu przez użytkowników. Pole należy ustawić na wartość int(11),
  • article _keyword - będzie zawierało słowa kluczowe zdefiniowane dla artykułu. Dla tego pola wartość należy ustawić na varchar(255).

PRIMARY KEY ustawiamy na pole article_id.

Kod PHP:
CREATE TABLE 'bloglm_article' (
'article_id' int(11NOT NULL auto_increment,
'article_title' varchar(150collate utf8_unicode_ci NOT NULL,
'article_intro' varchar(255collate utf8_unicode_ci NOT NULL,
'article_cont' text collate utf8_unicode_ci NOT NULL,
'article_autor' varchar(25collate utf8_unicode_ci NOT NULL,
'article_howmany' int(11NOT NULL default '0',
'article_keyword' varchar(255collate utf8_unicode_ci NOT NULL,
PRIMARY KEY ('article_id')
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=51 


W tabeli umieszczamy przykładowy artykuł, aby pokazać, na czym będzie polegało dodawanie kolejnych.

Kod PHP:
INSERT INTO 'bloglm_article' VALUES (26'Nowy artykuł''Wstęp do artykułu''Rozwinięcie artykułu''admin'60'słowa kluczowe'); 

Wydrukuj tę wiadomość

  Tabela z danymi kontaktowymi
Napisane przez: Admin - 05-16-2025, 02:52 PM - Forum: Tabela z danymi kontaktowymi - Brak odpowiedzi

Tabela o nazwie bloglm_team będzie miała następujące pola:

  • usr_id - przechowujące identyfikator rekordu, ustawione na wartość int(11), atrybut auto_increment,
  • usr_name - zawierające nazwę użytkownika wyświetlaną w kontaktach, ustawione na wartość o długości 25 znaków - varchar(25),
  • usr_email - zawierające adres e-mail użytkownika, do którego można wysłać list. Pole będzie miało długość 45 znaków - varchar(45).

PRIMARY KEY ustawiamy na pole usr_id.

Kod PHP:
CREATE TABLE 'bloglm_team' (
'usr_id' int(11NOT NULL auto_increment,
'urs_name' varchar(25collate utf8_unicode_ci NOT NULL,
'usr_email' varchar(45collate utf8_unicode_ci NOT NULL,
PRIMARY KEY ('usr id')
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUT0_INCREMENT=11 


W tabeli umieścimy jedną wartość, którą będzie można potem edytować w panelu administratora.

Kod PHP:
INSERT INTO 'bloglm_team' VALUES (5'Administrator''admin@localhost'); 

Wydrukuj tę wiadomość

  Tabela modułu pobierania plików
Napisane przez: Admin - 05-16-2025, 02:35 PM - Forum: Tabela modułu pobierania plików - Brak odpowiedzi

Tabela o nazwie bloglm_download będzie miała następujące pola:

  • download_id - zawierające identyfikator pliku, ustawione na wartość int(11), atrybut auto_increment,
  • download_title - będzie zawierało tytuł pliku do pobrania. Ustawiamy je na wartość varchar(35),
  • download_brief - będzie zawierało szczegóły na temat pliku, pole typu text,
  • download_www - będzie zawierało adres URL do strony autora pliku, który mamy zamiar udostępnić na własnej stronie. Pole ustawiamy na długość varchar(45),
  • download_howmany - będzie zawierało informację o liczbie pobrań danego pliku, ustawione na długość int(11),
  • download_file - będzie zawierało ścieżkę dostępu do pliku, który mamy zamiar udostępnić w Internecie. Pole to będzie miało długość varchar(255).

PRIMARY KEY ustawiamy na pole download_id.

Kod PHP:
CREATE TABLE 'bloglm_download' (
'download_id' int(11NOT NULL auto_increment,
'download_title' varchar(35collate utf8_unicode_ci NOT NULL,
'download_brief' text collate utf8_unicode_ci NOT NULL,
'download_www' varchar(45collate utf8_unicode_ci NOT NULL,
'download_howmany' int(11NOT NULL default 'O',
'download_file' varchar(255collate utf8_unicode_ci NOT NULL,
PRIMARY KEY ('download_id')
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=30 


W tabeli umieścimy przykładowe dane, które pomogą zaprezentować działanie tego modułu.

Kod PHP:
INSERT INTO 'bloglm_download' VALUES (29'Plik do pobrania''Opis pliku''http://localhost1'3'plik.exe'); 

Wydrukuj tę wiadomość

  Tabela zawierająca komentarze
Napisane przez: Admin - 05-16-2025, 02:20 PM - Forum: Tabela zawierająca komentarze - Brak odpowiedzi

Tabela o nazwie bloglm_comment będzie miała następujące pola:

  • comm_id - zawierające numer ID każdego wpisu. Pole to będzie miało wartość int(11), atrybut auto_increment,
  • comm_nick - będzie zawierało nazwę użytkownika, który dodał dany wpis. Będzie ono miało długość 25 znaków - varchar(25),
  • comm_email - pole przeznaczone na wpisanie przez autora komentarza swojego adresu e-mail. Pole będzie ustawione na varchar(35),
  • comm_content - przeznaczone na treść komentarza. Powinno zostać ustawione na wartość text,
  • comm_time - będzie ono zawierało czas publikacji danego komentarza, wystarczy dla niego ustawić wartość varchar(10),
  • comm_blog_id - pole przeznaczone na wpisanie ID danego wpisu w blogu, po którym będzie można się zorientować, dla którego wpisu należy wyświetlić ten komentarz, ustawimy je na int(11),
  • category_name - zawierające tytuł wpisu, ustawione na wartość varchar(255),

PRIMARY KEY ustawiamy na pole comm_id.

Kod PHP:
CREATE TABLE 'bloglm_comment' (
'comm_id' int(llNOT NULL auto_increment,
'comm_nick' varchar(25collate utf8_unicode_ci NOT NULL,
'comm_email' varchar(35collate utf8_unicode_ci NOT NULL,
'comm_content' text collate utf8_unicode_ci NOT NULL,
'comm_time' varchar(10collate utf8_unicode_ci NOT NULL,
'comm_blog_id' int(llNOT NULL,
PRIMARY KEY ('comm_id')
ENGINE=MyISAM DEFAULT CHARSET=utf8 C0LLATE=utf8_unicode_ci AUT0_INCREMENT=11 

Wydrukuj tę wiadomość

  Tabela z kategoriami bloga
Napisane przez: Admin - 05-16-2025, 02:05 PM - Forum: Tabela z kategoriami bloga - Brak odpowiedzi

Tabela o nazwie bloglm_category będzie miała następujące pola:

  • category_id - zawierające numer ID każdego wpisu. Pole to będzie miało wartość int(11), atrybut auto_increment,
  • category_name - zawierające tytuł wpisu, ustawione na wartość varchar(255),

PRIMARY KEY ustawiamy na pole category_id.

Kod PHP:
CREATE TABLE 'bloglm_category' (
'category_id' int(11NOT NULL auto_increment,
'category_name' varchar(255collate utf8_unicode_ci NOT NULL,
PRIMARY KEY ('category_id')
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=


Umieściny także w tabeli przykładowe dane, które posłużą nam potem przy budowie bloga.


Kod PHP:
INSERT INTO 'bloglm_category' VALUES (1'Wszystkie');
INSERT INTO 'bloglm_category' VALUES (2'Internet');
INSERT INTO 'bloglm_category' VALUES (3'Komputer');
INSERT INTO 'bloglm_category' VALUES (4'E-mail'); 

Wydrukuj tę wiadomość

  Tabela ze wpisami do bloga
Napisane przez: Admin - 05-16-2025, 01:52 PM - Forum: Tabela ze wpisami do bloga - Brak odpowiedzi

Tabela o nazwie bloglm_blog będzie miała następujące pola:

  • blog_id - zawierające numer ID każdego wpisu opublikowanego na stronie. Pole to będzie miało wartość int(11), atrybut auto_increment,
  • blog_title - zawierające tytuł wpisu, ustawione na wartość varchar(150),
  • blog_cont - będzie przeznaczone do wprowadzania treści wpisu, pole typu text,
  • blog_autor - identyfikujące autora napisanego tekstu (może to być imię, nazwisko, pseudonim). Pole to powinno mieć wartość varchar(25),
  • blog_read - będzie przechowywało wartość informującą o statystyce czytania danego wpisu. Pole to ustawiamy na wartość int(11),
  • blog_time - będzie zawierało znacznik czasu z funkcji time(). Dla tego pola wystarczy długość varchar(10),
  • blog_keyword - będzie zawierało słowa kluczowe dla danego wpisu. Wartość tego pola ustawiamy na varchar(255).
  • blog_category - przeznaczone na numer kategorii, do której zaliczymy dany wpis w blogu, pole będzie typu int(11),

PRIMARY KEY ustawiamy na pole blog_id.

Kod PHP:
CREATE TABLE 'bloglm_blog' (
'blog_id' int(11NOT NULL auto_increment,
'blog_title' varchar(150collate utf8_unicode_ci NOT NULL,
'blog_cont' text collate utf8_unicode_ci NOT NULL,
'blog_autor' varchar(25collate utf8_unicode_ci NOT NULL,
'blog_read' int(llNOT NULL default '0',
'blog_time' varchar(10collate utf8_unicode_ci NOT NULL,
'blog_keyword' varchar(255collate utf8_unicode_ci NOT NULL,
'blog_category' int(llNOT NULL,
PRIMARY KEY ('blog_id')
ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=75 


Za pomocą polecenia SQL INSERT INTO umieścimy w tabeli przykładowy wpis.

Kod PHP:
INSERT INTO 'bloglm_blog' VALUES (74'Wpis w Blogu''Nowy wpis w blogu''admin'4'1192013294''słowa kluczowe'1) ; 

Wydrukuj tę wiadomość