Wprowadzenie
PHP (ang. PHP Hypertext Preprocessor) – obiektowy, skryptowy język programowania zaprojektowany do generowania dynamicznych stron internetowych. PHP najczęściej stosuje się do przetwarzania skryptów po stronie serwera WWW, ale może być on również używany z poziomu wiersza poleceń oraz w aplikacjach pracujących w trybie graficznym. / Wikipedia /
PHP ...- ... jest obiektowym, skryptowym językiem programowania
- ... bazuje na składni języków C, Java oraz Perl
- ... potrafi współpracować z znakomitą większością istniejących baz danych
- ... jest wieloplatformowe
- ... jest wydajnym rozwiązaniem
- ... posiada wiele wbudowanych funkcji do rozwiązywania różnych popularnych zadań w sieci WWW
- ... jest używane przez ok. 20 mln witryn WWW

Spis funkcji wykorzystywanych w przykładach
Funkcje podstawowe
- date
- echo
- explode
- file
- header
- ImageCreateFromPNG
- ImageColorAllocate
- ImageTTFText
- ImagePng
- ImageDestroy
- isset
- microtime
- mt_rand
- phpinfo
- session_start
- setcookie
- srand
- strftime
- time
Funkcje dostępu do bazy danych PostgreSQL
idź do góry"Hello World"
... 7<body> 8 <h1>Przykład skryptu PHP</h1> 9 <p> 10 <?php echo("PHP Hello world!"); ?> 11 </p> 12 <p>Dzisiejsza data: <?php echo("Data: ".date("d/m/Y")); ?> 13 </p> 14</body> ...[pokaż zawartość pliku] [uruchom] idź do góry
Bieżąca konifiguracja
... 8<body> 9 <h1>Informacja o konfiguracji bieżącej PHP</h1> 10 <hr> 11 <?php phpinfo(); ?> 12</body> ...[pokaż zawartość pliku] [uruchom] idź do góry
Odczyt danych z pliku
... 6<body> 7 <h1>Odczyt danych z pliku</h1> 8 <?php 9 $file_name="dane.txt"; 10 $answer=file($file_name); 11 12 echo "<table border=1>\n"; 13 for($n=0; $n <= 3; $n++) { 14 echo "<tr>"; 15 $elems=explode("|",$answer[$n]); 16 for($i=0; $i <= 3; $i++) { 17 echo "<td align=left>".$elems[$i]."</td>\n"; 18 } 19 echo "<td><img src=spider".$elems[4].".gif ></td>\n"; 20 echo "</tr>\n"; 21 } 22 echo "</table>"; 23 ?> 24</body> ...[pokaż zawartość pliku] [uruchom] idź do góry
Wyświetlanie losowych obrazów
... 8 <body> 9 <h1>Losowe wyświetlanie rysunku</h1> 10 <a href="phpRandomImage.php">Przeładuj</a> stronę,<br /> 11 żeby zobaczyć czy rysunek zostanie zmieniony... 12 <br /> 13 <?php srand ((double) microtime() * 1000000);?> 14 <img src = "spider<?php printf(mt_rand(1,5))?>.gif" /> 15 </body>[pokaż zawartość pliku] [uruchom] idź do góry
Obsługa ciasteczek
1<?php 2 if (isset($_COOKIE["ciasteczko"])) { 3 $value = $_COOKIE["ciasteczko"]; 4 } else { 5 SetCookie("ciasteczko", "abc", time()+5); 6 $value = brak; 7 } 8?> 9<html> ... 16 <body> 17 <h1>Cookies</h1> 18 <p>Ciasteczko: <?php echo $value; ?></p> 19 </body> 20</html>[pokaż zawartość pliku] [uruchom] idź do góry
Obsługa sesji
1<?php 2 session_start(); 3 if (isset($_SESSION["count"]) ) 4 $_SESSION["count"]++; 5 else 6 $_SESSION["count"]=1; 7?> 8<html> ... 13 <body> 14 <h1>Obsługa sesji</h1> 15 <p><?php echo "Licznik: ".$_SESSION[count]; ?> .</p> 16 </body> 17</html>[pokaż zawartość pliku] [uruchom] idź do góry
Autoryzacja
1<?php 2 if (!isset($_SERVER[PHP_AUTH_USER])) { 3 header(WWW-Authenticate: Basic realm="Logowanie"); 4 header(HTTP/1.0 401 Unauthorized); 5 echo Błąd przy logowaniu; 6 exit; 7 } else { 8 echo "<p>Użytkownik: {$_SERVER[PHP_AUTH_USER]}</p>"; 9 echo "<p>Hasło: {$_SERVER[PHP_AUTH_PW]}</p>"; 10 } 11?>[pokaż zawartość pliku] [uruchom] idź do góry
Wysyłanie mail'a
1<html> ... 6 <body> 7 <?php 8 mail("XXX@cs.put.poznan.pl", "Test PHP", 9 "Test z godziny: ".strftime("%H:%M:%S")); 10 ?> 11 <h1> List został wysłany do adresata</h1> 12 </body> 13</html>[pokaż zawartość pliku] [uruchom] idź do góry
Dynamicznie generowany obraz
1<?php 2 header("Content-type: image/png"); 3 $im = ImageCreateFromPNG("source.png"); 4 $cl = ImageColorAllocate($im, 0, 80, 0); 5 ImageTTFText($im, 40, 0, 20, 100, $cl, 6 "verdana.ttf", 7 strftime("%d/%m/%Y")); 8 $cl = ImageColorAllocate($im, 0, 0, 200); 9 ImageTTFText($im, 50, 30, 100, 490, $cl, 10 "verdana.ttf", 11 strftime("%H:%M:%S")); 12 ImagePng($im); 13 ImageDestroy($im); 14?>[pokaż zawartość pliku] [uruchom]
Zobacz jak wygląda obraz źródłowy . idź do góry
eWidokówka
1<?php 2 3 if (isset($_POST["IMAGE"])) { 4 $IMAGE=$_POST[IMAGE]; 5 } else { 6 $IMAGE = "postcardHawaii.jpg"; 7 }; 8 if (isset($_POST[TITLE])) { 9 $TITLE=$_POST[TITLE]; 10 } else { 11 $TITLE = "Pozdrowienia"; 12 } 13 14 if (isset($_POST[CONTENT])) { 15 $CONTENT=$_POST[CONTENT]; 16 } else { 17 $CONTENT = Twój misiek :); 18 } 19 20 header("Content-type: image/jpeg"); 21 $im = ImageCreateFromJPEG($IMAGE); 22 $cl = ImageColorAllocate($im, 255, 255, 0); 23 ImageTTFText($im, 40, 0, 20, 60, $cl, 24 "verdana.ttf", 25 strftime($TITLE)); 26 $cl = ImageColorAllocate($im, 255, 22, 162); 27 ImageTTFText($im, 20, 10, 300, 300, $cl, 28 "verdana.ttf", 29 strftime($CONTENT)); 30 ImageJpeg($im); 31 ImageDestroy($im); 32?>[pokaż zawartość pliku]
[uruchom] idź do góry
Dostęp do bazy PostgreSQL z linii poleceń
user@host> psql -h nazwa_serwera -U nazwa_użytkownika -d nazwa_bazy_danych Password: **** ... Wyświetl pomoc na temat poleceń PostgreSQL dbname=> \? ... Wyświetl listę obiektów dostępnych w bazie danych dbname=> \d ... Wyświetl opis tabeli PRACOWNICY dbname=> \d pracownicy ... Wyświetl zawartość tabeli PRACOWNICY dbname=> select * from pracownicy; ... Wyświetl zawartość tabeli PRACOWNICY spełniającą określone warunki dbname=> select * from pracownicy where zarobki > 3000; ... Wstaw nowe dane do tabeli PRACOWNICY dbname=> insert into pracownicy(imie,nazwisko,rok_ur,zarobki) values ('Jan','Nowak',1966,3500); ... Modyfikuj dane z tabeli PRACOWNICY spełniające określone warunki dbname=> update pracownicy set nazwisko='Nowak' where imie='Jacek'; ... Usuń dane z tabeli PRACOWNICY spełniające określone warunki dbname=> delete from pracownicy where zarobki > 10000; ... wykonaj skrypt SQL zapisany w pliku "skrypt.sql" dbname=> \i skrypt.sql ... Zakończ pracę dbname=> \qWięcej informacji można znaleźć na stronie www.postgresql.org.pl idź do góry
Select
1<html> ... 6 <body> 7 <h1>Wynik zapytania:</h1> 8 <?php 9 if (isset($_POST["SORT"])) { 10 $SORT=$_POST[SORT]; 11 } else { 12 $SORT = nazwisko ; 13 }; 14 15 if (isset($_POST[SORT_TYPE])) { 16 $SORT_TYPE=$_POST[SORT_TYPE]; 17 } else { 18 $SORT_TYPE = asc ; 19 } 20 21 $db = pg_Connect ("host=XXX dbname=XXX user=XXX password=XXX"); 22 $res = pg_exec ($db, " 23 select * from pracownicy 24 order by $SORT $SORT_TYPE"); 25 26 $num = pg_numrows($res); 27 28 echo "<table border=1>"; 29 for($i=0; $i<$num; $i++) 30 { 31 echo "<tr>"; 32 echo "<td>".pg_result($res, $i, "imie")."</td>"; 33 echo "<td>".pg_result($res, $i, "nazwisko")."</td>"; 34 echo "<td>".pg_result($res, $i, "rok_ur")."</td>"; 35 echo "<td>".pg_result($res, $i, "zarobki")."</td>"; 36 echo "</tr>\n"; 37 } 38 echo "</table>"; 39 pg_freeresult($res); 40 pg_close($db); 41 ?> 42 </body> 43</html>[pokaż zawartość pliku] [uruchom] idź do góry
Insert
... 7 <body> 8 <h1>Dodawanie nowych rekordów</h1> 9 <?php 10 if (isset($_POST[IMIE])) { 11 Uzyskaj połączenie z bazą danych 12 $db = pg_Connect ("host=XXX dbname=XXX user=XXX password=XXX"); 13 Rozpocznij transakcję 14 pg_exec($db, "begin"); 15 Wstaw rekord do bazy (Sql INSERT command) 16 $res = pg_exec ($db, " 17 insert into pracownicy (imie,nazwisko,rok_ur,zarobki) 18 values($_POST[IMIE], $_POST[NAZWISKO],$_POST[ROK_UR],$_POST[ZAROBKI])"); 19 if (!$res) { 20 echo "Błąd aktualizacji bazy danych!"; 21 } else { 22 echo "OK"; 23 } 24 Zatwierdź transakcję 25 pg_exec($db, "commit"); 26 Zacznij połączenie z bazą danych 27 pg_close($db); 28 echo "<hr>\n"; 29 echo "</body>\n</html>\n"; 30 exit; 31 } 32 ?> 33 <form method="post" action="phpInsertDB.php"> 34 <table> 35 <tr><td class="label">Imię:</td> 36 <td><input type="text" name="IMIE"></td> 37 </tr> ... 51 </table> 52 </form> 53 </body> ...[pokaż zawartość pliku] [uruchom] idź do góry
Delete
1<html> ... 7 <body> 8 <h1>Usuwanie rekordów</h1> 9 <?php 10 if (isset($_POST[NAZWISKO])) { 11 Uzyskaj połączenie z bazą danych 12 $db = pg_Connect ("host=XXX dbname=XXX user=XXX password=XXX"); 13 Rozpocznij transakcję 14 pg_exec($db, "begin"); 15 Usuń rekord z bazy danych (Sql DELETE command) 16 $res = pg_exec ($db, " 17 delete from pracownicy 18 where nazwisko=$_POST[NAZWISKO]"); 19 if (!$res) { 20 echo "Błąd aktualizacji bazy!"; 21 } else { 22 echo "OK"; 23 } 24 Zatwierdź transakcję 25 pg_exec($db, "commit"); 26 Zamknij połączenie z bazą danych 27 pg_close($db); 28 echo "<hr>\n"; 29 echo "</body>\n</html>\n"; 30 exit; 31 } 32 ?> 33 <form method="post" action="phpDeleteDB.php"> ... 43 </form> 44 </body> 45</html>[pokaż zawartość pliku] [uruchom] idź do góry
Zadania
- Rozbudować przykład wyświetlający zawartość tabeli PRACOWNICY o możliwość podświetlania danych wg zadanych kryteriów
- Rozbudować przykład wyświetlający zawartość tabeli PRACOWNICY o możliwość filtrowania danych wg różnych kolumn
- Przygotować formularz do edycji danych w tabeli PRACOWNICY
- Przygotować tabelę, umożliwiającą edycję, usuwanie i sortowanie danych
- Przygotować prosty system pocztówek elektronicznych (generowanie obrazu, wysłanie powiadomienia do adresata)