Narzędzia użytkownika

Narzędzia witryny


pl:paw:lab_paw_php_1

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Nowa wersja
Poprzednia wersja
pl:paw:lab_paw_php_1 [2021/01/08 14:09]
127.0.0.1 edycja zewnętrzna
pl:paw:lab_paw_php_1 [2024/12/15 14:04] (aktualna)
wojnicki [Informacje dodatkowe: Pliki ze strukturą]
Linia 1: Linia 1:
 ====== Laboratorium, PHP # 1 ====== ====== Laboratorium, PHP # 1 ======
 +
 PHP jest skryptowym językiem programowania, wykonywanym po stronie serwera. Zatem jako użytkownicy strony napisanej w PHP nie mamy dostępu do samego kodu PHP, lecz jedynie do tego, co zostaje wygenerowane przy interpretacji kodu PHP.  PHP jest skryptowym językiem programowania, wykonywanym po stronie serwera. Zatem jako użytkownicy strony napisanej w PHP nie mamy dostępu do samego kodu PHP, lecz jedynie do tego, co zostaje wygenerowane przy interpretacji kodu PHP. 
  
Linia 12: Linia 13:
 ===== Ćwiczenie 1: Pierwszy skrypt PHP ===== ===== Ćwiczenie 1: Pierwszy skrypt PHP =====
 Utwórz w swoim domowym katalogu na serwerze (''student.agh.edu.pl'') katalog o nazwie ''public_html'', z prawami dostępu: dostęp i odczyt dla wszystkich. Utwórz w swoim domowym katalogu na serwerze (''student.agh.edu.pl'') katalog o nazwie ''public_html'', z prawami dostępu: dostęp i odczyt dla wszystkich.
 +
 +Aby włączyć raportowanie błędów PHP umieść w katalogu z skryptem w PHP plik o nazwie ''.user.ini'' o zawartości jak poniżej. Jest to lokalna konfiguracja PHP, która powoduje, że błędy będą raportowane dla wszystkich skryptów w tym katalogu.
 +<code txt .user.ini>
 +display_startup_errors = On
 +display_errors = On
 +error_reporting = E_ALL
 +</code>
 +
  
 Umieść w w/w katalogu (''~/public_html'', tylda (''~'') oznacza nazwę katalogu domowego użytkownika) plik ''licze.php'' z następującą zawartością (użyj wspomnianych we wstępie narzędzi do przesyłania plików za pomocą protokołu //ssh/sftp//): Umieść w w/w katalogu (''~/public_html'', tylda (''~'') oznacza nazwę katalogu domowego użytkownika) plik ''licze.php'' z następującą zawartością (użyj wspomnianych we wstępie narzędzi do przesyłania plików za pomocą protokołu //ssh/sftp//):
  
-<code html>+<code php licze.php>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Linia 47: Linia 56:
  
 Proszę przygotować stronę PHP ''wynik.php'' następującej treści: Proszę przygotować stronę PHP ''wynik.php'' następującej treści:
-<code php>+<code php wynik.php>
 <?php <?php
         echo 'Zawartość _GET: ';         echo 'Zawartość _GET: ';
Linia 56: Linia 65:
 </code> </code>
  
-Sprawdź  [[http://php.net/manual/pl/index.php|Manualu]] do czego służy finkcja ''print_r()''.+Przetestuj działanie w/w formularza, w szczególności zwróć uwagę na adres i wynik w przeglądarce po naciśnięciu przycisku //wyślij//.
  
-Aby dostać się do poszczególnych zmiennych w tablicach należy użyć składni: ''$_NAZWA['pole']''. Istnieje również tablica ''$_REQUEST'', zawierająca sumę zbiorów reprezentowanych przez ''$_GET'' oraz ''$_POST''.+Spróbuj umieścić w/w skrypt oraz formularz w tym samym pliku, np. ''wynik1.php''
 + 
 +**UWAGA:** aby dostać się do poszczególnych zmiennych w tablicach należy użyć składni: ''$_NAZWA['pole']''. Istnieje również tablica ''$_REQUEST'', zawierająca sumę zbiorów reprezentowanych przez ''$_GET'' oraz ''$_POST''.
  
 **UWAGA:** powyższy kod PHP generuje stronę, która domyślnie interpretowana jest przez przeglądarkę jako strona XHTML. Oczywiście, nie zawiera ona niezbędnych elementów, więc jest zdecydowanie niezgodna ze standardem! Rozwiązaniem tego problemu byłoby dodanie przed i za blokiem ''<?php ... ?>'' odpowiednich elementów (html, head, body...), lub poinformowanie przeglądarki, że jest to zwykły plik tekstowy. Można to uczynić wysyłając odpowiedni nagłówek HTTP przy pomocy funkcji [[http://www.php.net/manual/pl/function.header.php|header]]: **UWAGA:** powyższy kod PHP generuje stronę, która domyślnie interpretowana jest przez przeglądarkę jako strona XHTML. Oczywiście, nie zawiera ona niezbędnych elementów, więc jest zdecydowanie niezgodna ze standardem! Rozwiązaniem tego problemu byłoby dodanie przed i za blokiem ''<?php ... ?>'' odpowiednich elementów (html, head, body...), lub poinformowanie przeglądarki, że jest to zwykły plik tekstowy. Można to uczynić wysyłając odpowiedni nagłówek HTTP przy pomocy funkcji [[http://www.php.net/manual/pl/function.header.php|header]]:
-<code php>+<code php p3.php>
 <?php <?php
   header('Content-type: text/plain');   header('Content-type: text/plain');
Linia 84: Linia 95:
 Przykładowy algorytm: Przykładowy algorytm:
   - odczytaj 1 wyraz z pliku,   - odczytaj 1 wyraz z pliku,
-  - sprawdź czy pasuje do wzorca porónując każdą literę, jeżeli tak zwróć wyraz, idź do 1.+  - sprawdź czy pasuje do wzorca porównując każdą literę (w pętli), jeżeli tak zwróć wyraz, idź do 1.
  
 Uwaga na UTF8! Uwaga na UTF8!
-<code php>+<code php p4.php>
 $str='lód';  $str='lód'; 
 echo strlen($str);                                             // zwróci 4 echo strlen($str);                                             // zwróci 4
 echo mb_strlen($str);                                          // zwróci 3 echo mb_strlen($str);                                          // zwróci 3
 echo $str[1];                                                  // nie zwróci "ó" :( echo $str[1];                                                  // nie zwróci "ó" :(
-$str_array=preg_split('//u', $str, null, PREG_SPLIT_NO_EMPTY); // konwersja do tablicy zgodna z UTF8+$str_array=mb_str_split($str);                                 // konwersja do tablicy zgodna z UTF8
 echo $str_array[1];                                            // zwróci "ó" echo $str_array[1];                                            // zwróci "ó"
 </code> </code>
Linia 98: Linia 109:
 Uwaga: ''gets()'' odczytuje linie z pliku wraz z znakiem końca linii; przydatna funkcja: ''trim()'' - usuwa białe znaki (włączając w to znak końca linii) na końcu i na początku łańcucha znaków. Uwaga: ''gets()'' odczytuje linie z pliku wraz z znakiem końca linii; przydatna funkcja: ''trim()'' - usuwa białe znaki (włączając w to znak końca linii) na końcu i na początku łańcucha znaków.
  
-==== Informacje dodatkowe: Komunikaty błędów ==== 
- 
-Na ''studencie'' PHP jest skonfigurowane w ten sposób, że komunikaty o błędach lub ostrzeżeniach nie są przesyłane do przeglądarki. 
-Aby włączyć przesyłanie takich komunikatów należy na początku skryptu dodać: 
- 
-<code php> 
-<?php 
-ini_set('display_errors', 1); 
-ini_set('display_startup_errors', 1); 
-error_reporting(E_ALL); 
-... 
-?> 
-</code> 
  
 ==== Informacje dodatkowe: Funkcje w PHP ==== ==== Informacje dodatkowe: Funkcje w PHP ====
 Podstawową jednostką organizacji kodu w PHP, podobnie jak w wielu innych językach programowania, jest [[http://www.php.net/manual/pl/language.functions.php|funkcja]]. W przeciwieństwie np. do języka C, definicja funkcji nie musi określać typu zwracanego - specyfikuje tylko listę paramterów. Podstawową jednostką organizacji kodu w PHP, podobnie jak w wielu innych językach programowania, jest [[http://www.php.net/manual/pl/language.functions.php|funkcja]]. W przeciwieństwie np. do języka C, definicja funkcji nie musi określać typu zwracanego - specyfikuje tylko listę paramterów.
  
-<code php>+<code php p6.php>
 function witaj($imie) { function witaj($imie) {
   return 'Cześć ' . $imie . '!';   return 'Cześć ' . $imie . '!';
Linia 123: Linia 121:
 Możliwe jest tworzenie funkcji ze zmienną liczbą argumentów, poprzez określenie dla niektórych z nich wartości domyślnych: Możliwe jest tworzenie funkcji ze zmienną liczbą argumentów, poprzez określenie dla niektórych z nich wartości domyślnych:
  
-<code php>+<code php p7.php>
 function witaj($imie = 'Jasiu') { function witaj($imie = 'Jasiu') {
   return 'Cześć ' . $imie . '!';   return 'Cześć ' . $imie . '!';
Linia 135: Linia 133:
 Operacje na plikach w PHP wykonywane są w sposób podobny np. do języka C, ale z pewnymi udogodnieniami. Możemy np. w prosty sposób stworzyć skrypt wyświetlający zawartość pliku tekstowego ''dane.txt'', znajdującego się w tym samym katalogu co sam skrypt.  Operacje na plikach w PHP wykonywane są w sposób podobny np. do języka C, ale z pewnymi udogodnieniami. Możemy np. w prosty sposób stworzyć skrypt wyświetlający zawartość pliku tekstowego ''dane.txt'', znajdującego się w tym samym katalogu co sam skrypt. 
  
-<code php>+<code php p8.php>
 <?php <?php
 $plik = fopen('dane.txt', 'r'); $plik = fopen('dane.txt', 'r');
Linia 153: Linia 151:
 Jeżeli plik jest nieduzych rozmiarów można go wczytać bezpośrednio do tablicy, gdzie każdy element jest kolejnym elementem tablicy: Jeżeli plik jest nieduzych rozmiarów można go wczytać bezpośrednio do tablicy, gdzie każdy element jest kolejnym elementem tablicy:
  
-<code php>+<code php p9.php>
 $t=file('dane.txt'); $t=file('dane.txt');
 </code> </code>
Linia 169: Linia 167:
  
 Dane wczytane przy pomocy ''fgetcsv'' umieszczane są w tablicy wyliczeniowej - takiej, jaką znamy np. z C (indeksowana 0, 1, 2, ...). PHP udostępnia również tablice asocjacyjne, w który poszczególne elementy indeksowane są etykietami, np.: Dane wczytane przy pomocy ''fgetcsv'' umieszczane są w tablicy wyliczeniowej - takiej, jaką znamy np. z C (indeksowana 0, 1, 2, ...). PHP udostępnia również tablice asocjacyjne, w który poszczególne elementy indeksowane są etykietami, np.:
-<code php>+<code php p9.php>
 $zoo['pelikan'] = 'Ptak z dużym dziobem'; $zoo['pelikan'] = 'Ptak z dużym dziobem';
 $zoo['jenot'] = 'Szop po tuningu'; $zoo['jenot'] = 'Szop po tuningu';
Linia 182: Linia 180:
  
 Z kolei mniej skomplikowane struktury danych można przetwarzać np. linia po linii (z użyciem ''fgets()'') oraz: Z kolei mniej skomplikowane struktury danych można przetwarzać np. linia po linii (z użyciem ''fgets()'') oraz:
-  * [[http://www.php.net/manual/pl/function.explode.php|explode]] +  * [[https://www.php.net/manual/en/function.explode.php|explode]] 
-  * [[http://www.php.net/manual/pl/function.implode.php|implode]]+  * [[https://www.php.net/manual/en/function.implode.php|implode]]
  
  
pl/paw/lab_paw_php_1.1610111368.txt.gz · ostatnio zmienione: 2021/01/08 14:09 przez 127.0.0.1