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

Autor wpisu: Athlan, dodany: 02.10.2008 23:21, tagi: php

Denerwujące jest, że na niektórych portalach:

  • nie ma automatycznego przekierowania do strony wymagającej autoryzacji po zalogowaniu się,
  • w adresie strony jest parametr typu back_url=/bardzo/glugi/parametr/ze/czasem-to/wogole/szok.html

Ostatnio programując sklep internetowy zastosowałem najprostszą technikę, która uwzględni oba powyższe punkty. W moim przypadku, gdy kontroler wymaga zalogowania się, warstwa ACL wskazuje na kontroler logowania (w zależności od konfiguracji). Natomiast URL zostaje, tj:

http://example.com/konto/dodaj-produkt.html

Pierwsze co trzeba zrobić, to sprawdzić, gdzie jest użytkownik. Jeżeli wywołujemy kontroler logowania pod powyższym adresem, trzeba porównać aktualny url do adresu logowania. W moim przypadku adresem logwania jest:

http://example.com/zaloguj.html

Aktualną pozycję użytkownika możemy sprawdizć w zmiennej $_SERVER['REQUEST_URI'], a adres logowania mamy z góry ustalony w naszej aplikacji. U mnie za adresu odpowiada router, stąd poniższy przykład przekierowania do strony logowania:

if(($sReq = $_SERVER['REQUEST_URI']) != ($sUrl = Vframe_Router::Route(’auth_login’))) { $this->_oUser->login_backlink = $sReq; return $this->_redirect($sUrl); }

UWAGA! Jeżeli przekierowujemy użytkownika do strony logowania, zamiast $_SERVER['REQUEST_URI'] sprawdzamy $_SERVER['HTTP_REFERER'].

Metoda _redirect to nic innego, jak wysłanie header Location. Dodatkowo do sesji użytkownika zapisuję adres, z którego użytkownik został przekierowany do strony logowania. Bardzo ważne jest to, żeby zapisać lokalizację tylko wtedy, gdy adres nie wskazuje na URL logowania, bo użytkownik po zalogowaniu zamiast powrócić do przegladanej strony, wróci do podstrony logowania.

Tuż po autoryzacji ustawiamy w sesji login_backlink na null, aby w przyszłości, gdy użytkownik wejdzie bezpośrednio na podstronę logowania, nie został odesłany do zapamiętanej wcześniej lokalizacji.

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

Autor wpisu: widmogrod, dodany: 20.09.2008 11:34, tagi: php, eclipse

Kilka projektów WWW na głowie, przeskakiwanie z jednego do drugiego i kontrolowanie zmian wprowadzonych w każdym z nich.Nic prostego SVN!Google umożliwia hosting SVN OpenSource'owych projektów.W utrzymaniu wszystkiego pod kontrolą pomoże nam NetBeans 6.5 z wsparciem dla PHP lub plugin do Eclipse Subversive.Pomijam proces instalacji SVN na komputerze i inne programy wspierające jak np. RapidSVN gdyż zależy mi wyłącznie na integracji SVN z IDE.NetBeans 6.5 jest w wersji deweloperskiej ale obsługa SVN jest nadzwyczajnie przyjemna!
  • automatyczne wykrywanie katalogów SVN w projekcie i oznaczanie odpowiednią wizualizacją zakładek, plików, katalogówkolory
    • zielony - nowy plik
    • niebieski - plik zmodyfikowany różny od wersji SVN
  • wizualizacja katalogów podpiętych pod SVNJak można zuwazyć na załączonym obrazku, nie koniecznie cały projekt (np.: "kontorx-cms") musi być podpięty do repozytorium SVN jako całość (np.: "widmogrod.info") jest możliwość wyselekcjonowania pojedynczego katalogu w projekcie (np. "KontorX" czy "application") poddanego kontroli wersji.
  • szybka analiza zmian (można sprawdzić określoną gałąź projektu np.: wybrany plik lub katalog)
  • wizualizacja różnic wersji lokalnej i na serwerze, IDEALNA!
Eclipse Subversive

Autor wpisu: widmogrod, dodany: 19.09.2008 16:02, tagi: php

