Invenzzia » Zasoby / Artykuły / Piszemy galerię zdjęć...

Piszemy galerię zdjęć w Doctrine i OPT 2

  • Opublikowany: 13 lipca 2009 10:04:00 GMT, aktualizacja ponad 4 lat temu przez Tomasz Jędrzejewski
  • en

Celem tego artykułu jest pokazanie zasad pracy z bibliotekami Doctrine i Open Power Template 2 na przykładzie budowy internetowej galerii zdjęć.

Spis treści

Celem niniejszego artykułu jest zapoznanie czytelnika z podstawami pracy w systemie ORM Doctrine oraz systemie szablonów Open Power Template 2 na przykładzie budowania prostej aplikacji internetowej, galerii zdjęć. Omówiona zostanie podstawowa konfiguracja oraz przygotowanie do pracy obu narzędzi, ich podstawowe zastosowanie oraz metody łączenia ich ze sobą. Z uwagi na objętość, w artykule zawarte zostały jedynie najważniejsze fragmenty kodu źródłowego, zaś kompletny, działający skrypt znajduje się w dołączonym do tekstu archiwum. W artykule zakładam, iż czytelnik ma już pewne doświadczenie w tworzeniu skryptów PHP oraz zna przynajmniej podstawy programowania obiektowego.

Open Power Template 2.0 projects tutorial Doctrine

Ten tekst udostępniony jest na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 2.5 Polska.

Dodaj komentarz

Piszesz odpowiedź na komentarz

  • Nie będzie opublikowany | Gravatar obsługiwany
  • Wpisz tutaj nazwę naszej grupy.

