
Serwerownie w Polsce (Warszawa)
Dostępność usług: 99,9% czasu
Autorskie rozwiązania IT
Kopia bezpieczeństwa co 24h

WstępPHP to skryptowy język programowania służący do generowania stron internetowych po stronie serwera.
Różni on się od rozwiązań działających po stronie odwiedzającego (np. JavaScriptu) tym, iż osoba ta widzi jedynie rezultat działania skryptu. Kod źródłowy pozostaje tylko i wyłącznie na serwerze.
PHP jest przy tym bardzo łatwy do opanowania przez początkujących, ale posiada wiele cech przydatnych także zaawansowanym programistom.
PodstawyPlik ze skryptem PHP powinien składać się z trzech części:
<?php
?>
W każdym języku programowania bardzo ważne jest komentowanie pisanego kodu. Dzięki temu inne osoby, jak i też my sami po dłuższym czasie będziemy mogli orientować się w źródle skryptu. W PHP możliwe jest stosowanie trzech typów komentarzy:
ZmienneW skryptach PHP wykorzystanie zmiennych jest dużo prostsze niż w wielu innych językach. Nazwy zmiennych zawsze zaczynają się od znaku $. Dodatkowo nie jest konieczne wcześniejsze deklarowanie typów stosowanych zmiennych.
$zmienna = 'ciąg tekstowy';
$zmienna = 123456;
$zmienna = true;
TabliceTablica to wiele zmiennych ułożonych kolejno, do których można dostać się za pomocą indeksu. Tak samo jak w przypadku zwykłych zmiennych, aby stworzyć tablicę wystarczy przypisać wartość któremuś z jej pól.
$tablica[1] = 'wartość';
$tablica[2] = 'inna wartość';
// Automatyczne wypełnianie indeksu
$tablica[] = 'wartość';
$tablica[] = 'drugawartosc';
Indeksem tablicy nie musi być liczba. Może to być także ciąg tekstowy. Mówimy wtedy o tablicy asocjacyjnej.
$tablica['imie'] = 'Jan';
$tablica['nazwisko'] = 'Kowalski';
OperatoryOperator | Nazwa | Składnia | Opis |
== | Równość | wyrażenie == wyrażenie | Zwraca prawdę, jeżeli oba wyrażenia mają identyczną wartość. |
=== | Równość | wyrażenie === wyrażenie | Zwraca prawdę, jeżeli oba wyrażenia mają identyczną wartość oraz typ. |
!= | Nierówność | wyrażenie != wyrażenie | Zwraca prawdę, jeżeli oba wyrażenia mają różne wartości. |
!== | Nierówność | wyrażenie !== wyrażenie | Zwraca prawdę, jeżeli oba wyrażenia mają różne wartości i/lub typ. |
< | Mniejsze niż | wyrażenie < wyrażenie | Zwraca prawdę, jeżeli lewe wyrażenie ma mniejszą wartość od prawego. |
> | Większe niż | wyrażenie > wyrażenie | Zwraca prawdę, jeżeli lewe wyrażenie ma większą wartość od prawego. |
<= | Mniejsze lub równe | wyrażenie <= wyrażenie | Zwraca prawdę, jeżeli lewe wyrażenie ma mniejszą lub równą wartość prawemu. |
>= | Większe lub równe | wyrażenie >= wyrażenie | Zwraca prawdę, jeżeli lewe wyrażenie ma większą lub równą wartość prawemu. |
! | Negacja (nie) | !wyrażenie | Zwraca prawdę, jeżeli wyrażenie jest fałszywe i fałsz, jeśli prawdziwe. |
&& | Koniunkcja logiczna (i) | wyrażenie && wyrażenie | Zwraca prawdę, jeżeli oba wyrażenia są prawdziwe. |
|| | Alternatywa logiczna (lub) | wyrażenie || wyrażenie | Zwraca prawdę, jeżeli przynajmniej jedno z wyrażeń jest prawdziwe. |
Operator | Nazwa | Składnia | Opis |
/ | Dzielenie | wyrażenie / wyrażenie | Reprezentuje wynik dzielenia. Drugie wyrażenie nie może być zerem. |
% | Dzielenie modulo | wyrażenie % wyrażenie | Reprezentuje resztę z dzielenia. Drugie wyrażenie nie może być zerem. |
* | Mnożenie | wyrażenie * wyrażenie | Reprezentuje iloczyn dwóch wyrażeń. |
+ | Dodawanie | wyrażenie + wyrażenie | Reprezentuje sumę dwóch wyrażeń. |
- | Odejmowanie | wyrażenie - wyrażenie | Reprezentuje różnicę dwóch wyrażeń. |
. | Łączenie (Konkatenacja) | wyrażenie . wyrażenie | Reprezentuje połączenie dwóch wyrażeń w ciąg tekstowy. |
++ | Inkrementacja (zwiększenie) | $zmienna++ | Reprezentuje wartość zmiennej, a następnie zwiększa ją o 1. |
++ | Inkrementacja (zwiększenie) | ++$zmienna | Reprezentuje wartość zmiennej powiększoną o 1. |
-- | Dekrementacja (zmniejszenie) | $zmienna-- | Reprezentuje wartość zmiennej, a następnie zmniejsza ją o 1. |
-- | Dekrementacja (zmniejszenie) | --$zmienna | Reprezentuje wartość zmiennej pomniejszoną o 1. |
Instrukcje warunkoweInstrukcja IF pozwala na wykonanie części kodu tylko wtedy, gdy spełniony jest odpowiedni warunek.
Jej składnia jest następująca:
if (wyrażenie) {
// kod wykonywany, gdy wyrażenie będzie prawdziwe
}
else {
// kod wykonywany gdy wyrażenie będzie fałszywe
}
Przy konstrukcji wyrażeń korzystamy z Operatorów logicznych
Szczególnie często popełnianym przez programistów błędem jest stosowanie operatora przypisania "=" (pojedynczy znak równości) zamiast operatora porównania "==" (podwójny znak równości).
Wówczas aplikacja zachowuje się tak, jakby warunek był zawsze prawdziwy.
Przykładowy kod wykorzystujący instrukcję IF - dzielenie dwóch liczb uwzględniając dzielnik różny od zera.
Instrukcja switch nazywana jest często instrukcją wyboru. Spośród dostępnego zbioru wyszukuje określoną wartość na podstawie pewnego wyrażenia i wykonuje zdefiniowany dla niej kod.
W nawiasie polecenia switch definiujemy, jakiemu wyrażenia wartość pragniemy sprawdzić. Wewnątrz nawiasów klamrowych używamy struktury case wartość:, aby zdefiniować dopuszczalne wartości, czyli stany wyrażenia. Po dwukropku piszemy odpowiedni kod. Jeżeli żaden ze stanów nie spełnia naszych oczekiwań, istnieje także klauzula default: pisana na samym końcu opisująca domyślne zachowanie.
Przykładowy kod:
switch {$dzien} {
case '1':
echo 'Dziś jest poniedziałek';
break;
case '2':
echo 'Dziś jest wtorek';
break;
case '3':
echo 'Dziś jest środa';
break;
case '4':
echo 'Dziś jest czwartek';
break;
case '5':
echo 'Dziś jest piątek';
break;
case '6':
case '7':
echo 'Dziś jest weekend';
break;
default:
echo 'Gdzieś jest najprawdopodobniej błąd ;)';
break;
}
PętlePętlą nazywamy strukturę kontrolną powtarzającą dany kod do czasu spełnienia określonego warunku.
Pętla FOR używana jest w przypadku zdefiniowania skończonej ilości powtórzeń. Jej składnia jest następująca:
for (wyrazenie_startu; wyrazenie_zakonczenia; wyrazenie_iteracji) {
// instrukcje
}
Wyrażenie startu to zazwyczaj inicjalizacja licznika ilości wykonanych powtórzeń, zakończenia - warunek zakończenia wykonywania pętli, a iteracji to zazwyczaj zwiększanie bądź zmniejszanie licznika.
// Przykład wypisujący wszystkie liczby od 1 do 100
for ($i=1; $i<=100; $i++) {
echo $i;
}
// Przykład wypisujący wszystkie liczby od 100 do 1
for ($i=100; $i>=1; $i--) {
echo $i;
}
Pętla WHILE jest prostszym odpowiednikiem FOR. Podawany jest w niej tylko warunek zakończenia, a serwer wykonuje blok kodu, dopóki będzie on spełniony.
$a = 100;
$b = 50;
while($a > $b) {
echo $a;
$a = $a - 10;
}
Podana struktura jest to lekko zmodyfikowane WHILE. W tym przypadku warunek sprawdzany jest pod koniec wykonania pętli. Składnia jest dosyć nietypowa:
do
{
// instrukcje pętli
}
while (warunek);
$a = 1;
$b = 10;
do
{
echo $b;
$b = $b - $a;
}
while ($b == 0);
Ta instrukcja służy wyłącznie do przeglądania zawartości typów złożonych: tablic oraz obiektów.
Kod wewnątrz niej jest powtarzany dla każdego z elementów tablicy, a on sam jest na ten czas przenoszony do tworzonej przez pętlę zmiennej.
Składnia:
foreach ($zasob as $wartosc) {
// operacje (elementy tablicy pod $wartosc)
}
SesjeProtokół HTTP jest protokołem bezstanowym. Oznacza to, że serwer WWW rozpatruje każde żądanie niezależnie od innych, nie szukając żadnych powiązań w stylu wysyłania ich przez tego samego internautę. Utrudnia to teoretycznie tworzenie wszelkich systemów autoryzacji, które wymagają śledzenia poczynań użytkownika na naszej stronie i przenoszenia jego danych autoryzacyjnych między kolejnymi żądaniami, czyli krótko mówiąc - wymagają obecności systemu sesji. Używając PHP lub innego dynamicznego języka server-side można je jednak zasymulować. "Nasz" język jest o tyle prosty, iż posiada już zaimplementowane stosowne funkcje. My tylko musimy zacząć ich używać.
Działanie sesji w PHP jest bardzo proste. W momencie pierwszego trafienia na stronę interpreter tworzy specjalny, losowy oraz unikalny identyfikator przesyłany między żądaniami za pomocą ciastek lub parametru PHPSESSID doklejanego automatycznie do adresów URL. Na jego podstawie odczytywany jest później odpowiedni plik z danymi sesji zapisany gdzieś na serwerze. Pod koniec przetwarzania żądania wszystkie wprowadzone przez skrypt zmiany są z powrotem zapisywane do wspomnianego pliku tak, aby były widoczne przy wejściu na kolejną podstronę.
Aby zainicjować mechanizm sesji, należy wywołać funkcję session_start();
Należy pamiętać, iż przed zainicjowaniem sesji nie wolno wysłać żadnych innych danych do przeglądarki!
// Plik: logowanie.php
<?php
Session_start();
if($_POST['login'] == 'jan' AND $_POST['haslo'] == 'kowalski')
{
$_SESSION['zalogowany'] = 1;
header('Location: tajne.php');
}
else
{
?>
<!-- Formularz logowania - zwykły HTML -->
<?php
}
?>
// Plik: tajne.php
<?php
session_start();
if($_SESSION['zalogowany'] != 1)
{
header('Location: logowanie.php');
}
else
{
// kod przeznaczony dla zalogowanego użytkownika
}
Obsługa plikówFunkcje te służą do dołączenia kodu umieszczonego w innym pliku PHP.
Różnicą między nimi jest jedynie sposób zgłaszania błędów w przypadku braku dostępu do żądanego zasobu.
Require zgłasza błąd krytyczny, przerywając przy tym wykonywanie istniejącego skryptu, a include jedynie ostrzeżenie, kontynuując przy tym działanie skryptu.
Składnia:
include('nazwa_pliku');
require('nazwa_pliku');
Czasami istnieje konieczność odczytu zawartości plików tekstowych. Odczyt gotowych, przetworzonych danych z plików jest znacznie szybszy niż odczyt z bazy danych i często wykorzystywany przez różne aplikacje jako pamięć podręczna (cache).
Aby pobrać zawartość pliku do zmiennej stosujemy funkcję file_get_contents(), której jako argument podajemy nazwę pliku, który chcemy otworzyć.
$jakas_zmienna = file_get_contents('plik.txt');
W nowych wersjach PHP także zapis do plików został maksymalnie uproszczony. Służy to tego funkcja file_put_contents(). Jej składnia jest następująca:
file_put_contents('nazwa_pliku', dane);
$zmienna = 'Litwo, Ojczyzno moja';
file_put_contents('pan_tadeusz.txt', $zmienna);
Copyright © 2002-2010 dhosting.pl. Wszelkie prawa zastrzeżone.