![]() |
Silnik systemu - Wersja do druku +- CemesiK (https://cemesik.7m.pl) +-- Dział: Jak stworzyć własny BLOG (https://cemesik.7m.pl/forumdisplay.php?fid=14) +--- Dział: Silnik systemu (https://cemesik.7m.pl/forumdisplay.php?fid=170) +--- Wątek: Silnik systemu (/showthread.php?tid=72) |
Silnik systemu - Admin - 05-16-2025 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'); 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') 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' ; 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:'; 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++) 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'])) 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']; 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') { Sprawdzamy, czy zapytanie zostało wykonane poprawnie. Kod PHP: if(!MakeQuery($QueryIP)) Pobieramy wyniki zapytania do zmiennych zawierających wynik oraz ich liczbę. Kod PHP: $Result = GetResult(); 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++) 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; 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 :
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; Deklarujemy elementy języka XHTML odpowiedzialne za utworzenie nagłówka strony. Kod PHP: echo '<?xml version="l.0" encoding='".$PageLanguage['coding'].'"?>'; 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.'" />'; 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>'; 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">'; 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; Następnie sprawdzamy, jaka baza danych jest włączona, i deklarujemy odpowiednie zapytanie. Kod PHP: if($DBIs == 'mysql') Za pomocą interfejsu wykonujemy zapytanie do bazy danych. Kod PHP: if(!MakeQuery($QueryBlock)) Pobieramy wyniki zapytania i umieszczamy je w zmiennych. Kod PHP: $Result = GetResult(); 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>'; 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'); 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; Następnie sprawdzamy, jaka baza danych jest włączona i deklarujemy odpowiednie zapytanie. Kod PHP: if($DBIs == 'mysql') Za pomocą interfejsu wykonujemy zapytanie do bazy danych. Kod PHP: if(!MakeQuery($QueryBlock)) Pobieramy wyniki zapytania i umieszczamy je w zmiennych. Kod PHP: $Result = GetResult(); 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>'; 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'); 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">'; 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) 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) 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() 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"> |