Zmiany, zmiany, zmiany

Mogę spokojnie powiedzieć: wreszcie! Poprzedni skrypt już od dłuższego czasu nadawał się jedynie do tego żeby trafić na śmietnik. Dzisiaj to właśnie się stało. Po kilku tygodniach pracy nowy skrypt działa już bezproblemowo. Pojawienie się nowej wersji strony zapowiadałem już w tekście o problemach z mod_rewrite. Na tą chwilę jest to ciągle jeszcze faza beta, ponieważ kilka funkcji nie jest jeszcze gotowych, a ich napisanie zajmie mi jeszcze trochę czasu. Właściwie najważniejszą z niegotowych funkcji jest system komentarzy, który miałem w planach już od dość dawna, ale sposób w jaki był skonstruowany poprzedni skrypt zniechęcał do przeprowadzania nawet najmniejszych modyfikacji. Teraz w temacie komentarzy właściwie zostało mi już tylko przemyśleć w jaki sposób obronić się przed spambotami, które prędzej czy później muszą tu znowu trafić.

Przy okazji zmiany skryptu uporządkowałem też nieco treść strony, przede wszystkim wyrzuciłem artykuły z działów Personalizacja i Polecane, tym samym oba działy przestały istnieć (zresztą pewnie i tak bym do nich nic już nie dodał). Mimo wszystko treści jakie tam się znajdowały były (a przynajmniej tak mi się wydaje) dość ciekawe, więc nie usuwam wszelkich śladów po nich. Poniżej znajduje się lista co ciekawszych aplikacji z działu Polecane:

  • Orbitron – pokazuje w czasie rzeczywistym pozycje satelitów
  • MD4/MD5/SHA1 GPU Password Recovery – sama nazwa mówi wszystko
  • CellTrack – wykrywa BTSy z którymi łączy się telefon [Symbian]
  • SuperScan 3.0 – skaner portów
  • Barbelo – coś jak Kismet tyle, że na Symbiana
  • BSP Viewer – bardzo ciekawy program potrafiący odczytać mapy do HalfLife/CS

W drugim z działów znajdowały się głównie skompletowane przeze mnie pakiety ikon oraz tapet. Te znikają, ponieważ większość z tych informacji ściągnąłem z internetu, głównie przez Google Images, więc trudno powiedzieć jak wygląda sytuacja z prawami autorskimi do nich, w każdym razie nie zamierzam przez nie mieć żadnych kłopotów i zawczasu przenoszę wszystko do mojego Chomika (hasło: v3l0c1r4pt0r.tk).

Na tą chwilę w artykułach będzie znajdować się jedynie sekcja dla osób nie rozumiejących polskiego, a po statystykach widzę, że takowe czasami tu zaglądają. Szkoda byłoby więc żeby po zobaczeniu, że strona jest w języku dla nich nie zrozumiałym od razu z niej uciekały. W sekcji tej będą więc wszystkie aplikacje, w których zastosowałem swój moduł językowy, a więc na razie jedynie SysMonitor.

Myślę, że o tym co nowego pojawiło się wraz z ‘upgradem’ strony wszyscy zauważą sami, nie będę się więc rozpisywał o wszystkich nowościach. Na pewno zauważalny jest nowy layout, oparty już na divach, a nie jak ten poprzedni zbudowany w całości na tabelkach, które tak naprawdę już w momencie tworzenia szablonu tamtej strony były przez większość odradzane. Niestety tworząc tamtą stronę jednocześnie uczyłem się najpierw HTMLa, potem CSSa a na koniec PHP, więc większość z tego co tam stworzyłem już teraz wiem, że nie powinna nigdy zostać napisana w ten sposób. Oprócz tego w skrypcie pojawiła się paginacja (podział każdej sekcji na strony), która tak naprawdę była powodem dla którego zacząłem pisać to wszystko od nowa. Można też zauważyć, że po lewej pojawił się formularz logowania. Mimo to nie planuję udostępniać nikomu konta, chociaż od strony technicznej skrypt na to już pozwala. Raczej pole to będzie zawsze służyło jako logowanie wyłącznie do panelu admina. Reszta zmian nie potrzebuje według mnie już żadnego komentarza.

Posted in News | Tagged , , , | Leave a comment

Niedziałający mod_rewrite – rozwiązanie

