Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu php Kanał ATOM (tag: php)

Autor wpisu: Zyx, dodany: 27.01.2007 22:12, tagi: php

Wszedłem sobie dzisiaj na blog seaquesta, a tam notka z 17 listopada ubiegłego roku o polskiej społeczności PHP. Rzecz warta przedyskutowania, a poruszyła mnie, ponieważ sam od pewnego czasu zastanawiałem się nad sytuacją, mając za sobą doświadczenia WebCity.pl i OpenPB. Diagnoza Seaquesta jest całkiem niezła i w dużej mierze się z moimi poglądami pokrywa, aczkolwiek nakreślę wszystko od początku.

Autor wpisu: Athlan, dodany: 25.01.2007 21:51, tagi: php

Czasem potrzebujemy zabezpieczyć nasz skrypt autoryzacją. Kiedyś pisałem już o zabezpieczeniu autoryzacją po stronie serwera, jednak wymagało to nałożenia hasła na dany folder. Jest jakaś możliwość autoryzacji na dany plik? Odpowiedz brzmi: „tak”, ale musi on wysłać odpowiednie nagłówki.

Zanim przejdziemy do daleszej części artykułu zapoznajmy się z teorią. Aby zabezpieczyć nasz plik, należy wysłać request do serwera „WWW-Authenticate”, który umożliwi nam wprowadzenie danych. Jak przesłać? Tak jak inne dane do serwera np o kodowaniu, czy MIME… header(): header(’WWW-Authenticate: Basic realm=”Protected area!”‘); w miejsce realm=”” wpisujemy tekst, który pojawi się jako „etykieta” logowania, czyli komunikat, tak jak przedstawiłem na poniższym screenie:

Następnym nagłówkiem z jakim trzeba się zapoznać to wysłanie takiego żądania, aby uznał plik jako nieważny (no authorization), przykładem takiego pliku jakst folder, do którego nie mamy dostępu, wyświetla się komunikat 403 Forbidden. Takim samym sposobem zabezpieczymy nasz plik: header(’HTTP/1.0 401 Unauthorized’);

Ok, potrafimy odciąć autoryzację, wyświetlić okno logowania… i na tym się kończy. Aby w pełni wykorzystać autoryzację musimy jakoś przechwycić dane z logowania. Okazuje się, że są one wysyłane do tablicy $_SERVER pod kluczami „PHP_AUTH_USER” dla nazwy użytkownika i „PHP_AUTH_PW” dla hasła. Odzwierciedlając dostęp otrzymujemy: $_SERVER[’PHP_AUTH_USER’] oraz $_SERVER[’PHP_AUTH_PW’].

Przejdźmy do praktyki, nadajemy konkretne haslo i login, który wymagamy zanim zaczniemy wykonywać jakikolwiek kod…

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 20.01.2007 09:08, tagi: php, framework

Wprawdzie mój framewoek ma jak widać finalny układ plików, ale zaczyna mnie gryźć… przed startupem cały core jest skanowany, dzięki czemu mogę rzucać sobie klasy w katalogu core gdzie popadnie, moge stworzyć 5 folderów i potem dać klase. Mnie się on coraz to mniej podoba. Ostatnio przeglądałem Zend Framework dziesiąty raz, postanowiłem zebrać w kupę plusy i minusy mojego sposobu oraz sposobu wykorzystamyn w Zendzie.

Układ plików w Vframe:

(+) skanowanie core zapewnia porządek i elastyczność, mogę rzucić klasę gdzie popadnie (+) stosowanie nazw klas jest niezależne od ich położenia (-) czas działania nieznacznie się wydłuża

Układ plików w Zend Framework:

(+) nie trzeba skoanować core (-) nazwy klas są ściśle uzależnione od ich położenia (-) robi się mase folderów, w ktorych jest zazwyczaj po jednym pliku

Mimo tego, że moim zdaniem Zend ma więcej minusów przeze mnie wykrytych, jestem mu jakoś bardzie przychylny. Nie podoba mi się nazwa typu Zend_Folder_Klasa. Nie mam symapatii do „dolnych podkreśników”. Wymyśliłem sobie, że w moim fw mogę zastosować inny sposób oddzielania ukladu pliku w nazwie klasy. Odpowiednikiem Zend_Folder_Klasa byłoby wówczas VfolderKlasa lub VfolderPodfolderKlasa, lub po prostu Vklasa. Aby nie robić bałaganu, wszystkie wyjątli miałyby nazwę np. VexceptionCache, dzięki czemu nie tworze nowego folderu Cache, w którym jest tylko wyjątek. Tak to mam jeden folder z wyjątkami. To samo tyczy się interfejsów. Nazwa nie byłaby oddzielana podkreślnikiem, tylko kolejną wielką literą.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: WojciechNaruniec, dodany: 20.01.2007 01:22, tagi: php, framework

Pojawiła się nowa wersja Zend Framework o numerze 0.7.0. W tym wydaniu głównymi zmianami jest wprowadzenie klas do obsługi lokalizacji oraz internacjonalizacji. Została też mocno rozwinięta polska dokumentacja frameworka. Główne zmiany to: Komponent do zarządzania lokalizacjami (L10N) Komponent do obsługi daty i czasu z uwzględnieniem lokalizacji Komponent do obsługi tłumaczeń (I18N) (w inkubatorze) Komponent do obsługi jednostek i ich konwersji Nowa [...]

Autor wpisu: Athlan, dodany: 17.01.2007 17:16, tagi: php