Na początku mojej przygody z PHP i tworzeniem paneli administracyjnych towarzyszył mi mały niedosyt. Zawsze byłem ciekaw jak wyglądają zaplecza, zarządzające, profesjonalne serwisy internetowe. Jakie rozwiązania stosują? w jakim stopniu są to rozwiązania innowacyjne a w jakim stare sprawdzone, użyteczne wzorce. Czy mój PA nie jest za skąpy czy zbyt lamerski.Teraz mamy możliwość zaobserwowania jak prezentują się różnego rodzaju rozwiązania w wielu otwartych systemach zarządzania treścią. Weźmy pierwsze z brzeguTeraz troszeczkę zmieniłem podejście do tworzenia backendów. Od czasu do czasu gdy nie mam natchnienia przeglądam już istniejące rozwiązania i szukam drogi środka - by wszystko bez nadmiaru niosło ze sobą intuicyjność i wygodę pracy.Przegląd paneli administracyjnych jakie stworzyłem w roku 2008.KontorX GWT - wszystko szło rewelacyjnie GWT zawładnęło moim sercem ale sam fakt płynącego czasu i ograniczeń EXT GWT i zachcianek klięta spowodował że ..
  • Strona głowna
  • Zarządzanie stronami
  • Dodanie nowego produktu
  • Zarządzanie produktami
.. powstał panel ..KonotrX HTML

Autor wpisu: widmogrod, dodany: 19.09.2008 15:27, tagi: php

Jak ugryźć funkcję php mktime?W poniższych przykładach zmienna $time posiada postać.$time = time();Początek dnianp.: 2008-08-18 00:00:00$startDay = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time), date('Y',$time)));Koniec dnianp.: 2008-08-18 00:00:00$endDay = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time)+1, date('Y',$time)));Początek tygodnianp.: 2008-08-18 00:00:00$startWeek = date('Y-m-d H:i:s', mktime(0,0,0,date('m', $time), date('d', $time), date('Y',$time)));

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

Autor wpisu: widmogrod, dodany: 19.09.2008 15:26, tagi: zend_framework, php

Wykorzystując Zend_View_Helper_Action w layout-cie (jako aplet w layout)$this->action('list','index','calendar', array('rowCount' => 5));dostałem wyjątek
Zend_Controller_Router_Exception: module is not specified in ..
O co chodzi?Na początku anializy myślałem że jest błąd w tym helperze i dispachowaniu akcji ale naszczęście się myliłem. Rozwiązanie problemu okazało się dużo bardziej trywialne jak i zaskakujące!Wykorzystując pomocnik widoku Zend_View_Helper_Url w pliku widoku dla wywoływanej akcji (czyli list.phtml) nie można korzystać z "skróconej" wersji generowani url!tj. zamiast$this->url(array('action' => 'display','id' => $row->id),'frontend')należy stosować pełny zapis$this->url(array('module' => 'calendar','controller' => 'index','action' => 'display','id' => $row->id),'frontend')EDIT:

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

Autor wpisu: Jaroslaw Mężyk, dodany: 17.09.2008 17:39, tagi: php

Problem… Często debugując kod wypisujemy wartość jakiejś zmiennej do treści strony. Takie podejście ma tę wadę, że te wstawki trzeba usunąć z finalnej wersji. Czasem też format zwracanych danych uniemożliwia nam swobodne dodawanie własnego tekstu (XML, JSon no i oczywiście generowane dynamicznie grafiki). Do tego dochodzi praca z Ajaksem - wyników pobranych przez XmlHTTPRequest nie widzimy… … [...]

Autor wpisu: Jaroslaw Mężyk, dodany: 14.09.2008 21:22, tagi: php

Dla wszystkich jest oczywiste, że PHP działa jako element serwera WWW. Jednak PHP może samo w sobie działać jako prosty serwer (nie koniecznie HTTP). Dla takiego rozwiązania najlepiej wykorzystać wersję CLI PHP (Command Line Interface) Dlaczego serwer w PHP? W jednym z ostatnich projektów, byłem zmuszony “wynieść” część funkcjonalności systemu z serwera linuksowego (PHP, Apache, MySQL) na [...]
Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.