Ostatnio pisząc nowy skrypt strony (tego obecnego nie można już w żaden sposób uratować bo to jeden wielki śmietnik, praktycznie uczyłem się dopiero PHP pisząc go) natrafiłem na dość poważny problem. Obecna strona używa z powodzeniem mod_rewrite, więc aby nie cofać jej w rozwoju użycie tego modułu było jednym z podstawowych celów kolejnej wersji skryptu. Niestety już po napisaniu kilku regułek okazało się, że niektóre z nich działają a niektóre nie. Początkowo próbowałem radzić sobie w możliwie najprostszy sposób używając REQEST_URI zamiast korzystać z GETa. Po napisaniu kilku podstron kontynuowanie takiego obejścia okazało się niemożliwe. Zauważyłem, że problemy sprawiają te reguły, w których jako wzorzec zawarty jest ciąg występujący również w pliku na serwerze np.

RewriteRule ^projekty/([0-9]+)$ projekty.php?strona=$1

To już dało mi do myślenia i zacząłem kombinować co jest źródłem problemu. Jak przypuszczałem zmiana projekty we wzorze na dowolny inny ciąg powodowała, że problem znikał. Trudno jednak, aby użytkownik chcąc obejrzeć moje projekty wchodził na podstronę nazywającą się blablabla lub jakkolwiek inaczej. Zmiana nazwy pliku projekty.php też nie wchodziła w grę, bo utrudniałaby tym razem moje życie. W takiej sytuacji zacząłem szukać sposobu na podejrzenie co robi serwer oraz jakie dane dostaje. Możliwe to było do osiągnięcia jedynie dzięki logom. Jako, że serwer stoi na localhoście nie stanowiło to problemu. Do konfiguracji Apache’a dopisałem:

RewriteLog [sciezka do serwera]/logs/rewrite.log
RewriteLogLevel 5

Zresetowałem i otworzyłem log. Po bardzo szybkiej analizie (większości wpisów nawet nie trzeba rozumieć, wystarczą ścieżki) zauważyłem, że moduł rewrite zamiast projekty/1 dostaje projekty.php/1. Niestety nie wiedząc jaki jest powód takiego zachowania serwera odpuściłem sobie przez co straciłem dwa dni nie pisząc ani jednej linii nowego kodu.

Kiedyś jednak musiałem do niego wrócić. Wróciłem więc dzisiaj i zacząłem analizować konfigurację Apache’a. W pliku httpd.conf nie znalazłem nic co mogłoby powodować ten błąd. Jako, że wykorzystuję WAMP’a jako platformę testową (i nie tylko, bo screeny użyte we wpisie Kilka ciekawostek z bazy whois (i nie tylko) także pochodzą z mojego localhosta tylko z zupełnie innego skryptu, którego nie mam zamiaru teraz omawiać) miałem utworzony alias do skryptu (tego od bazy whois) a strona znajdowała się dodatkowo w podfolderze (co wcześniej uważałem za przyczynę błędu, okazało się jednak, że leży ona gdzie indziej). Zajrzałem więc do konfiguracji aliasu. Wygląda ona mniej więcej tak:

<Directory "x:/system/htdocs/">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
        Order allow,deny
    Allow from all

Nie wklejam całości, żeby nie zaśmiecać wpisu. Od razu rzuciły mi się w oczy dwa elementy: MultiViews oraz AllowOverride all. Alias został wygenerowany przez WAMPa a dodatkową konfigurację pobrałem z Internetu. Trudno powiedzieć skąd wzięła się akurat ta część. W każdym razie zacząłem szukać informacji o MultiViews dzięki czemu trafiłem tutaj. Pomijając problemy jakie mógłbym mieć z Googlebotem gdyby taka konfiguracja była na serwerze dostępnym z Internetu autor wyjaśnia co robi ta dyrektywa:

Multiviews allow substitutions of file extensions, so you can call an URL like www.somehost.org/mypage.php using www.somehost.org/mypage.

Po przeczytaniu tego zdania od razu jasne stało się, że właśnie znalazłem źródło swojego problemu. Oczywiście dodając Options -MultiViews na początek pliku .htacces regułki zaczęły działać dokładnie tak jak powinny. Wniosek z tego jest taki, że gdy nie wiesz dlaczego coś nie działa zawsze czytaj logi!

Posted in Tutorials | Tagged , , , , , , | Leave a comment