Ostatnio przeglądałem forum.php.pl i znalazłem kilka postów, które dały mi do zrozumienia, że część społeczności nie potrafi używać, lub w ogóle nie wie czym jest singleton. Jakoże staram się pomagać bliskim mi w mojej branży ludziom o ile pozwala mi na to czas i ohota, postaram się wyjaśnić prostymi słowami czym jest i jak uzywać singletona. W artykule poruszone jest wiele problemów, np dziedziczenie songletona wraz z przedstawianymi rezultatami działań (unikatowe identyfikatory instacji klas). Przedstawiłem wzorzec registry, zapraszam do lektury.

1. Czym jest singleton – teoria

Singleton to pojedyncza instacja klasy, mówiąc szerzej: dostępna w obrębie całej aplikacji w postaci jednego egemplarza, aby nie tworzyć cały czas nowej kopii obiektu operatorem new i korzystać z nej tak, jak ze zwykłej klasy (a nie z metod statycznych). Cały singleton opiera się na tym, że klasa przechowuje instancję samej siebie w prywatnym statycznym atrybucie, który jest tworzony i pobieranie w metodzie statycznej zastępującej konstruktor. No właśnie... jak zablokować nasz konstruktor, aby nie można było posłużyć się klasą poprzez operator z zewnątrz metody uruchamiającej ową instancję. Jeżeli klasa nie będzie dziedziczona, metodzie konstrukcyjnej nadajemy prawa dostępu na „private”, lub jeżeli chcemy dziedziczyć klasę „protected”.

Dobrze zablokowaliśmy dostęp do klasy, teraz trzeba jakoś przechować obiekt i wywołać go. Do przechowania instancji klasy będzie służył jej wbudowany mechanizm polegający na zapisie egzemplarza do własnego prywatnego/chronionego atrybutu i wywołaniu przez metodę statyczną klasy zwracającą ową instancję. Zapoznamy się ze słowem kluczowym „instanceof”, który sprawdza, czy obiekt jest instacnją danej klasy.

2. Piszemy singleton niedziedziczony i dziedziczony - praktyka

Teorię znamy, czas na przyklad. Napiszemy klasę HelloWorld, która wykona songletona sama siebie:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 03.01.2007 18:07, tagi: framework, php

Dziś chciałbym zaprezentować framework, ktory zbudowałem i opieram na nim swoje aplikacje. Jest stale rozwijany, nie ukryję że może spotkać się z gorzkimi słowami krytyki, ale też słodkimi pochwały. Przygotowałem prawie pełną dokumentację, która umieszczona jest na stonie domowej frameworka:

http://framework.vgroup.pl

Wraz z działem download oraz manualem na stronie na bieżąco będę publikował przykłady użycia jakiś komponentów, na dzisiejszy czas są to: upload pliku, caching działania zapytania do bazy danych oraz zmniejszenie pliku graficznego. Najlepszym przykładem będzie aplikacja napisana na frameworku, dlatego zmieściłem kod swojego portfolio http://www.vgroup.pl. Repozytorium plików możecie znaleźć pod adresem http://source.vgroup.pl

Download frameworka oraz przykładowego szkieletu katalogów aplikacji: http://framework.vgroup.pl/download.html

Instalacja: http://framework.vgroup.pl/read-instalacja.html

Repozytorium plików frameworka wraz z podstawowymi bibliotekami (mojego autorstwa): http://framework.vgroup.pl/repository.html

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: Athlan, dodany: 27.12.2006 15:20, tagi: framework, php

Kiedyś napisałem klasę ModRewriteString, którą opublikowałem na łamach forum.php.pl, która ma sprowadzić polskie, niemieckie i czeskie znaki do zwykłych liter, na przykład ą do a, ż i ź do z, itd. Na potrzeby jednego z moich projektów (portalu) została ona użyta na kodowaniu UTF-8. Okazało się, że klasa akceptuje tylko kodowania WINDOWS-1250 i ISO 8859-2. Ze znaków zakodowanych przez UTF robił się znak nieodczytywalny, potocznie zwany "krzak". Problem został oznaczony jako bug najwyższego stopnia, klasa trafiła natychmiastowo do analizy. Z pomocą przyszła dokumentacja na temat Multibyte String Functions (rozdział LXXXV) dostępna w podstawowych rozdziałach oficjalnej dokumentacji języka PHP: http://pl2.php.net/manual/pl/ref.mbstring.php Ponadto cały dokument z klasą był zakodowany w formie ASCII, co jest niedorzeczne w tego typu działaniach. Plik zawierający klasę został ujęty w formie UTF-8 - uniwersalnego kodowania, które można bez problemu odkowodać.

Zmiany objęły tylko metodę Rewrite(), przyjmuje ona dodatkowy, nieobowiązkowy drugi parametr, który ustawia tryb pracy klasy na podane kodowanie. Gdy parametru nie podamy, lub otrzyma wartość null, wówczas kodowanie zostanie ustawione automatycznię poprzez analizę podanego ciągu znaków przez funkcję mb_detect_encoding(). Kodowanie jest o tyle ważnym elementem, gdyż zostaje podane wewnątrz klasy w funkcjach mb_strtolower() oraz mb_strlen(), odpowiedzialnych za poprawne wykonanie zadania metody.

Dodana została linijka odpowiedzialna za przerwania działania klasy juz na samym początku. Sprawdzane zostaje załadowane rozszerzenie "mbstring", odpowiedzalne za Multibyte String Functions. Gdy rozszerzenie nie zostanie załadowane, konstruktor wyrzuca wyjątek pierwotnej klasy Exception:

PLAIN TEXT PHP:
  1. if(!extension_loaded("mbstring"))
  2. throw new Exception('MbString has not been enabled yet!');

Wersja klasy została oficjalnie uznana za stabilną, nadany jest jej numerek 0.0.5.

Zastosowanie klasy:

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.