Komentarze

  • Gravatar photo

    #1 Marcif ponad 4 lat temu Odpisz na ten komentarz

    setAttribute

    Jeśli zastosuje Doctrine w wersji 1.1 to generowanie tabel w bazie działa poprawnie lecz jeśli wersję 1.2 to już podczas generowania mam ostrzeżenia. W dokumentacji tej funkcji do obu wersji nie widzę żadnych różnic. O co więc chodzi?

    Warning: PDO::setAttribute() expects parameter 1 to be long, string given in /var/www/opt_gallery/libs/Doctrine/Connection.php on line 341

    Call Stack:
    0.0003 116800 1. {main}() /var/www/opt_gallery/tools/doctrine.php:0
    0.0945 2126648 2. Doctrine_Connection->setAttribute() /var/www/opt_gallery/tools/doctrine.php:22
    0.0945 2127112 3. PDO->setAttribute() /var/www/opt_gallery/libs/Doctrine/Connection.php:341

    • Gravatar photo

      #1.1 Marcif 4 minut później

      Re: #1

      No tak przypadkiem przeczytałem opis UPGRADE_TO_1_2 i tam wyczytałem:
      The following code is no longer supported.

      [php]
      $connection->setAttribute('use_native_enum', true);

      You must now always use the following code.

      [php]
      $connection->setAttribute(Doctrine_Core::ATTR_USE_NATIVE_ENUM, true);

      Czyli już wszystko jasne :)

  • Gravatar photo

    #2 Marcif ponad 4 lat temu Odpisz na ten komentarz

    Nie generuje mi tabel

    Po tej zmianie w wersji 1.2.1 błędów podczas generowania brak jednak tabele się nie zakładają. Jak prosto sprawdzić dlaczego ?

    • Gravatar photo

      #2.1 Zyx 4 dni później

      Re: #2

      Kod z artykułu nie był jeszcze testowany pod Doctrine 1.2, więc na razie ciężko mi powiedzieć, co jest przyczyną problemu. Jednak jak tylko znajdę wolną chwilę, postaram się uaktualnić tekst i wyjaśnić ewentualne problemy. Cierpliwości.

    • Gravatar photo

      #2.2 Marcif 6 dni później

      Re: #3

      Ok dzięki za zainteresowanie problemem. Ja w między czasie będę przegryzał ten artykuł na wersji 1.1

  • Gravatar photo

    #3 Piraci ponad 4 lat temu Odpisz na ten komentarz

    Autoloader OPT

    W kodzie źródłowym w pliku index.php jest zła ścieżka do bibliotek - inna od tej w instrukcji w pliku README i inna od tej w artykule powyżej:
    // Inicjuj autoloader OPT
    require('../../wb_projects/Opl_20/lib/Base.php');
    Opl_Loader::addLibrary('Opl', array('directory' => '../../wb_projects/Opl_20/lib'));
    Opl_Loader::addLibrary('Opt', array('directory' => '../../wb_projects/Opt_20/lib'));
    Opl_Loader::register();

    • Gravatar photo

      #3.1 Zyx dzień później

      Re: #3

      U siebie na dysku mam po prostu wpisaną ścieżkę lokalną, by móc testować kod z najnowszymi wersjami OPT i szybko się między nimi przełączać - zapomniałem zmienić przy pakowaniu. Należy wpisać taką ścieżkę, jak w artykule, chyba że chcesz sobie biblioteki umieścić gdzie indziej.

  • Gravatar photo

    #4 gaza ponad 3 lat temu Odpisz na ten komentarz

    Bezpieczeństwo zdjęć

    Witam.
    Mam pytanie dotyczące bezpieczeństwa, a właściwie dostępności, zdjęć w galerii.
    Jeżeli chciałbym zrobić aplikacjoę wielouzytkownikową i zabronić innym oglądania zdjęć innych niż swoje, to jak w proponowanym rozwiązaniu mógłbym to zrobić ? Obecnie jest tak, że folder ze zdjęciami jest ogólnodostępny i właściwie każdy może swobodnie wpisać ścieżkę i otworzyć dowolne zdjęcie.

    • Gravatar photo

      #4.1 eXtreme około 2 godzin później

      Re: Bezpieczeństwo zdjęć

      Ja bym to zrobił w ten sposób:

      Można by zrobić tak, aby zablokować dostęp do tego publicznego katalogu (ukryć go poza publicznym katalogiem na FTP albo poprzez wrzucenie odpowiedniego .htaccess). Następnie zrobić swego rodzaju bramkę (gate), która będzie przyjmować za parametr ID zdjęcia.

      Kod PHP w bramce pobierałby nazwę pliku zdjęcia z bazy danych (na podstawie podanego ID) oraz sprawdzał uprawnienia. Jeżeli ten użytkownik nie może wyświetlać danego zdjęcia, to wyrzucać mu błąd http 404. Jeśli użytkownik może oglądać, to pobrać mime-type pliku poprzez mime_content_type() i wysłać jako nagłówek oraz wypluć zawartość zdjęcia (echo file_get_contents).

      Wszystkie odwołania do zdjęć w galerii zmienić z bezpośredniego pliku na gate.php?id=XXX

      Tym samym uniemożliwimy podgląd zdjęcia, jeżeli ktoś zdobyłby ścieżkę do niego oraz jeżeli zdobyłby jego ID, choć nie ma uprawnień.

    • Gravatar photo

      #4.2 gaza 4 dni później

      Re: #4

      rozwiązanie prawie OK. Ale aby to zastosować, to musze ustawić content typ na tym obrazka i w takim przypadku poza obrazkiem nic nie wyświetlać na stronie !? Trzeba by zastosować iframe, a tego raczej nie chciałbym stosowac. Być może powyższe jest naiwne dla kogoś obeznanego, ale ja dotychczas nie musiałem mierzyć się z takim problemem.

    • Gravatar photo

      #4.3 eXtreme 4 dni później

      Re: #4

      Bramka w zamierzeniu ma być odpowiednikiem bezpośredniego odwołania się do PLIKU obrazka, tym samym logiczne jest, że wyświetla tylko i wyłącznie zdjęcie.

      Sprawdzanie uprawnień należy przeprowadzić także i równocześnie na stronie podglądu zdjęcia.