#PHP

wszystkie notatki oznaczone etykietą "PHP"

Dziwna zmienna sesyjna

Dziś trochę się namęczyłem szukając pewnego błędu w jednym z PHP-owych projektów… Błąd dość poważny, bo nie można było się zalogować do panelu administracyjnego użytkownika. I jeszcze dosyć nietypowy, bo na localhoście wszystko grało, działało i buczało, a na serwerze docelowym, po zalogowaniu przekierowywało dalej na formularz logowania :/ Analiza kilku plików projektu, jak i poprawianie różnych fragmentów kodu, nie przyniosły wymaganego rezultatu. Dopiero po czasie “męczarni” doszedłem do tego, że zmienna sesyjna przekazującą wartość id usera jest pusta.

Czytaj dalej

WP-PostViews a odświeżanie

WP-PostViews jest prostym licznikiem czytań notki dla WordPressa. Niestety plugin ten nie jest odporny na odświeżanie strony, dlatego jego pomiary tak do końca nie są poprawne i rzeczywiste. Zawsze się znajdzie osoba, która podbije co jakiś czas wartość przeczytań odświeżając kilkakrotnie stronę… Od dawna wiedziałem o tym problemie, ale dopiero dziś rozmowa z Wojciechem skłoniła mnie do wprowadzenia małej poprawki do tej wtyczki, w celu zabezpieczenia przed powtórnym odświeżeniem strony przez tego samego usera.

Czytaj dalej

php5-cgi

Ostatnio wspominałem o tym, że muszę się zaktualizować do PHP5 i ostatecznie w tej wersji pracować, zostawiając przeszłość z PHP4 za sobą. Tak się składa, że na serwerach SX była mała modernizacja i aktualnie dostęp mam do Debiana na jednej maszynie z PHP5, a na drugiej z PHP4. Musiałem tylko na jednej doinstalować sobie php5-cgi :) W pliku /etc/apt/sources.list należy dopisać w przypadku braku adresy serwerów http://dotdeb.org. W moim przypadku były to mirrory zlokalizowane najbliżej maszyny:

Czytaj dalej

PHP jako CGI

Jednak się pokusiłem na rekonfigurację Debiana. PHP jako CGI przyda się na pewno w przyszłości, choć teraz nie wiem którą wersję wrzucić, PHP4 czy już lepiej PHP5. Miałbym wtedy 4-kę jako moduł Apache’a i 5-kę jako CGI. Główną różnicą w wersji CGI jest parokrotnie niższa wydajność niż modułu Apache’a. Do tego nie wszystkie zmienne systemowe mogą być przekazane w trybie CGI. Ale za to, wynagrodzeniem jest uruchamianie skryptu z prawami usera oraz możliwość uruchamiania spod shella skryptów PHP, co najbardziej było mi potrzebne :)

Czytaj dalej

Strona MajIRC-a

Pracuję nad MajIRCem, ostatnio może trochę mniej nad samą główną aplikacją (jeśli można to w ogóle nazwać aplikacją), ale staram się jak najprędzej uruchomić jakąś wersję beta :) A tymczasem dziś w nocy powstała strona projektu. Dostępna jest aktualnie/tymczasowo (a może docelowo nawet zostanie tam) pod tym adresem. Będzie rozwijana razem z projektem… W bieżącej wersji jest to bardzo prosta konstrukcja oparta na plikach tekstowych. Nie chciałem robić statycznej strony, aby wszelkie zmiany wyglądu i szablonu nie pociągały przemielenia wszystkich podstron.

Czytaj dalej

Polski manual PHP w pliku CHM

Od roku dokumentacja języka PHP w formacie CHM, w polskiej wersji językowej, dostępna na stronie projektu (http://php.net) jest uszkodzona. Plik zamiast ponad 6 MB ma objętość 401 KB. Dlatego do tej pory musiałem się zadowalać jakąś starszą wersją (bodajże z 2004 roku). Niestety plik ten utraciłem w czasie pamiętnej awarii dysku. Dlatego zacząłem poszukiwania tego magicznego pliku (php_manual_pl.chm) w sieci. Ale na nic zdały się skanowania różnych serwerów i mirrorów. Dopiero Google pomogło ;)

Czytaj dalej

class.tlen.php v1.0

Przez awarię sprzętu, jaka mnie ostatnio nawiedziła, nieco się opóźniła prezentacja pierwszej wersji class.tlen.php. Planowane wydanie było bodajże w sobotę, ale dzień wcześniej zjarał się stacjonarny i dopiero teraz mogę wszystkich poinformować, że ukazała się pierwsza wersja klasy PHP obsługującej protokół Tlena ;) Aktualnie do czasu powstania oficjalnej strony projektu kod źródłowy dostępny jest tutaj. Pewnie kod nie został jeszcze oczyszczony z większości błędów, ale takie dopiero pojawiają się przy wykorzystywaniu i pisaniu jakiegoś skryptu go wykorzystującego, więc o wszystkich błędach i spostrzeżeniach proszę informować.

Czytaj dalej

Pobieranie danych z Wikipedii

Pisząc klasę do tlena oraz bota wiki a’la jabberowy wiki@jabber.autocom.pl potrzebowałem sposobu na łatwe pobranie danych z Wikipedii. Najłatwiej skorzystać z opcji eksportu wiki do XML-a. Wchodząc na odpowiedni adres otrzymujemy XML z danym hasłem. Wszystko byłoby ładne i piękne, gdyby jakiekolwiek zdalna próba pobrania tych danych z Wikipedii (http://pl.wikipedia.org/wiki/hasło) w PHP nie zwracała błędu 403. Przy próbie użycia funkcji fopen(), file() czy file_get_contents() dostaję błąd: Warning: fopen(http://pl.wikipedia.org/wiki/Komunikator_Tlen.pl): failed to open stream: HTTP request failed!

Czytaj dalej

class.tlen.php

Trochę się pobawiłem tą klasą do Jabbera i zabrałem się do kombinowania nad obsługą protokołu Tlena. Wszystko byłoby fajnie gdyby nie szyfrowane połączenia z serwerem, czego nie mogłem rozgryźć. Ale rozmawiając na słynnym pokoju BT (Bar Tlenowy) dowiedziałem się, że TREN coś lekko zmodyfikował klasę Jabbera, aby można było połączyć się z serwerem Tlena. No i teraz wiem, że możliwe jest zestawienie nieszyfrowanego połączenia z serwerem. Standardowe zestawienie połączenia (szyfrowane) rozpoczyna się tak:

Czytaj dalej

Tlen przez PHP

Myśląc nad ostatnim pomysłem dotyczącym publikowania notek za pomocą Jabbera i przeglądając klasę do obsługi tego protokołu w PHP (class_jabber_php-0.4.2) wpadłem na nowy genialny pomysł. Mianowicie na napisanie podobnej klasy do obsługi protokołu Tlena :) Znalazłem gdzieś na forum rozwiązanie dotyczące publikacji notek na WP korzystając z Jabbera. Ktoś już napisał bota, który wykorzystuje Jabbera do publikowania wpisów na WordPressie. Ale chyba i tak sam coś spróbuję napisać do publikacji notek.

Czytaj dalej