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

Autor wpisu: Zyx, dodany: 22.12.2008 16:44, tagi: php

Skuteczne zabezpieczenia nie muszą być skomplikowane, aby dawały pożądany efekt. Powszechnie znanych rozwiązań jest kilkanaście i każde chroni przed pewnymi rodzajami ataków. Ich implementacja nie powinna być rzeczą trudną, lecz w rękach niedoświadczonego programisty może być zabójcza dla serwisu WWW. W tym wpisie chciałbym przedstawić dziury, z jakimi się ostatnio spotkałem, będące bardziej błędem mózgu ich autorów, niż samego algorytmu.

Autor wpisu: Diabl0, dodany: 19.12.2008 21:53, tagi: zend_framework, php

Tym razem zadanie wydawało się banalne - ułatwić życie użytkownikom umożliwiając im masowe drukowanie zleceń raz na jakiś czas, zamiast przy każdym nowym zleceniu. Zlecenia w formacie PDF były zapisywane do plików. Teraz wystarczyło tylko połączyć te kilka/naście plików w jeden wielostronnicowy PDF (użytkownicy powiesili by mnie za jaja jakby musieli klikać po koleji każdy PDF i klikać “Drukuj”). Tylko…

Pierwszy pomysł jaki mi się nasunął to Zend_Pdf. Widziałem tam i Zend_Pdf_Page, i możliwość wczytania gotowego pliku. Prawie się zdziwiłem na myśl że w końcu ten  IMHO bezcelowy komponent Zend_Pdf do czegoś się przyda. Niestety, po raz kolejny okazało się że jest nieprzydatna do niczego. Pomijając problemy z wczytaniem PDF’a wygenerowanego przez TCPDF:

(”Unsupported PDF version. Zend_Pdf supports PDF 1.0-1.4. Current version - ‘1.7′“)

gdzie w kodzie warunek wygląda następująco:

        $pdfVersion = (float)substr($pdfVersionComment, 5);
        if ($pdfVersion < 0.9 || $pdfVersion >= 1.61) {
            /**
             * @todo
             * To support PDF versions 1.5 (Acrobat 6) and PDF version 1.7 (Acrobat 7)
             * Stream compression filter must be implemented (for compressed object streams).
             * Cross reference streams must be implemented
             */
            throw new Zend_Pdf_Exception(sprintf('Unsupported PDF version. Zend_Pdf supports PDF 1.0-1.4. Current version - \'%f\'', $pdfVersion));
        }

To jeszcze przy próbie utworzenia nowego dokumentu i przypisania mu stron z innego dokumentu ładny wyjątek:

Page is attached to one documen, but rendered in context of another.

Pozostało w takim razie Google, a tam… niewiele możliwości. Albo komercja, albo rozwiązania systemowe, i… mała perełka: FPDI

FPDI is a collection of PHP classes facilitating developers to read pages from existing PDF documents and use them as templates in FPDF, which was developed by Olivier Plathey. Apart from a copy of FPDF, FPDI does not require any special PHP extensions.

Since version 1.2.1, FPDI only supports the 1.6 version of FPDF.

Po chwili moją uwagę przyciągnęło jeszcze jedno (dość ciekawie brzmiące) zdanie:

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

Autor wpisu: Jaroslaw Mężyk, dodany: 16.12.2008 21:41, tagi: php

Tak to jest - człowiek całe życie się uczy a i tak głupi umiera ;) PHPem zajmuję się już ładnych parę lat (6 albo 7 - nie mogę się doliczyć) a dopiero ostatnio dowiedziałem się o dwóch ciekawostkach, którymi chętnie się z Wami podzielę. dla zwolenników wcięć i ogólnie wymyślnego formatowania… Czy wiedzieliście o tym, że w wywołaniu [...]

Autor wpisu: Diabl0, dodany: 13.12.2008 09:49, tagi: php

Dystrybucja Debian  ma bardzo ścisłą i ostrą politykę dotyczącą stabilności gotowych pakietów oraz używania wyłącznie otwartego i wszędzie dostępnego kodu (włącznie z wszelkiego rodzaju algorytmami szyfrującymi i kodującymi które np. w Stanach podlegają dziwnym regulacjom). Dlatego też w stabilnej wersji Debian Etch 4.0 pakiet ffmpeg nie jest dostępny, natomiast w niestabilnym Sid znajduje się stosunkowo stara, mocno ograniczona wersja. Samodzielna kompilacja ffmpeg pozwoli na użycie najnowszej i najbardziej rozbudowanej wersji z wsparciem dla praktycznie wszystkich popularnych formatów video.

