PHP PODSTAWY
<?php
$liczba = 'foo';
IF (isset($liczba) and is_numeric($liczba))
{
echo 'Zmienna liczba przechowuje wartość liczbową';
}
elseIF(isset($liczba) and !is_numeric($liczba))
{
echo 'Zmienna liczba nie przechowuje liczby';
}
else
{
echo 'Zmienna liczba nie istnieje';
}
Tutaj mamy już kilka nowości. Funkcja isset zwróci wartość prawda jeżeli podana zmienna istnieje. Funkcja is_numeric zwróci wartość prawda jeżeli podana zmienna przechowuje wartość liczbową. Operator "and" oznacza "oraz" czyli pierwszy i drugi parametr muszą być spełnione. Tak więc mamy: Jeżeli $liczba istnieje i (and) jest liczbą to "Zmienna liczba przechowuje wartość liczbową" w przeciwnym wypadku jeżeli $liczba istnieje i nie jest liczbą "Zmienna liczba nie przechowuje liczby", jeżeli i ten warunek nie spełniony to oznacza że $liczba nie istnieje.
UWAGA: znak ! przed is_numeric oznacza "zaprzeczenie", patrz ściągawka:
$x == $y : znak równości (czy zmienne są równą)
$x != $y : znak różności (czy zmienne są różne, dla funkcji zwracających wartość prawda/fałsz ! jest przed ich nazwą)
$x > $ y : czy $x jest większe od $y (tak samo < oraz <= oznacza większe równe, >= mniejsze równe)
Instrukcja SWITCH - CASE - BREAK
Duża ilość elseIF w instrukcji zwalnie działanie skryptu i nie wygląda za dobrze. Możemy to "naprawić" stosując inne wyrażenie warunkowe
<?php
$liczba = 3;
switch ($liczba)
{
case 1:
echo 'mamy 1';
break;
case 2:
echo 'mamy 2';
break;
case 3:
echo 'mamy 3';
break;
case 4:
echo 'mamy 4';
break;
case 'foo':
echo 'mamy foo';
break;
default:
echo 'Mamy coś innego';
}
Jest to "inna" forma IFa z kilkoma elseIF. Instrukcja zaczyna się od "switch ($ZMIENNA)". Następnie w nawiasie {} podajemy przypadki (case) wartości zmiennej. Jeżeli zmienna ma taką wartość to wykonany zostanie kod przypisany do tej wartości. break;kończy wykonywanie instrukcji. default: to odpowiednik else. Kod przypisany pod default wykona się gdy żaden z listy warunków nie zostanie spełniony.
Pętla for wykona określoną ilość razy przypisany jej kod aż warunek pętli przestanie być prawdziwy:
<?php
for($count = 1; $count <= 10; $count++)
{
echo 'klonujemy<br />';
}
Mamy: for(wartość początkowa; wartości dla których wykonywać; postęp). Zacznij pisać "klonujemy" gdy $count przyjmie wartość 1 i pisz to aż $count przestanie być mniejsza/równa 10; zwiększa wartość $count o jeden. Należy unikać długich pętli gdyż długo się wykonują. Jeżeli po napisaniu pętli kod przypisany jej ciągle się wykonuje to znaczy że źle zdefiniowaliśmy warunek i pętla będzie działać w nieskończoność (zazwyczaj aż przekroczony zostanie maksymalny czas wykonywania skryptu).
Pętla WHILE
Pętla WHILE (i DO WHILE) są prostszą wersą pętli for.
<?php
while ($count <= 10)
{
$count++;
echo 'klonujemy<br />';
}
Jako parametr podajemy tylko warunek przy którym wykonywać kod. Coś co zmieni warunek wykonywania kodu na fałsz ($count++) musi być umieszczone poza "parametrami" pętli, np. w kodzie przypisanym do wykonania.
Dokumenty XHTML muszą spełniać ograniczenia podane w DTD (Document Type Definition - Definicja Typu Dokumentu).
Elementem podstawowym (root) w dokumencie musi być html.
Element podstawowy (html) musi zawierać deklarację xmlns identyfikującą przestrzeń nazw XHTML, która stanowi zbiór nazw używanych w dokumencie jako typy elementów i nazwy atrybutów:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
W dokumencie obowiązkowo musi być wstawiona deklaracja typu dokumentu przed elementem podstawowym (czyli przed html). W języku XHTML 1.0 są trzy możliwe do zastosowania wersje DTD:
Strict (ścisła)
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Transitional (przejściowa)
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Frameset (ramkowa)
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Natomiast XHTML 1.1 dopuszcza tylko jedną wersję DTD:
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
Deklaracja XML w postaci (zarówno dla XHTML 1.0 jak i XHTML 1.1):
<?xml version="1.0" encoding="UTF-8"?>
nie jest wymagana, ale mocno zaleca się jej stosowanie. Taka deklaracja jest wymagana, jeśli kodowanie znaków w dokumencie jest inne niż UTF-8 i UTF-16, a jednocześnie kodowanie nie jest określone przez żaden protokół wyższego rzędu, jak np. nagłówek HTTP "Content-Type" wysyłany przez serwer.
Oto przykład typowego dokumentu XHTML (1.0) z dołączoną deklaracją XML:
<?xml version="1.0" encoding="ISO-8859-2"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<title>Tytuł dokumentu</title>
</head>
<body>
<p>Przejdź do <a href="http://example.org/">example.org</a>.</p>
</body>
</html>
Na serwerach obsługujących skrypty PHP (pliki z rozszerzeniami *.php) po wpisaniu deklaracji XML może wystąpić błąd. Aby go uniknąć, należy zamiast deklaracji XML wpisać:
<?php echo '<'.'?xml version="1.0" encoding="UTF-8"?'.'>'."\n"; ?>
Niektóre przeglądarki mogą nie interpretować deklaracji XML i z tego powodu wyświetlać dokument w sposób nieoczekiwany. Wpisanie deklaracji XML w przeglądarce MSIE 7.0 i starszych powoduje przełączenie w tryb Quirks.
Podanie tej deklaracji nie jest obowiązkowe, jednak wtedy dokument może mieć tylko domyślne kodowanie znaków: UTF-8 lub UTF-16, chyba że serwer prześle odpowiedni nagłówek HTTP "Content-Type". W celu zapewnienia kompatybilności wstecz powinno się dodać w nagłówku dokumentu również tradycyjną deklarację strony kodowej, np.:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-2" />
Maksymalna ilość znaków, które można wpisać do pola:
<input type="text" name="nazwa" maxlength="n" />
gdzie jako "n" podaj maksymalną dopuszczalną ilość liter, z których może składać się odpowiedź - użytkownik nie będzie mógł wpisać dłuższego tekstu.
Co to jest metoda GET?
Metoda ta jest stosowana głównie w formularzach, aczkolwiek nie tylko. Polega ona na pobieraniu danych z paska adresu przeglądarki. Jest ona raczej rzadziej stosowana niż metoda POST z racji na bezpieczeństwo, lecz nadal w wielu miejscach można ją spotkać.
Stosowanie w formularzach
Aby formularz przesłany był metodą GET należy to zadeklarować w podany niżej sposób:
<form action="jakisplik.php" method="get">
Kiedy wyśle się taki formularz, w następnym dokumencie po nazwie pliku otrzymamy dane. Przykład:
<form action="jakisplik.php" method="get">
Podaj imię: <input type="text" name="imie" /><br />
Podaj wiek: <input type="text" name="wiek" /><br />
<input type="submit" value="Wyślij" />
</form>
Po wykonaniu tego formularza otrzymamy adres dokumentu z przykładowymi danymi:
http://jakas-domena.pl/jakisplik.php?imie=Janek&wiek=15
Stosowanie w odnośnikach
Aby zastosować metodę GET, można użyć także zwykłych odnośników, co jest już częściej stosowane niż w przypadku formularzy. Przykładowy odnośnik może wyglądać tak:
<a href="index.php?imie=Janek">Klik</a>
W efekcie uzyskamy to samo co w przypadku formularzy.
Wykorzystanie w PHP
Mając do dyspozycji PHP możemy odczytać dane przesłane metodą GET poprzez instrukcję np. przypisania danych do zmiennej:
$nazwa = $_GET['imie'];
Jeśli podana zmienna nie została przesłana, zmienna $nazwa będzie miała wartość równą 0.
Można pobrać te dane również bez podstawiania pod zmienną, przykład:
Witaj <?=$_GET['imie'] ?>
POST - metoda przesyłania danych w sieci internet. Istnieje w ramach protokołu HTTP i wykorzystywana jest najczęściej do wysłania informacji z formularza znajdującego się na stronie internetowej.
Metoda POST powinna być stosowana tam, gdzie dane odwołanie jest formą interakcji z użytkownikiem, która nie może być utrwalona w formie adresu. Powinna być także stosowana tam, gdzie dana operacja może wywołać wiążące dla użytkownika skutki - np. zapisanie na listę dyskusyjną[1].