Wstęp

PHP oferuje nam bardzo pomocny obiekt: finfo, dzięki niemu możemy pobrać MIME Headers załadowanego przez file_get_contents pliku(z url) i w ten sposób sprawdzić czy to plik(z url) z odpowiednim rozszerzeniem.


Kodowanie

Cały kod będzie składał się z dwóch funkcji, których działanie opiszę pod kodem:

Wstęp

Długo zastanawiałem się nad napisaniem tego małego „how to”, ale w końcu doszedłem do wniosku, że warto. Z biegiem czasu komputery stają się coraz szybsze i szybsze… Dlatego osiąganie dużej ilości (biliony na sekundę) hashy podczas tzw. brute-force jest normalnością. Ponadto pojemne dyski (1,2,3 tb) stały się codziennością i w zupełności wystarczają, żeby trzymać na swoim HDD tablice tęczowe (ang. rainbow tables), jest to nic innego jak baza danych, przechowująca zahashowane ciągi znaków (np. md5-1-7-mixedalpha-all-space co znaczy, że tablica zawiera w sobie większość możliwych zakodowanych haseł, które zawierają od 1 do 7 znaków, małe i duże litery alfabetu (mixedalpha), znaki specjalne i spację ). Dodatkowo przy próbie „złamania” zakodowanego hasła może nam pomóc tzw. metoda słownikowa.


Programowanie

W tym tutorialu (w kodzie przykładowego programu) będziemy korzystać z funkcji hashującej md5(), ale bez problemu można zastosować tu kodowanie sha1().

Kod PHP jest wyjątkowo prosty i nie ma co go wyjaśniać (:
Wyjaśnię tylko co oznaczają ‚$2$10$’ w funkcji crypt():
$2 – informuję funkcję, że będziemy korzystać z algorytmu blowfish.
$10 – oznacza wykładnik potęgi do, której zostanie podniesiona 2 (10 => 2^10 = 1024)

Czym są cookies ?

Najprościej mówiąc, są to pliki , które są tworzone na naszym komputerze po tym jak nasza przeglądarka zostanie o to poproszona przez serwer. Takie plik zostaje wypełniony przez serwer odpowiednimi danymi i może być przez niego czytany i modyfikowany. Brzmi niebezpiecznie ? Troszkę tak, ale „ciasteczka” obowiązują pewne ograniczenia :

  • dostęp do ciasteczka ma tylko serwer, który je stworzył.
  • limit – liczby ciasteczek utworzonych z danej domeny i limit liczby wszystkich ciasteczek na dysku użytkownika
  • nie może być większe niż 4096 bajtów ( 4 kb ).

„Cookies” mają w sobie zakodowane datę wygaśnięcia, pozwala to przeglądarce usuwanie nie potrzebnych już ciasteczek. Są one transportowane protokołem HTTP. Mają one postać ciągów i są wysyłane przez serwer WWW w następujący sposób:

* – ścieżka domeny do, której ciasteczko jest wysyłane, tzn. jeżeli ustawimy ścieżkę na /admin/ to ciasteczko będzie wysyłane tylko do http://naszadomena.pl/admin/.


Wykorzystanie w PHP

Należy pamiętać, że kiedy tworzymy ciasteczko w php, to musimy wszystko ustawić zanim wyślemy jakiekolwiek dane do przeglądarki ( np. jakimś echo, print czy np. tagiem ).
Ustawianie ciasteczek w PHP wygląda mniej więcej w ten sposób:

Wydaje mi się, że robienie $tylkohttp true jest dobrym zagraniem, ponieważ w ten łatwy sposób ciasteczko nie może zostać odczytane przez wszystkie języki wykonywane po stronie klienta ( np. JavaScript ). Pozwala to zapobiec np. Cross-site-scripting.


Wykorzystywanie ustawionych ciasteczek

Ustawiliśmy cookie i teraz wypadało by wykorzystać jakoś zawarte w nim dane. PHP oferuję nam taką możliwość, jest nią zmienna $_COOKIE[”]. Pobieranie danych z ciasteczka jest proste, wystarczy wpisać nazwę naszego cookie w następujący sposób: [‚nasza nazwa’].


Prosty przykład

Wydaję mi się, że licznik wejść na stronę będzie świetnym przykładem dla początkującego na wykorzystanie ciasteczek w budowie witryny.

Demo licznika


Podsumowanie

Znajomość działania ciasteczek i umiejętność ich wykorzystania na pewno przyda się w przyszłej webmasterce, dlatego polecam wygooglować sobie jakieś artykuły o cookies-ach i poświęcić temu troszkę czasu. Google

Do jednych z fajniejszych możliwości PHP zdecydowanie należą wyrażenia regularne ( regular expressions ). Pozwalają one na wykonanie bardzo przydatnych operacji np. porównywanie wzorca ze zdobytym ( POSTEM lub GETEM ) ciągiem.

Załóżmy więc, że mamy prosty formularz kontaktowy w którym prosimy potencjalnego użytkownika o wpisanie swojego e-maila:

Mamy nadzieje, że użytkownik wprowadzi swój adres e-mail poprawnie, ale niestety naturą ludzką są błędy, dlatego musimy to jakoś zweryfikować:


Krótkie wyjaśnienie:

  • /^ : znacznik ten oznacza początek ciągu.
  • [a-z : oznacza zakres małych liter.
  • A-Z : oznacza zakres dużych liter.
  • 0-9 : oznacza zakres od 0 do 9.
  • .-_ : oznacza możliwe napotkanie na kropkę, myślnik lub dolny podkreślnik.
  • @ : wystąpienie małpy.
  • . : wystąpienie kropki.
  • [a-z]{2,4} : zakres małych liter + {minimalna_długość, maksymalna_długość}.
  • $/D : $ – oznacza koniec wyrażenia, a /D oznacza bezwzględny koniec wyrażenia.

Lektura do poduszki: Wyrażenia Regularne