Perfekcyjny Hosting, Serwery Linux, Windows i VPS

Perfekcyjny Hosting, Serwery Linux, Windows i VPS Rejestracja domen polskich i zagranicznych

Hosting - SerweryDomenySerwery VPSWindows-HostingKreator SiteBuilderHosting - ResellerKonta E-mailUsugi Inne

Strefa Klienta Logowanie Nowe Zamwienie Domeny polskie Domeny zagraniczne Pomoc Nowy ticket Baza Wiedzy

Baza Wiedzy
Jeste? w:: Home > Baza Wiedzy > Jak to się robi w PHP ?

Jak to się robi w PHP ?

FAQ grupy pl.comp.lang.php

Spis treści:


1 Informacje o FAQ
 1.1 Co to jest FAQ? Czemu ma służyć?
 1.2 Gdzie można znaleźć najnowszą wersję tego FAQ?
 1.3 Kto tworzy FAQ?
 1.4 Czy FAQ jest rozwijane?
 1.5 Czy mogę umieścić FAQ na swojej stronie?
2 Grupa dyskusyjna pl.comp.lang.php
 2.1 Czego dotyczy grupa?
 2.2 Jakie zasady obowiązują na pl.comp.lang.php?
 2.3 Gdzie można znaleźć archiwum grupy?
 2.4 Jakie napisać zapytanie SQL, żeby...
 2.5 Raz po raz widzę w odpowiedzi skróty RTFM lub NTG. Co one oznaczają?
 2.6 Dlaczego nikt nie odpowiada na moje pytanie?
 2.7 Grupa pl.comp.lang.php nie spełnia moich oczekiwań. Gdzie jeszcze można podyskutować o PHP?
3 Podstawy PHP
 3.1 Co to jest PHP? Co oznacza skrót PHP?
 3.2 Do czego potrzebne jest PHP?
 3.3 Jakie są największe różnice pomiędzy PHP3 a PHP4?
 3.4 Skąd wziąć PHP?
 3.5 Jak skompilować PHP?
 3.6 Jakie opcje można podać przy kompilacji PHP?
 3.7 Czy PHP ma plik konfiguracyjny? Co można w nim ustawić?
 3.8 Z jakim serwerem WWW może współpracować PHP?
 3.9 Z jakimi bazami danych współpracuje PHP?
 3.10 Skąd można czerpać informacje o PHP w Internecie?
 3.11 Czy są jakieś książki o PHP?
 3.12 Gdzie można znaleźć skrypt, który...
 3.13 Jakie serwisy Internetowe możecie polecić osobom znającym PHP?
 3.14 W jakim edytorze pisać skrypty PHP?
 3.15 Jak napisać skrypt, który...
 3.16 Korzystam ze skryptu X, który nie chce działać. Co zrobić?
 3.17 Czy znacie bezpłatne serwery, które obsługują PHP?
 3.18 Gdzie mogę się pochwalić moim skryptem PHP?
 3.19 Czy z poziomu PHP można tworzyć grafikę?
 3.20 Czy w PHP można tworzyć tylko strony internetowe?
 3.21 Czy z poziomu JavaScript można wywołać funkcję PHP?
 3.22 Co to są wyrażenia regularne i do czego służą?
 3.23 Czym różni się include() i require()?
 3.24 Jakie nowości zostały wprowadzone w PHP 4.1.0?
 3.25 Gdzie znajduje się plik konfiguracyjny PHP?
 3.26 Jaka jest różnica w zastosowaniu isset() i !empty() ?
4 Porady praktyczne
 4.1 Co oznacza błąd...
  4.1.1 Cannot add header information - headers already sent by...
  4.1.2 open(/tmp\sess_[...], O_RDWR) failed: m(2)
  4.1.3 Unexpected character in input...
  4.1.4 Cannot redeclare [class] foo()...
  4.1.5 Call to undefined function: ...
  4.1.6 Failed opening 'foo.php' for inclusion (include_path='.')
  4.1.7 Maximum execution time of 30 seconds exceeded in...
  4.1.8 First argument to array_*() should/needs to be an array
  4.1.9 Supplied argument is not a valid MySQL result resource
 4.2 PHP nie zgłosił żadnego błędu, ale skrypt nie działa poprawnie bądź PHP zawiesza się przy jego wykonywaniu. Co zrobić?
 4.3 Jak korzystając z PHP ograniczyć dostęp do strony, bądź pozbawić kogoś całkowicie dostępu do witryny?
 4.4 Mam kilka skryptów do wyboru. Który polecacie?
 4.5 Jak przekierować przeglądarkę na inną stronę?
 4.6 Jak zasugerować przeglądarce nazwę pliku do zapisania?
 4.7 Jak skonwertować polskie znaki pomiędzy stronami kodowymi WIN-1250 i ISO-8859-2?
 4.8 Jak wysłać SMS z poziomu PHP?
 4.9 Czy można ukryć kod PHP?
 4.10 Jak uzyskać dostęp do danych przesłanych formularzem?
 4.11 Jak uruchomić skrypt w regularnych odstępach czasu?
 4.12 Słyszałem o sesjach. Co to jest? Jak ich używać? Gdzie znajdę więcej informacji na ten temat?
 4.13 Jak wysłać list z załącznikiem?
 4.14 Jak sprawdzić poprawność adresu e-mail?
 4.15 Czy w PHP można sprawdzić poprawność numeru...?
  4.15.1 NIP
  4.15.2 REGON
  4.15.3 PESEL
 4.16 Jak zarejestrować funkcję callback, która jest metodą w klasie?
 4.17 Co to jest referencja? Do czego jej użyć?
 4.18 Jak korzystać z plików konfiguracyjnych w stylu php.ini?
 4.19 Jak zoptymalizować kod napisany w PHP?
 4.20 Jak odczytać w PHP rozdzielczość ekranu klienta?
 4.21 Gdzie można znaleźć bazę danych z datami imienin?
 4.22 W jaki sposób umieścić dane wewnątrz istniejącego już pliku tekstowego?
 4.23 Jak zapobiec powtórnemu submitowi formularza?
 4.24 Czemu nie działa mi autoryzacja HTTP?
 4.25 Czemu nie działają mi zmienne globalne po upgradzie?
 4.26 Jak ukryć parametry w adresie strony?
 4.27 Jak sprawdzić, które komputery w sieci są włączone?
 4.28 Czemu nie działa mi funkcja mail na localhoscie?
 4.29 Jak przyspieszyć pracę samego PHP?
 4.30 Jak skonwertować pseudo-unicode odczytany z programu Excel do formatu iso-8859-2?
