Wykryto działanie AdBlocka!

Prawdopodobnie masz właczonego Adblocka. Korzystanie z bloga jest całkowicie darmowe. Jeśli jednak chcesz docenić prace autora, wyłacz blokowanie reklam dla tej witryny, aby jeszcze bardziej zmotywowac autora do dalszej pracy oraz częstszej publikacji artykułów.

Dziękuje :)

Treść główna bloga

Artykuły

Config.class.php, czyli klasa do obsługi plików ini


config.class.phpPo dość długiej przerwie, przygotowałem dla was zawierającą podstawowe metody klasę config.class.php. Dzięki tej klasie możemy między innymi dodawać zmienne konfiguracyjne i pobierać je. Klasa zawiera także trzy inne przydatne metody, o którym opowiem za chwilę. Klasa korzysta z wyjątków, czyli bloku try..catch.


Kod na Githubie

Na samym początku przedstawię pliki:

1. index.php

Na początku ustawiam wyświetlanie błędów na true (ini_set(‚display_error’, ‚1’)) poziom raportowania błędów (error_reporting(E_ALL ^ E_NOTICE)).
Następnie dołączam (includuje) plik z naszą klasą, czyli config.class.php.

Teraz nadszedł czas na blok try..catch.

W bloku try{ } tworzę nowy obiekt klasy( $cfg = new config(‚config.ini’)) oraz Inicjuję metodę init().

Potem mamy za komentowaną taką linię:

Dzięki niej w podanym przez nas pliku, w tym przypadku config.ini, tworzy się nowa regułka, w której kluczem będzie port a wartością 443. Linia ta została za komentowana dlatego, że w metodzie, która dodaje nowe regułki jest dodatkowy warunek – została dodana metoda, która sprawdza czy klucz podany jako argument w metodzie setConfig już istnieje w podanym pliku z rozszerzeniem ini. Jeśli istnieje generuje się wyjątek, który przerywa pracę skryptu.

Aby pobrać dane z pliku ini możemy zrobić to na dwa sposoby:

#1

Pierwszy sposób polega na tym aby przy metodzie utworzyć tablicę. Jako argument do funkcji getConfig zawsze podajemy tablicę. W tym przypadku podajemy jedną wartość i odwołujemy się do niej za pomocą tablicy [0]. Aby ten sposób zadziałał konieczne jest posiadanie PHP w wersji min 5.4.0

#2

Sposób znacznie łatwiejszy. Do zmiennej data przypisujemy tablicę, którą zwraca nam metoda getConfig. Tym razem możemy podać dowolną liczbę klucz do pobrania jako tablicę. Aby uzyskać dostęp do tych danym trzeba użyć tablicy typu: $data[0], $data[1], itd.

I na koniec mamy łapanie ewentualnych błędów, czyli blok catch.

Aby wyświetlić wiadomość musimy użyć metody getMessage. Możemy także uzyskać inne dodatkowe informacje na temat błędu. Więcej na ten temat w dokumentacji.

2. Config.class.php

Na początku klasy definiuję trzy własności:
I. private $file – określa nazwę pliku z konfiguracją
II. private $config – zmienna zawierająca dane konfiguracyjne: fileLog(plik, w którym zapisywane są logi), logger(czy logger na być aktywny) oraz extension(rozszerzenie pliku konfiguracyjnego)

Na samym początku mamy konstruktor, który przyjmuje jako argument nazwę pliku z danymi do konfiguracji.

Potem mamy metodę init(). Nie przyjmuje ona żadnych argumentów. Po pierwsze sprawdza, czy magiczne apostrofy są włączone – jeśli tak wyłącza je. Następnie sprawdza, czy podany w konstruktorze plik ma rozszerzenie ini.

Następnie kod sprawdza, czy podany plik istnieje, jeśli nie tworzy nowy o tej samej nazwie co podany w konstruktorze. Na koniec jeszcze mały warunek, który sprawdza, czy plik jest typu file.

Następną metodą jest metoda setConfig(). Przyjmuje ona dwa argumenty. Pierwszym jest nazwa klucza a drugim wartość, która ma zostać przypisana kluczowi w pliku ini. Metoda na samym początku sprawdza czy podany klucz istnieje w pliku ini – jeśli tak pojawia się błąd. Potem w zależności od rodzaju wartości, regułka zostaje dodana do pliku. W razie niepowodzenia podczas nadpisywania pliku pojawia się wiadomość, jeśli dodawanie regułki przebiegnie prawidłowo istnieje możliwość wygenerowania logu – w zależności od wartości właściwości $logger.

UWAGA! Jeśli w pliku konfiguracyjnym mają być przechowywane dane do połączenia z baza lub inne ważne informacje lepiej jest wyłączyć loggera aby potencjalny hacker nie wykradł tych danych z pliku z logami.

Kolejną metodą jest metoda getConfig(). Dzięki niej możemy uzyskać dostęp do danych konfiguracyjnych. Posiada ona tylko dwa warunki. Pierwszym z nich jest wymóg aby plik nie był pusty. Drugim zaś jest sprawdzenie czy funkcja parse_ini_file() działa prawidłowo. Potem za pomocą pętli foreach zwraca wszystkie wartości przypisane do kluczy, które zostały podane w tablicy jako argument.

Przedostatnią metodą jest isKeyExist. Pełni ona bardzo prosta funkcję – sprawdza czy klucz istnieje w pliku ini. Korzysta ona z funkcji array_key_exists(). Jeśli istnieje kończy działanie zwracając return true.

Ostatnią metodą jest addLog(). Jest to metoda dodatkowa, niemająca bezpośredniego wpływu na działanie skryptu. Jeśli właściwość $logger posiada wartość true zapisuje zdarzenia, czyli dodawanie nowej regułki, do pliku z rozszerzeniem log. Jeśli takowy plik nie istnieje automatycznie go tworzy. Dodatkowo metoda zapisuje IP użytkownika oraz datę dodania logu.

3. .htaccess

Plik ten pełni bardzo ważną rolę. Blokuje on dostęp do wszystkich plików znajdujących się w folderze główny z rozszerzeniem ini.

  • „Ten sposób wymaga najnowszej wersji PHP (5.4.0)”
    najnwosza wersja php to 5.5.0, a przed tym najnowszą była 5.4.16.

    troche sie zatrzymales na cyferkach

    • Dzięki za zwrócenie uwagi. Już poprawiam.