Kurs PHP & MYSQL(1).pdf

(355 KB) Pobierz
Kurs PHP & MYSQL
Czym jest PHP?
PHP A SERWER WWW
PHP może być zainstalowany w dwojaki sposób. Pierwszy, najbardziej popularny, to instalacja jako moduł serwera, np.
Apache'a. Wówczas skrypt PHP jest wykonywany na prawach użytkownika, który jest właścicielem Apache'a - zwykle nobody .
Drugi, rzadziej stosowany sposób to instalacja PHP jako programu CGI . Wówczas skrypty PHP umieszczane są w katalogu ze
skryptami CGI (najczęściej jest to katalog cgi-bin ). Należy również pamiętać, taki skrypt jest pełnoprawnym programem CGI
(Common ateway Interface) i musi mieć odpowiednie uprawnienia ( 755 , czyli -rwxr-xr-x ) oraz w pierwszej linii pliku ścieżkę
do interpretera języka.
Instalacja
Aby móc testować skrypty musimy mieć zainstalowany serwer www i interpreter PHP. Pliki instalacyjne do obydwu programów
można znaleźć na stronie PHP.pl w dziale download. Po ściągnięciu instalujemy Apache'a w domyślnym katalogu, potem w
zależności od wersji interpretera PHP rozpakowywujemy go do katalogu c:\php albo instalujemy do tegoż katalogu. Podczas
instalacji zaznaczamy wszystkie możliwe rozszerzenia PHP, tj. .php, .php3 i .phtml. Jeżeli miałeś wersję spakowaną to musisz
jeszcze zamienić nazwę pliku c:\php\php.ini-dist na c:\php\php.ini. Wyżej wymieniony plik jest plikiem konfiguracyjnym
interpretera, jednak do zwykłego korzystania z interpretera nie jest potrzebna specjalna konfiguracji, dlatego nie będziemy nic w
nim zmieniać. Po instalacji serwera i interpretera możesz spróbować uruchomić serwer. Powinien albo krótko po uruchomieniu
wyłączyć się, albo po uruchomieniu przeglądarki i próbie wejścia na adres http://127.0.0.1/ powinien wyświetlić się błąd "Strony
nie znaleziono" albo coś w tym stylu. Aby serwer działał musimy go odpowiednio skonfigurować.
Konfiguracja
Plikiem konfiguracyjnym Apache'a, który będziemy zmieniać jest httpd.conf, znajdujący się w katalogu conf w katalogu gdzie
zainstalowano Apache'a (domyślnie c:\Program Files\Apache Group\Apache\). Otwórz go pod Notatnikiem. Wyszukaj w nim
linii z ServerName. Zamień ją na ServerName 127.0.0.1 (może być także localhost). Jeżeli przed ServerName występuje znaczek
# (haszyk) to usuń go. W ten sposób ustaliliśmy nazwę serwera, przez którą będziemy mogli wywoływać nasze strony i skrypty.
Teraz można uruchomić Apache'a i sprawdzić czy działa. Uruchom Apache.exe, potem przeglądarkę i wejdź na strone
http://127.0.0.1/. Powinna pojawić się strona powitalna Apache'a (jeżeli masz starszą wersję Apache'a może wyświetlić się spis
plików w katalogu htdocs).
Teraz dodamy kilka rozszerzeń indexu. Standardowo po wywołaniu http://127.0.0.1/ wywoływana jest strona
http://127.0.0.1/index.html. Jeżeli takowej nie ma pokazuje się spis zawartości katalogu. Dzięki tej linijce, którą za chwilę
zamienimy, będzie (jeżeli nie ma index.html) sprawdzało czy istnieją i uruchamiały index.php i index.php3. Znajdź w pliku
konfiguracyjnym linijkę DirectoryIndex. Jeżeli występuje przed nią znak # usuń go. Teraz zamień tę linię na DirectoryIndex
index.html index.php index.php3. Serwer sprawdza czy index istnieje w kolejności takiej jak zapisane jest to w pliku
konfiguracyjnym, czyli u nas to będzie wyglądało tak:
• Serwer sprawdza czy istnieje index.html
• Jeżeli istnieje to wyświetla jego zawartość
• Jeśli nie istnieje to sprawdza czy istnieje index.php
• Jeżeli istnieje to wykonuje skrypt i wyświetla wyniki
• Jeśli nie sprawdza czy istnieje index.php3
• Jeżeli tak to wykonuje skrypt i wyświetla jego wyniki
• Jeśli nie pokazuje zawartość katalogu htdocs
Teraz czas na dodanie trzech linii do pliku httpd.conf (czyli konfiguracyjnego), informujących serwer www o ścieżce dostępu do
interpretera PHP i jego rozszerzeniach. Oto te trzy linie:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php3 .php3 .php .phtml
Action application/x-httpd-php3 "/php/php.exe"
Można je wkleić w każdym miejscu pliku. Od tej pory można się już bawić w pisanie skryptów i je testować
Używanie
Wszystkie pliki ze stronami i skryptami przechowywane są w katalogu htdocs w katalogu domyślnym Apache'a. Aby uruchomić
skrypt musisz przegrać go do tego katalogu, uruchomić Apache'a i w pasku adresu wpisac http://127.0.0.1/url gdzie url to adres
pliku wewnątrz, np.: http://127.0.0.1/katalog/skrypt.php gdzie katalog to folder podrzędny do htdocs (czyli domyślnie adres do
tego katalogu to c:\Program Files\Apache Group\Apache\htdocs\katalog), a skrypt.php to nazwa skryptu razem z rozszerzeniem.
Jeżeli w katalogu htdocs mamy całą witrynę to możemy ją uruchomić z adresu http://127.0.0.1/katalog, gdzie katalog to folder w
którym znajduje się cała witryna. I to wszystko!
ROZSZERZENIA PLIKÓW PHP
Pliki stron WWW zawierających skrypty PHP mogą mieć różne rozszerzenia w zależności od konfiguracji serwera. Najczęściej
stosowane to: *.php , *.php3 , *.phtml . Jeżeli chcesz, aby pliki PHP miały także inne rozszerzenia, musisz w pliku httpd.conf
(lub srm.conf ) wpisać w sekcji AddType następującą linię:
AddType application/x-httpd-php .<nowe rozszerzenie>
a następnie, aby plik index z nowym rozszerzeniem był traktowany jako domyślny plik katalogu, w sekcji DirectoryIndex
dopisać:
36662224.002.png
DirectoryIndex index.<nowe rozszerzenie>
UMIESZCZANIE SKRYPTÓW PHP W KODZIE HTML
Skrypty PHP (obecnie Hypertext Preprocessor ) wykonywane są po stronie serwera, ale umieszczane bezpośrednio w kodzie
strony. Serwer interpretuje kod PHP i przekazuje przeglądarce stronę WWW bez wstawek PHP. Kod PHP umieszczany jest na
stronie za pomocą następujących znaczników:
• <?php i ?>
• <? i ?>
• <script language=php> i </script>
• <% i %>
Drugi typ znaczników, nazywany Short Tags (krótkie znaczniki), dostępny jest, jeżli w pliku konfiguracyjnym PHP (c:\apache
\php\php.ini w win32) włączona jest opcja short_open_tag :
short_open_tag = On
lub po wywołaniu funkcji short_tags() .
Czwarty typ znaczników pochodzi z języka ASP i nie jest dostępny w standardowej konfiguracji PHP. Aby go uaktywnić należy
włączyć następującą opcję:
asp_tags = On
PRZYKŁADOWY SKRYPT PHP
W celu przedstawienia podstawowych cech PHP zostanie zaprezentowany i omówiony przykładowy skrypt odpowiedzialny za
wyświetlenie na stronie aktualnej daty.
<html>
<head>
<title>Skrypt PHP</title>
</head>
<body>
/* skrypt PHP
drukowanie aktualnej daty */
$aktualna_data = date("d-m-Y"); // pobieramy datę do zmiennej
echo("Dziś jest $aktualna_data"); // drukujemy linię
#koniec drukowania aktualnej daty
</body>
</html>
Wynikiem działania tego skryptu będzie:
<html>
<head>
<title>Skrypt PHP</title>
</head>
<body>
Dziś jest: 27-07-2001
</body>
</html>
Zwrócony tekst zastąpi znaczniki skryptu ( <? i ?> ) wraz z umieszczonym między nimi kodem i komentarzami.
Najważniejsze elementy języka
W powyższym przykładzie pobieramy do zmiennej aktualną datę. Jak widać w PHP zmiennych nie trzeba deklarować, a one
same rozpoczynają się znakiem $ .
Zapis date("d-m-Y") oznacza wywołanie funkcji date() , która zwraca aktualną datę w ustalonym formacie (dzień-miesiąc-rok).
Funkcja echo() odpowiedzialna jest za zwracanie tekstu podanego w nawiasie do przeglądarki. Zauważ, że jako argument funkcji
został przekazany tekst umieszczony w podwójnych cudzysłowach (") , w którym znajduje się zmienna $aktualna_data . Ten
rodzaj cudzysłowu mówi parserowi PHP, że ma przeszukać tekst w poszukiwaniu zmiennych (rozpoczynających się od znaku $ )
i zamienić je na ich wartości. Gdybyś zastosował pojedyncze cudzysłowy (') , zwrócony tekst przybrałby następującą postać:
<html>
<head>
<title>Skrypt PHP</title>
</head>
<body>
Dziś jest: $aktualna_data
</body>
</html>
Widać, że teksty umieszczone w takich cudzysłowach nie sa przeszukiwane w celu znalezienia zmiennych i zostają
wydrukowane dokładnie tak, jak zostały zapisane.
Komentarze
36662224.003.png
<?
echo("jakiś tekst"); // drukowanie tekstu
echo("jakiś tekst"); # drukowanie tekstu
?>
Zasady notacji
Podstawowa notacja języka PHP opiera się na następujących zasadach:
• kończenia każdej linii kodu znakiem ; ,
• umieszczania przed nazwami zmiennych znaku $ ,
• zapisywania w jednej linijce kodu jednej instrukcji lub wyrażenia,
• nie rozróżniania wielkości liter w nazwach funkcji,
• rozróżniania wielkości liter w nazwach zmiennych.
W celu zwiększenia czytelności zapisu można stosować wcięcia i komentarze.
ZMIENNE
TYPY ZMIENNYCH
W PHP nie musisz deklarować nazwy zmiennej ani jej typu przed użyciem. W trakcie wykonywania skryptu typ określi samo
PHP w zależności od sytuacji w jakiej zmienna została zastosowana.
Jeżeli jest dla Ciebie istotne, aby dana zmienna była określonego typu i nie chcesz, żeby decydował o tym parser PHP, możesdz
użyć do ustalenia typu zmiennej funkcji settype() . Zmienna zostanie wtedy przekonwertowana na wskazany typ. Jezeli zaś
chcesz sprawdzić typ zmiennej, możesz użyć funkcji gettype() do jego odczytania.
Liczby całkowite
Liczby całkowite jako typ danych w PHP to dodatnie i ujemne liczby dziesiętne, liczby ósemkowe i szesnastkowe. Ich deklaracja
wygląda następująco:
<?
$zmienna = 19; // liczba dziesiętna dodatnia
$zmienna = -5; // liczba dziesiętna ujemna
$zmienna = 0145; // liczba ósemkowa (w systemie dziesiętnym 101)
$zmienna = 0x19; // liczba szesnastkowa (w systemie dziesiętnym 25)
?>
Liczby zmiennoprzecinkowe
Liczby zmiennoprzecinkowe zawierają część dziesiętną. W PHP zapisuje się je w sposób następujący:
<?
$zmienna = 1.234;
$zmienna = 1.2e3;
?>
Łańcuchy znaków
Łańcuchy znaków przechowują różnego rodzaju teksty. Są one umieszczane w cudzysłowach pojedynczych (') lub w
podwójnych (") . Tylko w tej drugiej sytuacji tekst zostanie przeszukany w celu znalezienia zmiennych. Jeżeli natomiast
umieścisz tekst w cudzysłowach pochylonych (`) , to zostanie on potraktowany przez parser PHP jako polecenie zewnętrzne,
które nalezy wykonać.
<?
# deklaracja łańcucha
$string = "tekst łańcucha znaków";
# dodanie do zmiennej $string nowego łańcucha
$string = $string . " dodany łańcuch";
# przypisanie do zmiennej $string wartości 'pozycja 17'
$liczba = 17;
$string = "Pozycja: $liczba";
# pobranie pierwszej litery tekstu
$string = "dowolny tekst";
$pierwsza_litera = $string[0];
// zmienna $pierwsza_litera jest równa 'd'
# b i li t likó kt l k t l d i j $li t lik
36662224.004.png
<?
# drukowanie z użyciem znaków \n
echo("pierwsza linia\n");
echo("druga linia\n");
?>
zwróci:
Pierwsza linia
druga linia
Znaki nowej linii (\n) nie będą interpretowane przez przeglądarkę jako łamanie wiersza, w HTML-u bowiem stosuje się znacznik
<br> . Wprowadzone przejścia do nowej linii będą widoczne natomiast w kodzie źródłowym strony.
Aby osiągnąć przejście do nowej linii i w kodzie strony, i w HTML-u, należy zastosować taki sposób pisania:
<?
# drukowanie z użyciem znaków \n i <br>
echo("pierwsza linia<br>\n");
echo("druga linia<br>\n");
?>
Pozwyższy kod zwróci do przeglądarki następujący tekst:
Pierwsza linia<br>
druga linia<br>
Pewne znaki, na przykład $ czy " pełnią specjalne funkcje. Aby parser PHP traktował taki zapis jak normalny znak, a nie
początek zmiennej czy tekstu, należy za każdym razem umieścić prze nim baskslash (\) .
<?
# cudzysłowy proste
echo('znak " oznacza cudzysłów');
?>
Kod ten zwróci:
Znak " oznacza cudzysłów
Spróbujmy teraz napisać to samo, ale z użyciem podwójnego cudzysłowu:
<?
# cudzysłowy podwójne
echo("znak \" oznacza cudzysłów\n");
?>
Kod ten zwróci to, co poprzednio, ale ze znakiem nokej linii na końcu, ponieważ w podwójnych cudzysłowach mogliśmy użyć
zanaku \n . W pojedynczych zostałby on zignorowany i wydrukowany jako normalny tekst.
Znak " oznacza cudzysłów
Gdybyśmy nie napisali przed znakiem " backslasha , parser PHP zwróciłby komunikat:
Parse error: parse error in <lokalizacja pliku> on line <numer linii>
Wybrane znaki specjalne:
\n - nowa linia
\r - powrót karetki
\t - tabulator
\\ - backslash
\$ - znak dolara
\" - cudzysłów podwójny
Konwersje łańcuchów
Ponieważ PHP samo definiuje typy zmiennych, możliwe jest wykonywanie działań arytmetycznych na tekstach i liczbach
(całkowitych lub zmiennoprzecinkowych). Łańcuch tekstowy będzie traktowany jako liczba zmiennoprzecinkowa, jeśli zawiera
jeden ze znaków: - , e lub E . W innym przypadku łańcuch tekstowy będzie traktowany jako liczba całkowita. PHP spróbuje
wyszukać na początku tekstu wartość numeryczną i jeśli jej nie znajdzie, podstawi wartość domyślną czyli zero (0) .
<?
$zmienna = 2 + "14.8";
// zmienna jest równa 16.8 (liczba zmiennoprzecinkowa)
$zmienna = 1 + "-1.3e3";
// zmienna jest równa -1299 (liczba zmiennoprzecinkowa)
$zmienna = 5 + "tekst-15";
// zmienna jest równa 5 (liczba całkowita)
$zmienna = 7 + "10 linii tekstu";
// zmienna jest równa 17 (liczba całkowita)
$zmienna = "12.0 linii " + 3;
// zmienna jest równa 15 (liczba całkowita)
36662224.005.png
$s="Jestem 'stringiem w pojedynczym cudzysłowie' wewnątrz podwójnego cudzysłowu ";
$s='Jestem "stringiem w podwójnym cudzysłowie" wewnątrz pojedynczego cudzysłowu ';
Sposób sprawdzenia przez PHP czy jest to string polega na przejściu od jednego cudzysłowia do drugiego identycznego.
Przykładowo:
"Why doesn't "this" work?"
jest widziane przez parser PHP w trzech częściach:
"Why doesn't "
string w podwójnym cudzysłowie w którym znajduje się pojedynczy cudzysłów
this
śmieci których parser nie potrafi zrozumieć
" work?"
kolejny string.
Powyższy przykład próbuje umieścić podwójny cudzysłów wewnątrz stringa będącego w podwójnym cudzysłowie. Jest to
problemem ponieważ parser znajduje pierwszą parę pasujących cudzysłowów i sądzi że jest to koniec naszego stringa. Aby
umieścić cudzysłów wewnątrz stringa aby parser zignorował taki cudzysłów musimy użyć przed nim backslasha ( \ ). Użycie
backslasha mówi PHP że cudzysłów jest częścią stringa. Oto poprawny przykład powyższego przykładu:
"Why doesn't \"that\" work?"
Podobny problem spotykamy próbując użyć cudzysłowu pojedynczego w stringu znajdującym się w pojedynczym cudzysłowie:
'You\'d better escape your apostrophes'
Oznacza to że backslash ma specjalne znaczenie w stringach. Zatem aby umieścić backslasha w stringu musimy jego także
poprzedzić backslashem. Dla przykładu:
$file = "c:\windows\system.ini";
echo($file); // wyświetli c:windowssystem.ini
$file = "c:\\windows\\system.ini";
echo($file); // wyświetli c:\windows\system.ini
Innym sposobem na tworzenie stringów, który eliminuje potrzebę używania backslashy jest format znany jako "Here Document".
Jest on przydatny przy dużych ilościach tekstu. Zacznij Here Document ze znacznikiem <<< a za nim umieść identyfikator który
nie pojawi się w Twoim tekście. Identyfikator ten posłuży nam jako znacznik końca tekstu:
$head = <<<ENDH
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>Feedback form</title>
</head>
<h1 align=center>Feedback form</h1>
ENDH;
Łączenie stringów.
Stringi mogą być łączone poprzez operator (.).
$first_name = 'Charlie';
$last_name = 'Brown';
$full_name = $first_name . $last_name;
Częstą potrzebą w PHP jest tworzenie dużych stringów HTML. Przypisywanie (=) i łączenie (.) mogą być ze sobą łączone (.=)
aby ułatwić sprawę.
$html = '<table>';
$html .= '<tr><td>number</td><td>square</td></tr>';
for($i=0; $i<10; $i++) {
$square = $i * $i;
$html .= '<tr><td>' . $i . '</td><td>' . $square . '</td></tr>';
}
$html .= '</table>';
Używanie zmiennych w stringach:
Więc nie chcesz łączyć ze sobą wielu prostych stringów, PHP umożliwia Ci zastosowanie zmiennych wewnątrz podwójnego
cudzysłowia. Więc oba poniższe kody dadzą ten sam rezultat $full_name:
36662224.001.png
Zgłoś jeśli naruszono regulamin