5 Bezpieczeństwo
 5.1 Jak bezpiecznie skonfigurować PHP?
 5.2 Jak zabezpieczyć pliki PHP przed dostępem osób niepowołanych?
 5.3 Jak zabezpieczyć biblioteki przed odczytem przez WWW?
 5.4 Dlaczego należy używać tablic $HTTP_* zamiast zmiennych globalnych?
6 PEAR (PHP Extension and Application Repository)
 6.1 Co to jest PEAR?
 6.2 Jak zainstalować PEAR?
 6.3 Gdzie można znaleźć najnowszą wersję PEAR?
 6.4 Gdzie można znaleźć dokumentację do PEAR?
 6.5 Dlaczego używać PEAR?
 6.6 Jak sprawdzić poprawność danych?
 6.7 Jak porcjować wyniki zapytania?
 6.8 Jak wysłać maila z załącznikiem lub w formacie HTML?
 6.9 Jak rozwiązany jest dostęp do baz danych w PEAR?
 6.10 Jak PEAR obsługuje upload plików?
 6.11 Szablony w PEAR
  6.11.1 Co to są szablony? Po co ich używać?
  6.11.2 Jak używać szablonów?
 6.12 Jak udawać przeglądarkę?
 6.13 Nie mam / Nie chcę używać sendmaila do wysyłania poczty. Co zrobić?
 6.14 Napisałem dwa różne skrypty/funkcje/algorytmy wykonujące te same zadania. Jak sprawdzić, co jest szybsze?
 6.15 Jak wczytać do tablicy nazwy plików zawartych w danym katalogu lub znaleźć określony plik?


1 Informacje o FAQ

  1.1 Co to jest FAQ? Czemu ma służyć?

FAQ (angielski skrót od Frequently Asked Questions) to zbiór najczęściej zadawanych pytań wraz z odpowiedziami na nie. Pierwsze FAQ powstały najprawdopodobniej w roku 1980 w Stanach Zjednoczonych.
Obecnie czytasz FAQ polskiej grupy usenetowej pl.comp.lang.php. Znajdziesz w nim, zgodnie z tematem grupy, odpowiedzi na najczęściej padające pytania z zakresu języka PHP. Odpowiedzi są najczęściej krótkimi wskazówkami umożliwiającymi samemu rozwiązanie danego problemu. Gdy jest to konieczne zamieszczane są adresy źródeł, w których czytelnik może znaleźć dokładniejsze informacje.
FAQ nie zastąpi zapoznania się z językiem - zalecamy lekturę dokumentacji (lub książek) o PHP. FAQ jest tylko uzupełnieniem informacji, których tam nie znajdziesz.

  1.2 Gdzie można znaleźć najnowszą wersję tego FAQ?

Najnowsza wersja FAQ grupy pl.comp.lang.php jest dostępna pod adresem http://php.faq.pl/. Możesz również pobrać FAQ w formacie spakowanego dokumentu hipertekstowego (HTML), Portable Document Format (PDF), XML oraz tekstowego.
Raz w miesiącu specjalny program wysyła najnowszą wersję FAQ na grupę, aby każdy mógł się z nim zapoznać, w tym także nowe osoby, które dopiero zaczynają swoją przygodę z PHP.

  1.3 Kto tworzy FAQ?

Najprościej byłoby odpowiedzieć krótko - życie grupy. Tak, tak, to właśnie Wy zadając pytania na pl.comp.lang.php tworzycie to FAQ. Istnieje natomiast pewna grupa mniej lub bardziej znanych ludzi, którzy z całych sił starają się, aby to FAQ wyglądało jak najlepiej. Wymieniają oni uwagi dotyczące struktury i zawartości FAQ na specjalnie do tego celu stworzonej liście dyskusyjnej (nie chcemy zaśmiecać grupy niepotrzebnymi postami). Oto oni (kolejność alfabetycznie nazwiskami):

Adam Gołębiowski
Wojciech Jukowski
Leszek Krupiński (koordynator projektu)
Adam Major
Metempsychoza
Lech Rychliński
Paweł Szczepański
Łukasz Lach

  1.4 Czy FAQ jest rozwijane?

Cały czas zbieramy nowe pytania i opracowujemy odpowiedzi na nie. Jeśli masz propozycje pytań i odpowiedzi, bądź sugestie odnośnie już zamieszczonych, zachęcamy do słania listów na adres php@faq.pl.

  1.5 Czy mogę umieścić FAQ na swojej stronie?

Tak, pod warunkiem, że zamieszczona zostanie informacja o pochodzeniu FAQ i miejscu, gdzie się oryginalnie znajduje. FAQ jest udostępniane w wielu formatach, m. in. XML, więc można wpasować je w design swojej strony. Należy się jednak postarać, aby FAQ było udostępniane w możliwie najświeższej wersji.

