PHP BLOG 2
Rodzaje błędów
W każdym języku są 3 rodzaje błędów: składni, logiczne i wykonania
Błędy składni:
- Komunikaty o wystąpieniu błędu, np: parse error expected ';' in (sciezka do pliku) on line (linijka z błędem)
Błędy składni są najłatwiejsze do wykrycia, więc każdy sobie powinien z nimi poradzić.
Błędy logiczne:
- Brak żadnych komunikatów, po prostu pokazuje nie to co byśmy chcieli
Błędy logiczne są najtrudniejsze do wykrycia, ale na szczęście występują rzadko w kodzie.
Błędy wykonania:
Komunikaty, np.: main() [function.require]: Failed opening 'cos.php' (sciezka do pliku) on line (numer wiersza)
Są to błędy trudniejsze do poprawienia, chociaż nie aż takie straszne ; ).
Predefiniowane zmienne
Począwszy od wersji 4.1.0, PHP udostępnia zestaw predefiniowanych tablic, które zawierają zmienne serwera, zmienne środowiskowe oraz zmienne użytkownika. Tablice te są dość specyficzne, gdyż są one automatycznie globalne, tzn. automatycznie dostępne w każdym zasięgu. Dlatego nazywa się je "autoglobalami" albo "superglobalami". (W PHP nie ma mechanizmu pozwalającego użytkownikowi na definiowanie własnych superglobali.) - (informacja z www.php.net). Najczęściej wykorzystywane tablice opisane zostały poniżej.
PHP udostępnia dużą ilość predefiniowanych zmiennych dla każdego pracującego skryptu. Jednakże wiele spośród tych zmiennych nie może być w pełni objaśnionych, gdyż są zależne od rodzaju serwera, jego wersji i ustawień i innych czynników. Niektóre z tych zmiennych nie będą dostępne dla skryptów PHP uruchomionych z linii poleceń.
Niezależnie od wymienionych czynników, poniżej przedstawiamy listę predefiniowanych zmiennych, dostępnych w typowej instalacji PHP 3, działającej jako moduł typowej instalacji Apache 1.3.6.
$GATEWAY_INTERFACEOkreśla wersję specyfikacji CGI obsługiwaną przez serwer, np. "CGI/1.1".
$SERVER_NAMENazwa hosta serwera, na którym skrypt jest wykonywany. Jeśli skrypt pracuje na hoście wirtualnym (ang. virtual host), zmienna będzie zawierać nazwę hosta wirtualnego.
$SERVER_SOFTWARENapis identyfikujący serwer, wysyłany z nagłówkami przy odpowiedzi na zapytanie.
$SERVER_PROTOCOLNazwa i wersja protokołu informacyjnego, przez który zostało wysłane zapytanie, np. "HTTP/1.1".
$REQUEST_METHODMetoda, która została użyta przy zapytaniu o dokument, np. "GET", "HEAD", "POST".
$QUERY_STRINGŁańcuch zapytania (np. ?foo=bar), o ile istnieje, jaki został przesłany z zapytaniem o stronę.
$DOCUMENT_ROOTFolder główny na serwerze, taki jak określony w pliku konfiguracyjnym serwera.
$HTTP_ACCEPTZawartość nagłówka Accept: z aktualnego zapytania, o ile taki występuje.
$HTTP_ACCEPT_CHARSETZawartość nagłówka Accept-Charset: z aktualnego zapytania, o ile taki występuje, np. "iso-8859-1,*,utf-8". 'iso-8859-1,*,utf-8'.
$HTTP_ACCEPT_ENCODINGZawartość nagłówka Accept-Encoding: z aktualnego zapytania, o ile taki występuje, np. "gzip".
$HTTP_ACCEPT_LANGUAGEZawartość nagłówka Accept-Language: z aktualnego zapytania, o ile taki występuje, np. "en".
$HTTP_CONNECTIONZawartość nagłówka Connection: z aktualnego zapytania, o ile taki występuje, np. "Keep-Alive".
$HTTP_HOSTZawartość nagłówka Host: z aktualnego zapytania, o ile taki występuje.
$HTTP_REFERERAdres strony (o ile występuje) z której przeglądarka przeszła do tej strony. Nagłówek jest tworzony przez przeglądarkę użytkownika; nie wszystkie przeglądarki udostępniają taką informację.
$HTTP_USER_AGENTZawartość nagłówka User_Agent: z aktualnego zapytania, o ile taki występuje. Jest to napis identyfikujący oprogramowanie klienckie używane do obejrzenia danej strony, np. Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Można użyć tej informacji w połączeniu z get_browser(), aby dopasować stronę do możliwości przeglądarki użytkownika.
$REMOTE_ADDRNumer IP zdalnego użytkownika przeglądającego stronę.
$REMOTE_PORTPort używany na zdalnej maszynie, przez który następuje komunikacja z serwerem.
$SCRIPT_FILENAMEBezwzględna ścieżka do aktualnie wykonywanego skrytpu.
$SERVER_ADMINWartość podana w dyrektywie SERVER_ADMIN (dla Apache'a) w pliku konfiguracyjnym serwera. Jeśli skrypt jest uruchomiony na hoście wirtualnym, wtedy będzie to wartość określona dla tego hosta wirtualnego.
$SERVER_PORTPort na serwerze, używany przez serwer www do komunikacji. Domyślnie jest to "80"; przy użyciu SSL, na przykład, będzie to numer portu na którym odbywają się zabezpieczone połączenia HTTP.
$SERVER_SIGNATURENapis zawierający nazwę i wersję serwera, oraz nazwę wirtualnego hosta, który jest dodawany do stron generowanych przez serwer, o ile włączony.
$PATH_TRANSLATEDBezwzględna ścieżka do pliku, oparta na systemie plików (a nie wychodząca z folderu głównego serwera), określona po wykonaniu przez serwer ewentualnego mapowania ścieżki wirtualnej do rzeczywistej.
$SCRIPT_NAMEZawiera ścieżkę do aktualnego skryptu. Przydatne przy stronach, które mają wskazywać na siebie same.
$REQUEST_URIURI, który został podany, aby uzyskać dostęp do aktualnej strony, np. "/index.htmlPrzykład:$_SERVER['HTTP_USER_AGENT'Zmienna ta zawiera sygnaturę przeglądarki, z której korzysta gość odwiedzający naszą stronę. Przy pomocy funkcji get_browser() możesz dowiedzieć się, co obsługuje przeglądarka gościa, a co nie i odpowiednio przygotować generowaną stronę.
Operatory
Operatory są to najprościej mówiąc symbole, które służą do operacji na zmiennych. Operatory dzielą się na operatory arytmetyczne, które służą do operacji na liczbach, operatory przypisania służące do przypisywania zmiennym wartości, operatory operacji bitowych, operatory porównania niezbędne do instrukcji warunkowych, operator kontroli błędów, operator wykonania służący do uruchamiania zewnętrznych programów, operatory inkrementacji i dekrementacji, operatory logiczne i operatory ciągu.
Operatory arymetyczne
Operator przypisania
Podstawowym operatorem przypisania jest symbol ‚=’. Oczywiście nie oznacza on ‚jest równe’. Wyrażenie $b = 5 oznacza, że zmienna $b przyjmuje wartość równą 5. Zmiennej można przypisać także wartość innej zmiennej: $b = 5; $a = $b; – zmienna $a przyjmie wartość 5.
Zmiennym można przypisywać nie tylko konkretne wartości, ale też wartości innych zmiennych. Wartości te można przypisywać kaskadowo, przy czym wartości przypisywane będą od prawej do lewej, np.:
W tym wypadku wszystkim zmiennym zostanie przypisana wartość 5. Operator przypisania można łączyć z operatorami arytmetycznymi i operatorem łączenia ciągów:
Operatory operacji bitowych
Operatory operacji bitowych pozwalają na przestawianie pojedyńczych bitów zmiennych. Poniższa tabelka przeznaczona jest dla osób, które miały już jakąkolwiek styczność z operacjami na bitach.
Operatory porównania
Operatory porównania są niezbędne do korzystania z instrukcji warunkowych (jeśli coś to zrób coś). Zwracają one wartość TRUE (prawda – 1) lub FALSE (fałsz – 0).
Operator kontroli błędów
Operator kontroli błędów (‚@’) powoduje, że wyrażenie przed którym postawiono ten znak nie spowoduje wyświetlenia się jakiegokolwiek błędu lub ostrzeżenia.
Operator wywołania
Operator ten służy do uruchamiania zewnętrznych programów lub poleceń powłoki. Wystarczy wpisać polecenie pomiędzy znaki odwróconego apostrofu (‚`’) aby zostało ono wykonane.
Operatory ikrementacji i dekrementacji
Operatory te występują w większości języków programowania. Służą one do zmniejszenia lub zwiększenia wartości danej zmiennej o 1. Każdy operator można stosować na 2 sposoby: preinkrementacja/predekrementacja – najpierw wartość zmiennej zostanie zmieniona, a później zwrócona, lub postinkrementacji/postdekrementacji – najpierw zostanie zwrócona wartość zmiennej, a następnie wartość zmiennej zostanie zmieniona.
Operatory logiczne
Operatory logiczne służą do budowania bardziej skomplikowanych instrukcji warunkowych – do łączenia kilku warunków w jednej instrukcji.
Operatory ciągu
Operator ciągu (‚.’ – kropka) służy do łączenia kilku ciągów w jedną całość.
Dodaj komentarz