Wymagane pakiety debiana

  • libavcodec0d
  • libavformat0d
  • libsdl1.2debian
  • libimlib2-dev
  • libfreetype6-dev
  • liba52-dev
  • libgsm1-dev
  • libtheora-dev
  • libvorbis-dev
  • yasm
  • subversion-tools
  • libdc1394-13-dev
  • re2c
aptitude update
aptitude install libavcodec0d libavformat0d libsdl1.2debian libimlib2-dev libfreetype6-dev liba52-dev libgsm1-dev libtheora-dev libvorbis-dev yasm subversion-tools libdc1394-13-dev re2c

instalacja liblame

(http://sourceforge.net/project/showfiles.php?group_id=290)

./configure --prefix=/usr
make
make install

instalacja faac

http://www.audiocoding.com/downloads.html

./bootstrap
./configure --prefix=/usr
make
make install

instalacja libmp4v2

http://resare.com/libmp4v2/

./configure --prefix=/usr
make
make install

instalacja faad

http://www.audiocoding.com/downloads.html

autoreconf -vif
./configure --prefix=/usr --with-mp4v2
make
make install

instalacja libx264

(http://www.videolan.org/developers/x264.html)

./configure --prefix=/usr --enable-shared
make
make install

instalacja libxvid

(http://www.xvid.org/Downloads.43.0.html)

cd build/generic
./configure --prefix=/usr
make
make install

kompilacja ffmpeg

http://ffmpeg.mplayerhq.hu/ (http://ffmpeg.mplayerhq.hu/ffmpeg-export-snapshot.tar.bz2)

./configure --prefix=/usr --enable-nonfree --enable-libmp3lame --enable-swscaler  --enable-liba52 --enable-libdc1394 --enable-gpl --enable-libfaac --enable-libfaad --enable-libgsm --enable-libgsm --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-pthreads --enable-encoder=flv --enable-shared
make
make install

instalacja ffmpeg-php

http://sourceforge.net/project/showfiles.php?group_id=122353

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

Autor wpisu: Splatch, dodany: 09.12.2008 17:10, tagi: php

Java od wersji 5.0 zawiera możliwość definiowania typów wyliczeniowych. Jednym z praktycznych przykładów zastosowania tego mechanizmu jest TimeUnit. Enum ten służy do konwertowania jednostek czasu pomiędzy różnymi wielkościami - na przykład z minut na sekundy:

Autor wpisu: Diabl0, dodany: 04.12.2008 02:28, tagi: php

Kolejny pozornie prosty problem, i kolejne 2 godziny z życia, tym razem na próbie kompilacli pdo_oci pod Debianem. Pomijam fakt że Debian nie ma gotowego pakietu - zdarza się. Ale już same problemy z zależnościami to lekka przesada.

Pomimo poprawnie zainstalowanego PECL/PEAR z paczek próba instalacji pdo_oci kończy się komunikatem:

pear/PDO_OCI requires PHP extension “pdo” (version >= 1.0) No valid packages found install failed

pomimo:

diabl0@G4:~$ pecl list
diabl0@G4:~$ pecl list
Installed packages, channel pecl.php.net:
=========================================
Package   Version State
PDO       1.0.3   stable
PDO_MYSQL 1.0.2   stable
PDO_PGSQL 1.0.2   stable

I cóż począć? Google :)

Po kilkudziesięciu minutach i wielu próbach trafiłem w końcu na zgłoszenie buga: Bug #9253 Unable to install PDO_OCI w którym w końcu znalazłem konkretne i przydatne informacje. A więc do rzeczy i pracy.

Po próbach z pecl miałem już ściągnięte źrudła w /tmp/pear/download/PDO_OCI-1.0

InstantClient pobrany z http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/linux-amd64.html (taką mam arch, u was może być inna), przy okazji duży minus dla oracla za konieczność rejestracji i brak możliwości pobrania tego przez lynx/wget. InstantClient wrzucony do /usr/local/instantclient, podobnie jak i SDK. Dodatkowo od razu linkujemy sobie /usr/local/instanclient/libclntsh.so.10.1 do /usr/local/instanclient/libclntsh.so

W /etc/ld.so.conf dopisujemy linijkę /usr/local/instantclient i odpalam:

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

Autor wpisu: stormfly, dodany: 29.11.2008 13:40, tagi: php, framework

Nadeszła pora na podsumowanie tematu systemów szablonów. Nie da się ukryć, że większość aktywnych programistów nie widzi już potrzeby korzystania z systemów szablonów. Świadczą o tym wpisy na blogach zagranicznych np. Paul M. Jones czy Hasin Hayder, który nawet napisał swego czasu...
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.