2 Grupa dyskusyjna pl.comp.lang.php

  2.1 Czego dotyczy grupa?

Grupa jest przeznaczona na dyskusje o programowaniu w języku PHP - instalacja/konfiguracja interpretera, niuanse języka, współpraca z bazami danych, pomocne narzędzia i dodatki, efektywne metody programowania, itd. (http://www.usenet.pl/opisy/pl.comp.lang.php)
Jest to bardzo dobre miejsce do dyskusji na temat "wyższości" jednych rozwiązań (algorytmów) nad innymi.
Pytanie wykraczające poza PHP (np. konfiguracja serwera WWW, wybór języka czy też dowodzenie wyższości jednego języka ponad PHP) powinno trafiać na grupę pl.comp.www.server-side. Problemy poruszające tzw. client-side powinny być wysłane na grupę pl.comp.www. Listy z pytaniami odnośnie baz danych winne być wysłane na pl.comp.bazy-danych. Opisy innych grup (nie tylko komputerowych) znajdziesz pod adresem http://www.usenet.pl/opisy/.

  2.2 Jakie zasady obowiązują na pl.comp.lang.php?

Przypominamy, iż zgodnie z opisem grupy "Zabronione są pytania, na które odpowiedzi można znaleźć w dokumentacji. Zabronione jest także wysyłanie listów zawierających jakiekolwiek binaria (programy, zdjęcia, itp.), jakikolwiek spam oraz dyskusje nie związane z tematem grupy. Nie jest to także miejsce na ogłoszenia reklamowe, nawet jeśli są związane z tematem grupy." Dodatkowo dyskutantów obowiązują takie zasady jak na każdej innej grupie dyskusyjnej - zachęcamy do zapoznania się z Netykietą (http://www.netykieta.prv.pl/). Jedynym odstępstwem jest to, że dużo częściej stosuje się zwrot RTFM (patrz http://php.faq.pl/klucz/RTFM), ponieważ większość problemów rozwiązuje przeczytanie manuala, od którego wskazane jest zacząć korzystanie z PHP (adres dokumentacji można znaleźć w rozdziale 3.10 - http://php.faq.pl/klucz/php_dok).

  2.3 Gdzie można znaleźć archiwum grupy?

Grupa powstała 16 sierpnia 2001. Serwery newsowe przechowują wiadomości z ostatniego miesiąca. Archiwalne posty z grupy pl.comp.lang.php można przeglądać korzystając z serwisów http://groups.google.com/groups?q=pl.comp.lang.php, http://niusy.onet.pl/niusy.html?t=aktualne&group=pl.comp.lang.php lub http://www2.gazeta.pl/usenet/704354,27013.html?group=pl.comp.lang.php

  2.4 Jakie napisać zapytanie SQL, żeby...

Takie pytania należy zadawać na grupie dyskusyjnej pl.comp.bazy-danych. Można także sprawdzić w FAQ tej grupy (http://www.dbf.pl/faq/) czy nie padła już odpowiedź na Twoje pytanie.

  2.5 Raz po raz widzę w odpowiedzi skróty RTFM lub NTG. Co one oznaczają?

RTFM - Read The Friendly (ew. Fucking) Manual. Jeśli dostałeś taką odpowiedź, to znaczy że odpowiedź na Twoje pytanie można znaleźć czytając podręcznik PHP (gdzie go znaleźć -> http://php.faq.pl/punkt/3.10).
NTG - Not This Group, Nie Ta Grupa. Twoje pytanie nie pasuje do tematyki grupy pl.comp.lang.php - zazwyczaj razem z taką odpowiedzią podawana jest nazwa grupy, na której należy zadać to pytanie.
Znaczenie innych stosowanych częściej lub rzadziej akronimów znajdziesz na http://www.republika.pl/krzywish/skroty.htm.

  2.6 Dlaczego nikt nie odpowiada na moje pytanie?

Może być kilka powodów, dlaczego nie dostałeś(aś) odpowiedzi:
- minęło zbyt mało czasu, aby ktoś zdążył przeczytać Twój list i wysłać odpowiedź.
- twój list był nie na temat
- twoje pytanie było tak "banalne", że nikomu nie chciało się na nie odpowiadać
- pytanie było zbyt trudne i nikt na nie nie zna odpowiedzi.

  2.7 Grupa pl.comp.lang.php nie spełnia moich oczekiwań. Gdzie jeszcze można podyskutować o PHP?

Z polskojęzycznych grup poświęconych PHP i okolicom istnieją:

pl.comp.www.server-side - grupa poświęcona wszelkim sprawom związanym z otoczeniem serwerowym służącym do "serwowania" stron WWW a więc językom server-side (jak PHP, ASP, Perl, Python, JSP i inne), serwerom HTTP (Apache, IIS itp.).
pl.comp.bazy-danych - grupa poświęcona bazom-danych. Jeśli programując w PHP korzystasz z baz danych warto tam zajrzeć aby dowiedzieć się o sprawach niezwiązanych z samym PHP a raczej często spotykanym "jak skonstruować zapytanie do bazy danych aby..."

Z obcojęzycznych:
Tutaj jest już większy wybór. Praktycznie każdy kraj ma własną grupę związaną z PHP (*.php) więc trzeba poszukać.

Odnośnie forum dyskusyjnego, to polecamy polskie http://www.ygreg.com/forum/ oraz angielskojęzyczne http://www.phpbuilder.com/forum/

Jeśli preferujesz odpowiedzi na żywo możesz odwiedzić kanały IRC (Internet Relay Chat). Polskojęzyczne #phppl oraz #php.pl oraz anglojęzyczny #php w sieci IRCNET, bądź też #php, #php-gtk w sieci EFNET.

3 Podstawy PHP

  3.1 Co to jest PHP? Co oznacza skrót PHP?

PHP (skrót od "PHP: Hypertext Preprocessor") jest wtrąconym w HTML językiem skryptowym wykonywanym po stronie serwera. Znaczy to mniej więcej tyle, że kod PHP jest wstawiany w normalne strony WWW, natomiast specjalny program wykonuje instrukcje zawarte pomiędzy (względnie pomiędzy ). Pierwsza wersje powstała w roku 1994 (jej autorem był Rasmus Lerdorf). Od wprowadzenia wersji 2 do Rasmusa przyłączały się nowe osoby tworząc PHP Group of core developers. Wersja PHP 3 w krótkim czasie stała się bardzo popularna (zastosowania PHP 3 zaskoczyły samych autorów). Nad rozwojem wersji 4 pracował sztab ludzi, efekty ich pracy możesz na bieżąco podziwiać.

  3.2 Do czego potrzebne jest PHP?

PHP jest przydatne do tworzenia dynamicznie generowanych stron WWW, gdzie zachodzi potrzeba wyświetlania różnych danych zależnie od wyboru użytkownika, bądź zawartości bazy danych. Pozwala również wykonywać wiele czynności które na pozór maja mało wspólnego ze stronami internetowymi (np. działanie na plikach, symulacja działania przeglądarki, pobieranie oraz wysyłanie informacji do bazy danych czy nawet tworzenie nowych obrazków czy dokumentów PDF oraz wiele, wiele więcej).

  3.3 Jakie są największe różnice pomiędzy PHP3 a PHP4?

Tworząc PHP 4 autorom przeświecało kilka głównych celów:
- nowa implementacja musi być szybka
- musi być modułowa
- musi zostać zachowana kompatybilność z PHP 3
- musi być łatwo rozszerzalne.
nowemu silnikowi nadano nową nazwę - Zend Engine

Główne różnice to:
- rozszerzony moduł API
- ulepszona współpraca z serwerami WWW
- poprawiony podświetlacz składni
- wbudowana obsługa sesji HTTP
- buforowanie wyjścia
- zwiększone możliwości konfiguracji
- zliczanie referencji

Więcej informacji znajdziesz na stronie http://www.php.net/ oraz http://www.zend.com/

  3.4 Skąd wziąć PHP?

PHP można pobrać ze strony głównej projektu: http://pl.php.net/downloads.php, a także z wielu mirrorów. Użytkownikom systemu Windows przypominamy, iż zostały przygotowane dwie skompilowane wersje binarne dla owej rodziny systemów operacyjnych. Pragniemy również zwrócić uwagę, iż wersje różnią się m.in. ilością dołączonych bibliotek.
Można także zajrzeć na stronę http://snaps.php.net/ gdzie znajdują się stabilne oraz dopiero rozwijane migawki pakietu tworzone na podstawie zasobów CVS co kilka godzin.

  3.5 Jak skompilować PHP?

Kompilacja PHP wygląda tak samo jak w przypadku każdego programu używającego pakietu automake. A więc w przypadku Linuksa będąc w katalogu zawierającym źródła PHP należy kolejno wydać polecenia:
./configure (+ew. opcje, opis tych opcji można znaleźć tu: http://php.faq.pl/klucz/configure)
make
make install
Ostatnie polecenie musi być wydane z konta administratora.
Po udanej kompilacji i instalacji należy zrestartować serwer WWW.
Do kompilacji, oprócz kompilatora języka C, potrzebne są jeszcze programy Make i Lex (oba dostępne są w każdej dystrybucji Linuksa).

  3.6 Jakie opcje można podać przy kompilacji PHP?

Pełną listę opcji, jakie można podać przy kompilacji PHP, można znaleźć w dokumentacji PHP, w tym także w polskim tłumaczeniu.
http://pl.php.net/manual/pl/configuration.php#ini.sect.general
Informacja gdzie można znaleźć dokumentację PHP znajduje się w punkcie 3.10.

  3.7 Czy PHP ma plik konfiguracyjny? Co można w nim ustawić?

PHP posiada plik konfiguracyjny. Można w nim ustawić najważniejsze opcje dotyczące pracy PHP, bezpieczeństwa, sesji, baz danych i ogólnej wydajności PHP. Dokładny opis można znaleźć w podręczniku PHP pod adresem http://pl.php.net/manual/pl/configuration.php
Zobacz także pytanie 3.25.

  3.8 Z jakim serwerem WWW może współpracować PHP?

Współpracuje z serwerami: Apache, Caudium, IIS/PWS, iPlanet, Netscape, OmniHTTPd, Oreilly Website Pro, Xitami.

Oraz z większością serwerów obsługujących CGI, niestety wtedy PHP jest dostępne tylko i wyłącznie w wersji CGI.

  3.9 Z jakimi bazami danych współpracuje PHP?

W chwili obecnej PHP współpracuje z następującymi bazami danych: Adabas D, dBase, Empress, FilePro (read-only), IBM DB2, Informix, Ingres, InterBase, FrontBase, mSQL, MS-SQL, MySQL, ODBC, Oracle (OCI7 i OCI8), PostgreSQL, Solid, Sybase, Velocis, Unix dbm.

  3.10 Skąd można czerpać informacje o PHP w Internecie?

Podstawowym źródłem informacji o PHP jest manual - podręcznik napisany przez twórców PHP bardziej lub mniej szczegółowo opisujący poszczególne funkcje. Można go czytać on-line na stronie http://pl.php.net/manual/pl/, a także pobrać na dysk w różnych formatach ze strony http://pl.php.net/download-docs.php.
Istnieje także wiele kursów on-line dotyczących podstaw korzystania z PHP. Można je znaleźć między innymi pod adresami:
- http://ygreg.com/
- http://www.leon.w-wa.pl/texts/kurs/

  3.11 Czy są jakieś książki o PHP?

Książek jest multum (na polskim i zagranicznym rynku) i raczej trudno polecić jakąś nie znając poziomu programowego czytelnika oraz jego zainteresowań. Warto rozeznać się na paru stronach poświęconych tematowi i wyrobić sobie własne zdanie na temat przydatności niektórych pozycji:

Księgarnie:
http://www.helion.pl/ (ok. 9 pozycji)
http://www.lideria.pl/ (PHP - ok. 15 pozycji)
http://www.techniczna.com.pl/ (PHP - ok. 20 pozycji)

Recenzje i opisy:
http://www.e-marketing.pl/lit_webmaster.php

Książki po angielsku:
http://www.hotscripts.com/PHP/Books/ (ok. 28 pozycji)

Powyższe linki to na pewno dobry początek do dalszych poszukiwań ...

A jeśli na prawdę nie chce ci się odwiedzać tych stron to mówiąc w dużym skrócie i uproszczeniu:
dla początkujących polecana jest "Biblia PHP4" wydawnictwa Helion, a dla bardziej zaawansowanych "PHP: Tworzenie Aplikacji" ;-)

  3.12 Gdzie można znaleźć skrypt, który...

Największe archiwum skryptów PHP (aplikacji, bibliotek) to http://www.hotscripts.com/PHP/Scripts_and_Programs/, a także http://www.zend.com/codex.php. Z kolei największą biblioteką klas PHP jest serwis http://www.phpclasses.org/. Warto też pamiętać o PEAR (http://pear.php.net/), repozytorium klas, które jest dołączane do dystrybucji PHP. Wiele skryptów można znaleźć także w centrach oprogramowania OpenSource: http://freshmeat.net/, http://sourceforge.net/ i http://www.opensourcedirectory.org/

  3.13 Jakie serwisy Internetowe możecie polecić osobom znającym PHP?

Temat rzeka !!! Można zacząć od poniższych linków ale pamiętajcie, że lista ta jest mocno subiektywna:
http://www.strefaphp.net/
http://www.php5.pl/
http://www.scrypty.com/
http://www.php.pl/
http://www.php.org.pl/
http://pl.php.net/ - zobacz też od razu: http://pl.php.net/links.php
http://www.abczone.com.pl/indexphp.php

http://www.phpbuilder.com/
http://www.devshed.com/Server_Side/PHP/
http://www.weberdev.com/
http://hotscripts.com/PHP/
http://www.phpwizard.net/
http://www.zend.com/
http://www.php-scripts.com/

Ponadto polecamy:
- przeszukać archiwa grupy gdzie padały podobne pytania,
- czytać stopki coponiektórych grupowiczów w poszukiwaniu ciekawych adresów,
- zadać pytanie wyszukiwarce w stylu: +serwisy +PHP +skrypty -sex ;-))

  3.14 W jakim edytorze pisać skrypty PHP?

Skrypty PHP można pisać w dowolnym edytorze, który ma możliwość zapisywania danych do czystego tekstu. Istnieją jednak edytory tekstu, które mają wbudowane wspomaganie dla edytowania skryptów PHP, np. kolorowanie składni, możliwość definiowania makr czy autoindentację. Poniżej znajduje się lista edytorów, które takie wspomaganie posiadają.

Edytory niezależne od platformy:
- jEdit (http://jedit.org/)
- SciTE (Scintilla) (http://www.scintilla.org/SciTE.html)
- VIm (http://vim.sourceforge.net/) - pod adresem http://www.leon.w-wa.pl/texts/vim-php.php znajduje się artykuł na temat pisania kodu PHP przy użyciu VIMa
- phpmole (http://phpmole-ide.sourceforge.net/)

Edytory pod Windows:
- Fox Edit (http://www.fox.com.pl/foxedit/) - Free for non-commercial use
- UltraEdit (http://ultraedit.com/)
- HomeSite (http://www.macromedia.com/homesite/)
- EditPlus (http://editplus.com/)
- EzHTML (http://ezhtml.bydnet.com.pl/)
- EDHTML (http://edhtml.binboy.org/)
- PHPEd (http://www.soysal.com/PHPEd/)
- Crimson Editor (http://crimsoneditor.com/)
- PHP Coder (http://www.phpide.de/) (program daleki jest od doskonałości - niepolecany)
- PHPEdit (http://www.phpedit.net/)
- Pajączek (http://www.creamsoft.com.pl/pajaczek/) - produkt polski
- Zend Studio - Personal Edition (wersja 2.0.1 dostępna za darmo) - http://www.zend.com/

Edytory pod Linuksa (wszystkie do znalezienia przez http://freshmeat.net/):
- Quanta
- BlueFish
- Screem
- nedit (http://nedit.org/)
- mcedit - edytor wbudowany w Midnight Commandera, potrzeba jednak pobrać plik z podświetleniami - http://php.faq.pl/php3.syntax, przegrać go do katalogu /usr/lib/mc/syntax/ a w pliku ~/.cedit/Syntax dopisać:


file ..\*\\.php(3|4|s)??$ PHP\sScript
include php3.syntax



Liste edytorów wspierających PHP można znaleźć również na stronie: http://phpeditors.linuxbackup.co.uk/index.php

  3.15 Jak napisać skrypt, który...

Zasadniczo sprawa wygląda tak:
- siadasz przed kartką
- rozpisujesz problem
- analizujesz możliwości rozwiązania
- w manualu sprawdzasz, czy są tam funkcje które są ci niezbędne
- piszesz

Jeśli nie bardzo wiesz jak coś napisać, podpatrz jak to jest zrobione u konkurencji. W ostateczności spytaj na grupie dyskusyjnej.

  3.16 Korzystam ze skryptu X, który nie chce działać. Co zrobić?

1. Sprawdź prawa dostępu do pliku
2. Sprawdź czy pliki mają odpowiednie rozszerzenia - przypisane do PHP
3. Sprawdź konfigurację skryptu (jeśli takowa istnieje)
4. Sprawdź czy któryś z komunikatów błędów nie jest opisany w tym FAQ

...

10000. W ostateczności skontaktuj się z autorem lub zapytaj się na grupie pl.comp.lang.php (tylko nie zadawaj pytania "Skrypt X nie działa. Co mam robić?" - sprecyzuj co to znaczy "nie działa": jakie pojawiają się komunikaty, jakie masz wersje serwera WWW, PHP, jaki system operacyjny oraz w jakich okolicznościach pojawia Ci się dany błąd)

  3.17 Czy znacie bezpłatne serwery, które obsługują PHP?

http://free.komrel.net/
http://www.xo.pl/
http://www.piwko.pl/

http://www.unas.cz/
http://www.host.sk/
http://www4.dk3.com/dk3hosting.html
http://www.spaceports.com/freesites/
http://www.united.net.kg/
http://www.fateback.com/
http://www.xoasis.com/
http://www.tripod.lycos.co.uk/
http://www.breezeland.com/
http://www.portland.co.uk/freesubdomainapp.esp

Sponsoring/ ograniczona tematyka:
http://webhosting.bootbox.net/freehosting (wymagany zakup domeny)
http://www.planet-school.de/webspace/index.htm (tylko szkoły)
http://www.gery.pl/
http://www.bajo.pl/
http://fpp.pl/
http://www.fivnet.com/

Zestawienie zagranicznych serwerów oferujących hosting wraz z PHP bezpłatnie można znaleźć pod adresami:
http://free-php.cjb.net/
http://www.free-php-hosting.com/
http://www.free-webhosts.com/power-search.php
http://www.freewebspace.net/forums/
http://www.25mb.net/signup.php
http://www.zingto.com/signup.php
http://hostsearch.com/

  3.18 Gdzie mogę się pochwalić moim skryptem PHP?

Można to zrobić na różnych serwisach gromadzących informacje o skryptach PHP:
- http://hotscripts.com/
- http://freshmeat.net/
- http://www.zend.com/
Istnieje także serwis, który gromadzi tylko klasy PHP:
- http://phpclasses.upperdesign.com/

  3.19 Czy z poziomu PHP można tworzyć grafikę?

Tak. Służy do tego zestaw funkcji opisanych w manualu pod nazwą "Image functions" (http://pl.php.net/manual/pl/ref.image.php). PHP jest w stanie tworzyć proste obrazki (rysowanie okręgów, prostokątów, linii), modyfikować istniejące, dodawać tekst (używając wbudowanych czcionek lub fontów TTF), zmieniać rozmiar itp.

  3.20 Czy w PHP można tworzyć tylko strony internetowe?

Nie, nie tylko. HTML jest domyślnym typem wysyłanym przez PHP, ale można to łatwo zmienić umieszczając linijkę:

 header('Content-type: twój_typ');
?>

gdzie twój_typ to typ mime pliku który chcesz wysłać do użytkownika (np. image/gif czy text/xml). Dalej już osobiście musisz zadbać, aby wszystkie dane wysyłane do klienta były w formacie jaki został zdefiniowany na początku.

  3.21 Czy z poziomu JavaScript można wywołać funkcję PHP?

Nie, nie można. PHP jest językiem wykonywanym po stronie serwera a JavaScript po stronie klienta. A więc jak zaczyna działać JavaScript to PHP już dawno skończył swoje działanie - strona została wysłana do klienta.

  3.22 Co to są wyrażenia regularne i do czego służą?

Na ten temat napisano już książki-biblie, pośród których najlepszą jest ta, o dość wyszukanym tytule "Wyrażenia regularne", autorstwa Jeffrey'a E. F. Friedl'a. Wyrażenia regularne to ogromne narzędzie dostarczające możliwości zaawansowanych manipulacji oraz porównań na ciągach znaków. "Regular Expressions" jest implementowane w wielu innych językach (np. JavaScript). Wyrażenia regularne możemy stosować w takich funkcjach PHP jak: ereg(), ereg_replace(), eregi(), eregi_replace(), split(), spliti().
http://pl.php.net/manual/pl/ref.regex.php

Dla ciekawskich można wspomnieć, że powyższe funkcje korzystają z rozszerzonej składni POSIX dla wyrażeń regularnych i nie są to jedyne funkcje PHP działające na wyrażeniach.
Osoby znające Perl'a mogą używać innych funkcji: preg_*(). Jest tam stosowana składnia wyrażeń zgodna właśnie z tym językiem, trochę odmienna od tej wykorzystywanej w ereg().
http://pl.php.net/manual/pl/ref.pcre.php
Regular Expression Details:
http://pl.php.net/manual/pl/pcre.pattern.syntax.php

Przykład:
Proste sprawdzenie poprawności adresu e-mail:

if (! ereg ("^.+@.+\..+$", $email))
    echo 'Nieprawidłowy adres e-amil!';

A przekładając to na nasz język:
adres ma zaczynać się (^) od jednego lub więcej (+) dowolnych znaków (.), potem jest małpa (@), znowu jeden lub kilka znaków (.+), kropka (\.) i zakończenie stringa ($) dowolnym znakiem.

Na początek możesz zobaczyć poniższe tutoriale:
http://www.leon.w-wa.pl/texts/kurs/text.php#regex
http://www.phpbuilder.com/columns/dario19990616.php3

  3.23 Czym różni się include() i require()?

Podstawową różnicą jest to, że przy require() plik jest zawsze wstawiany - takie copy/paste. Przy include() plik jest wstawiany tylko jeśli ta instrukcja będzie parsowana.
Przykład: mamy plik require.inc.php:

 echo 'coś tam';
 echo 
'coś innego';
?>

No i chcemy to wykorzystać

 if ($test) {
   require(
'require.inc.php');
 }
?>

zawsze zostanie zamienione na

 if ($test) {
   echo 
'coś tam';
   echo 
'coś innego';
 }
?>

Natomiast jeśli zamiast require() użyjemy include(), to plik zostanie wstawiony tylko jeśli zostanie spełniony warunek $test. Dlatego też przy instrukcjach warunkowych ma sens tylko stosowanie include().

Dodatkowo trzeba pamiętać, że require() jest wykonywane tylko raz. Nie ma więc sensu wstawianie require() do pętli, w czasie której zmienia się nazwa pliku do pobrania, ponieważ plik ten zostanie wstawiony tylko za pierwszym razem, a każdej następnej iteracji będzie używany kod wstawiony za pierwszym razem.

  3.24 Jakie nowości zostały wprowadzone w PHP 4.1.0?

W PHP 4.1.0 dodanych zostało 7 nowych tablic asocjacyjnych (istnieją one wspólnie z już znanymi tablicami $HTTP_*_VARS):
- $_GET - zawiera wartości z formularzy przesłanych metodą GET
- $_POST - zawiera wartości z formularzy przesłanych metodą POST
- $_COOKIE - zawiera ciasteczka HTTP
- $_SERVER - zawiera zmienne serwera (np. REMOTE_ADDR)
- $_ENV - zawiera zmienne środowiskowe
- $_REQUEST - zawiera połączone tablice $_GET, $_POST i $_COOKIE
- $_SESSION - zawiera zmienne HTTP rozpoznane przez moduł sesji

Tablice te są dostępne z każdego miejsca kodu. Nie potrzeba używać instrukcji global aby uzyskać do nich dostęp z wnętrza funkcji. Dotychczas stosowane w PHP tablice $HTTP_*_VARS niestety tego wymagały. Mamy oczywiście nadal możliwość wyboru z których zmiennych chcemy korzystać.
Dodatkowa możliwość związana jest z tablicą $_SESSION. Dodanie nowego elementu do tej tablice spowoduje zarejestrowanie nowej zmiennej sesyjnej.

Uwaga: Od wersji 4.2.0 opcja register_globals domyślnie jest ustawiona na OFF co powoduje, że zmienne dostępne są tylko w w/w tablicach.

  3.25 Gdzie znajduje się plik konfiguracyjny PHP?

W systemach Uniksowych plik ten znajduje się domyślnie w katalogu /usr/local/lib i nazywa się php.ini. W Windows jest to główny katalog systemu - standardowo C:\WINDOWS albo C:\WINNT. Lokalizację tego pliku można zmienić przy kompilacji podając parametr --with-config-file-path=/ścieżka/do/pliku. Jeśli ścieżka do tego pliku została zmieniona przy kompilacji i trzeba ją znaleźć, to pokazana jest ona w tabelce wyświetlanej przez funkcję phpinfo().

  3.26 Jaka jest różnica w zastosowaniu isset() i !empty() ?

Przeprowadźmy prostą analizę:
Pewna zmienna $var może:
a) nie istnieć,
b) być pusta (także równać się zero !),
c) mieć jakąś wartość,

isset($var) - daje TRUE gdy $var jest b) lub c), FALSE gdy a)
empty($var) - daje TRUE gdy $var jest a) lub b), FALSE gdy c)

a słownie:
isset($var) - daje FALSE jedynie gdy $var nie istnieje
empty($var) - daje FALSE jedynie gdy $var ma jakąś wartość (uważaj na zero!)

Reasumując:
Stosujemy empty() jeśli chcemy mieć pewność, że otrzymaliśmy jakąś wartość w $var (nie uwzględniamy niestety kłopotliwego przypadku (int)$var=0) bez względu na to czy zmienna będzie istnieć czy nie.
Empty() nie generuje żadnego 'Warning' i sprawdza dwie rzeczy za jednym zamachem.

4 Porady praktyczne

  4.1 Co oznacza błąd...

    4.1.1 Cannot add header information - headers already sent by...

Oznacza to że przed nagłówkiem wysłano już jakieś dane (np pustą linię przed "

    4.1.2 open(/tmp\sess_[...], O_RDWR) failed: m(2)

Ustaw ścieżkę do katalogu w którym mają być przechowywane sesje. Możesz to zrobić w pliku php.ini, sekcja [Session]:
session.save_path = /dir
lub bezpośrednio w skrypcie (koniecznie przez inicjacją sesji) za pomocą funkcji session_save_path ("/dir"). Pamiętaj by katalog dir istniał a PHP miało prawo do zapisu w nim.

    4.1.3 Unexpected character in input...

W wyrażeniu regularnym nie "zneutralizowałeś" backslashem jednego ze znaków specjalnych:
(. \/ + * ? [ ^ ] $ ( ) { } = ! < > | :)
Jeśli jesteś leniwy i nie chce ci się tego robić ręcznie (lub dane składające się na wyrażenie pochodzą z zewnątrz) przepuść wyrażenie przez preg_quote().

    4.1.4 Cannot redeclare [class] foo()...

Twoja funkcja lub klasa została już wcześniej zadeklarowana. Sprawdź czy nazwa funkcji nie jest identyczna jak któraś z wbudowanych w PHP (użyj function_exists(), get_defined_functions() ).
Być może dwukrotnie dołączyłeś ten sam plik z zadeklarowaną funkcją; zrezygnuj ze stosowania include(), require() na rzecz include_once(), require_once()

    4.1.5 Call to undefined function: ...

Taki błąd pojawia się jeśli użyto funkcję, która nie jest zdefiniowana. Jeśli funkcję, którą chcesz użyć, sam zdefiniowałeś, to sprawdź czy nie popełniłeś literówki przy wpisywaniu nazwy (w użyciu bądź w definicji), a jeśli znajduje się w innym pliku to czy plik ten jest dołączany. Jeśli natomiast chcesz użyć funkcję wbudowaną w PHP i jesteś pewny, że nazwa jest dobrze napisana, to najprawdopodobniej nie masz odpowiedniego modułu wkompilowanego w PHP lub dynamicznie dołączonego, np. dla funkcji dotyczących obróbki obrazów niezbędne jest podanie przy kompilacji opcji --with-gd (lub dołączenie odpowiedniego modułu).

    4.1.6 Failed opening 'foo.php' for inclusion (include_path='.')

Klasyczny błąd który mówi sam za siebie. Plik który próbujesz includować nie istnieje, nie masz do niego odpowiednich praw lub podana ścieżka dostępu jest nieprawidłowa.

    4.1.7 Maximum execution time of 30 seconds exceeded in...

Najprawdopodobniej wpadłeś w nieskończoną pętlę lub twój skrypt wykonuje czasochłonną operację (np. analizuje logi 20 MB). Jeśli uważasz że trzydzieści sekund to dla ciebie zbyt mało zmień to za pomocą funkcji set_time_limit() lub w php.ini dyrektywą max_execution_time

    4.1.8 First argument to array_*() should/needs to be an array

Zapomniałeś o czymś ważnym, mianowicie o zadeklarowaniu tablicy. Zazwyczaj nie jest to konieczne, lecz przy funkcjach z rodziny array_* lepiej o tym pamiętać. Zwykłe $array = array() przed wywołaniem funkcji i już po problemie.

    4.1.9 Supplied argument is not a valid MySQL result resource

Błąd ten oznacza, że zapytanie wydane funkcją mysql_query() nie zwróciło prawidłowego wyniku. Może to oznaczać, że albo zapytanie było błędne (komunikat błędu można odczytać wywołując funkcję mysql_error() ) albo nie zwróciło żadnych rekordów. W tym drugim przypadku, przed odwoływaniem się do wyników należy sprawdzić ilość rekordów zwróconych przez zapytanie korzystając z funkcji mysql_num_rows().

  4.2 PHP nie zgłosił żadnego błędu, ale skrypt nie działa poprawnie bądź PHP zawiesza się przy jego wykonywaniu. Co zrobić?

Aby mieć pewność, że PHP na pewno nie zgłasza żadnych komunikatów ustaw w swoich plikach error_reporting(E_ALL). Jeśli PHP się zawiesza to może należy skontrolować poprawność instalacji (albo np. wersję PHP - może jest za stara ;-) lub dostępność zasobów z jakich korzystasz w skrypcie (baza danych, pliki, sockets, ...)

Kilka możliwych problemów jest opisanych w pliku install.txt dołączonym do każdej dystrybucji PHP. W akapicie "Problems?" można znaleźć takie sugestie (w skrócie):
- wykonaj skrypt: i zobacz co otrzymałeś,
- po wykonaniu swojego skryptu zajrzyj do źródła wygenerowanego dokumentu,
- odpal w katalogu PHP komendę: "php -i" i zobacz zwrócone komunikaty. Jeśli otrzymałeś standardowe phpinfo() to problem powinien leżeć po stronie serwera WWW,
- sprawdź prawa dostępu do własnych skryptów oraz takich plików jak php.exe, php4ts.dll, php.ini,

Możesz także zajrzeć na stronkę http://www.php.net/FAQ.php gdzie znajdziesz odpowiedzi na najczęściej występujące kłopoty użytkowników.

Warto również zobaczyć punkt 4.19 (optymalizacja kodu) w tym FAQ.

  4.3 Jak korzystając z PHP ograniczyć dostęp do strony, bądź pozbawić kogoś całkowicie dostępu do witryny?

Możemy skorzystać z autoryzacji HTTP. Jak to zrobić opisane jest w rozdziale 18 w manualu (http://www.php.net/manual/pl/features.http-auth.php). Ograniczeniem jest to, że PHP musi działać jako moduł Apache'a, nie jako CGI.

Inny sposób na pozbawienie kogoś dostępu do witryny to odpowiednia konfiguracja serwera WWW. Np. dla Apache to pliki .htaccess i .htpasswd:
http://httpd.apache.org/docs/howto/auth.html#basicconfig

  4.4 Mam kilka skryptów do wyboru. Który polecacie?

Najlepiej jest wybrać taki skrypt, który najbardziej odpowiada Twoim potrzebom. Warto też zwrócić uwagę na sposób instalacji (dołączenia) tego skryptu do swojej strony, popularność skryptu (im bardziej popularny, tym większa szansa na jego rozwój i wychodzenie bardziej dopracowanych wersji), oraz inne czynniki które są zmienne w zależności od naszych wymagań, możliwości serwera, typu strony na jakiej chcemy ten skrypt umieścić, możliwość ewentualnej rozbudowy/lep



Dodaj do ulubionych
Drukuj

Powered by WHMCompleteSolution


J?zyk:


Copyright 2009-2010 GLS-Internet Ltd. Wszelkie prawa zastrze?one.
 
 

Google Analytics Alternative

Clicky