Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Technologie internetowe Serwis WWW – język php
http://www.ftj.agh.edu.pl/~antek
Antoni Dydejczyk
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
• Statyczne: zawartość określona w momencie ich napisania przez autora
• Dynamiczne: brak predefiniowanej postaci; generowany na nowo w odpowiedzi na każde wezwanie
• Aktywne: dokumenty zawierające w sobie kopię programu uruchamialnego lokalnie w środowisku przeglądarki
Rodzaje dokumentów WWW
Wyświetlany dokument jest napisany w HTML, XHTML czy XML.
Wyświetlany dokument tworzony jest np. w PHP.
Wyświetlany dokument wykorzystuje elementy języka JavaScript.
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Dokument statyczny – serwis WWW
Serwer WWW
newton.ftj.agh.edu.pl
http://newton.ftj.agh.edu.pl/~antek/test.html
Plik: test.html
test.html
1
2
2
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Formularze w serwisie WWW
Serwer WWW
newton.ftj.agh.edu.pl
Plik: login.html
http://newton.ftj.agh.edu.pl/~antek/login.html
login.html
<form action= "login.php" method="post"> Podaj login: <input type="text" name="login" />
Podaj hasło: <input type="passsword" name="pass" />
<input type="submit" />
</form>
login.html
1
2
2
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Przetwarzanie formularza w serwisie WWW
Serwer WWW
newton.ftj.agh.edu.pl
Plik: login.php
http://newton.ftj.agh.edu.pl/~antek/login.php
<?php
echo "Twoje login: $_POST["login"] !";
?>
login.php
PHP login.php
4
3 4
login=login&password=pass
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Dokument dynamiczny – formularz html
<html>
<head>
<title>TEST</title>
<head>
<body>
<form action= "odpowiedz.php" method="post"> Podaj imie: <input type="text" name="username"><br> <input type="submit">
</form>
</body>
</html>
pytanie.html
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Dokument dynamiczny – skrypt php
<html>
<head>
<title>TEST</title>
<head>
<body>
<?php
echo "Twoje imie : $_POST["username"] !!! <br>";
?>
</body>
</html>
odpowiedz.php
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Atrybut method ="metoda" określa metodę wysłania danych z formularza.
Metoda get – po zatwierdzeniu formularza pobrane są z niego pary nazwa-wartość, kodowane i dołączone do adresu podanego w atrybucie ACTION (ze znakiem "?" jako separator) i wysłane do pośrednika procesu (domyślnie).
Metoda post - po zatwierdzeniu formularza, dane zostaną włączone do ciała formularza i wysłane do pośrednika procesu.
np. http://www.test.com/test_1/prog1.php?dana1=11
Uwaga : tą metodą można wysłać żądanie odnośnikiem np. <a href=„”czytaj.php?zakres=wszystkie”>Pokaż wszystkie rekordy.</a>
Formularze HTML – element <form>
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Definiowanie formularza:
<form> ..... Tutaj umieszczamy pola formularza .... </form>
Atrybuty elementu <form>
action="adres” Określa sposób obsługi formularza - gdzie go wysłać name ="nazwa"
Nazwa formularza
Formularze HTML – element <form>
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Znaczniki stosowane w polu formularza: <input> <input type=”text” name=”pole1” value=”przykład 1” > <input type=”password” name=”pole_hasla” value=”przykład”> <input type=”checkbox” value=”yes” name=”test” checked> <input type=”radio” value=”a” name=”przycisk_opcji”> wartosc 1<br> <input type=”radio” value=”b” name=”przycisk_opcji”> wartosc 2<br> <input type=”file” name=”polepliku”> <input type=”hidden” name=”user” value=”test”> <input type=”submit”> <input type=”reset”>
Formularze HTML – znaczniki
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Znaczniki stosowane w polu formularza: <select> <select name=”lista wyboru” size=”1”> <option value=”1”> Malopolskie <option value=”2”> Zachodnopomorskie </select> <select name=”lista wyboru” size=”3”> <select name=”lista wyboru” size=”3” multiple> <textarea> <textarea name=”poletekstu” rows=”5” cols=”60” wrap=”virtual”> </textarea>
Formularze HTML – znaczniki
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
<html> <body> <form method=post> <p> Pole tekstowe </p> <input type="text" name="pole1" value="przykład 1" > </input><br> <p> pole hasla: </p> <input type="password" name="pole_hasla" value="przykład"><br> </input><br> <p> Pole wyboru: </p> <input type="checkbox" value="yes" name="test" checked><br> </input><br> <p> Przycisk opcji: </p><p> <input type="radio" value="a" name="przycisk_opcji"> wartosc 1<br> </input><br> <input type="radio" value="b" name="przycisk_opcji"> wartosc 2<br> </input><br> <p> Pole zalaczonego pliku </p> <input type="file" name="polepliku"><br> </input><br> </form> </body> </html>
Formularz HTML – przykład
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Formularz HTML – przykład
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
<html> <body> <form method=post> <select name="lista wyboru" size="1"> <option value="1"> Malopolskie <option value="2"> Zachodnopomorskie </select> <br><br><br> <select name="lista wyboru" size="3"> <option value="1"> Malopolskie <option value="2"> Zachodnopomorskie </select> <br><br><br> <select name="lista wyboru" size="3" multiple> <option value="1"> Malopolskie <option value="2"> Zachodnopomorskie </select> <br><br><br> <textarea name="poletekstu" rows="5" cols="60" wrap="virtual"> </textarea> </form> </body> </html>
Formularz HTML – przykład
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Formularz HTML – przykład
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Metoda GET protokołu HTTP
GET zwraca się do serwera o określony zasób
stosowany przy specyfikowaniu
wymaganego zasobu, parametry dołączane do URL (po
znaku zapytania), ograniczona długość przekazywanych
parametrów.
GET /usr/bin/image1?... HTTP/1.1
Accept: image/gif, image/jpeg
Host: localhost
Request (Get Method)
Response
HTTP/1.1 200 OK
Date: Mon, 08-Jan-01 13:15:14 GMT
Server: Challenger
MIME-version: 1.0
Content-length: 2048
(Body of document)
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Metoda GET – przykład
<html> <head> <title>TEST</title> </head> <body> <h1>TEST</h1> <form method="get" action="test_get.php" > <input type="text" name="pole1" value="przyk1" /><br /> <input type="text" name="pole2" value="przyk2" /><br /> <input type="submit" /><br /> </form> </body> </html>
Serwer WWW
pascal.ftj.agh.edu.pl
http://pascal.ftj.agh.edu.pl/~antek/spn/przyklad_get.html
1
2 przykład_get.html
przykład_get.html
2
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Metoda GET - przykład
GET /~antek/http/test_get.php?pole1=przyk1&pole2=przyk2 HTTP/1.1 Host: newton.ftj.agh.edu.pl User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.1) Gecko/20060111 Firefox/1.5.0.1 Accept: text/xml,application/xml,application/xhtml+xml,text/html; q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 Accept-Language: pl,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://newton.ftj.agh.edu.pl/~antek/http/index.html
Wysłanie danych z formularza na serwer – metoda GET – do pliku test_get.php.
pascal.ftj.agh.edu.pl
http://pascal.ftj.agh.edu.pl/~antek/spn/test_get.php?pole1=przyk1&pole2=przyk2
3
test_get.php
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Metoda GET - przykład
<html> <head> <title>TEST</title> </head> <body> <h1>TEST - GET</h1> <?php $pole1 = $_GET['pole1'] ; $pole2 = $_GET['pole2'] ; echo "Pole 1 -".$pole1."<br />" ; echo "Pole 2 -".$pole2."<br />" ?> </body> </html>
pascal.ftj.agh.edu.pl
Odpowiedź serwera na wysłany formularz – realizacja zawartości pliku test_get.php.
test_get.php
4
4
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Metoda POST protokołu HTTP
POST zwraca się do serwera o określony zasób
parametry wysyłane w ciele
komunikatu; dodatkowo zawiera nagłówki Content-
Type oraz Content-Length; wołana lokalizacja (URI) wskazuje
zwykle na program obsługujący, nie zaś na pobierany zasób;
odpowiedź jest zwykle dokumentem generowanym, nie zaś statycznym.
Request (Post Method)
POST /cgi-bin/doc.pl HTTP/1.1
Accept: *.*
Accept: image/gif
Content-type: text/html
Content-length: 50
(Input information)
Response
HTTP/1.1 200 OK
Date: Mon, 08-Jan-01 13:15:14 GMT
Server: Challenger
MIME-version: 1.0
Content-length: 2000
(Body of the document)
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Metoda POST - przykład
<html> <head> <title>TEST</title> </head> <body> <h1>TEST</h1> <form method= "post" action="test_post.php" > <input type="text" name="pole1" value="przyk1" /><br /> <input type="text" name="pole2" value="przyk2" /><br /> <input type="submit" /><br /> </form> </body> </html>
Wysłanie zapytania na serwer WWW Odpowiedź serwera WWW na wysłane zapytanie - formularz
przykład_post.html 2
http://pascal.ftj.agh.edu.pl/~antek/spn/przyklad_post.html 1
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Wysłanie danych z formularza na serwer (3) i odpowiedź serwera do przeglądarki (4)
3
4
Metoda POST - przykład
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Język PHP
Wersja 0.0: Jesień 1994 ( Rasmus Lerdorf – skrypty w perl’u, potem w C)
Wersja 1.0: Personal Home Page Tools początek 1995
Wersja 2.0: PHP/FI 1995-1997 (Form Interpreter)
Wersja 3.0: PHP 1997-2000 (Zeev Suraski i Andi Gutman))
Wersja 4.0: PHP połowa 2000
Wersja 4.1: 10 grudzień 2001
Wersja 4.2: 22 kwiecień 2002
Wersja 5.0: luty 2003
Wersja 5.1: 24 listopada 2005 Wersja 5.2: 2 listopad 2006
Wersja 5.3: 30 czerwiec 2009 Wersja 5.4: 14 marzec 2013
Rok 2016 – wersja 5.4.x, 5.5.x i 5.6 oraz 7.0.x
Development Team (515+ osób z dostępem poprzez CVS).
Na początku 2001 > 5,100,000 web-sites używa PHP.
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Język PHP
Netcraft 2013
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Możliwości języka PHP
Przetwarzanie plików i katalogów
Współpraca z interfejsem ODBC, PDO
Przetwarzanie poczty
Wczytywanie danych z innych stron WWW
Generowanie dynamiczne grafiki
Przetwarzanie dokumentów XML
Generowanie dokumentów PDF
Śledzenie i utrzymywanie połączenia
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Styl programowania - PHP
<HTML>
<HEAD>
<TITLE>Search results for "<?php print $query;?>" </TITLE>
</HEAD>
<BODY>
Tradycyjny styl programowania - perl
#!/usr/bin/perl
print "<HTML><HEAD>\n";
print "<TITLE>Search results for \"$query\"</TITLE>\n";
print "</HEAD>\n";
print "<BODY>\n";
Skrypty PHP
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
XML Style
<?php
print “this is XML style”;
?>
Skrócona wersja
<?
print “this is ASP style”;
?>
W celu użycia skróconej wersji należy ustawić odpowiedni parametr w pliku konfiguracyjnym.
Skrypty PHP
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
unix> vi test.php
#!/usr/bin/php
<?php
print " Hello World - PHP \n"
?>
unix> chmod 755 test.php
unix> ./test.php
Hello World – PHP
unix>
Skrypty PHP z linii poleceń
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
<?php
if( strstr($HTTP_USER_AGENT,"MSIE") ) {
?>
<b>You are using Internet Explorer</b>
<?php
} else {
?> <b>You are not using Internet Explorer</b>
<?php
}
?>
Skrypt PHP i język HTML
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Opis kodu komentarzem jest
dobrą praktyką programisty
<?php // - komentarz jak w języku C # - komentarz jak w języku perl /** * - wieloliniowy komentarz jak w języku C++ * (komentarz dla programu phpDocumentator) */ ?>
Komentarze w kodzie skryptu
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Podstawowe typy danych
– numbers (integers i real)
– strings ( "abc“ i 'abc' )
– booleans (true,false )
Dynamiczne tworzenie
– Nie jest wymagana deklaracja zmiennych
– Konwersja typów jest wykonywana automatycznie
Zmienne w języku PHP
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
+ Dodawanie - Odejmowanie * Mnożenie / Dzielenie % Dzielenie modulo ++ Zwiększenie o jeden -- Zmniejszenie o jeden
Operatory arytmetyczne
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
== Jest równe
> Jest większe od
< Jest mniejsze od
>= Jest większe lub równe
<= Jest mniejsze lub równe
!= Nie jest równe
&& and Logiczne "i" || or Logiczne "lub" ^ xor Logiczne "albo"
! Logiczne "nie"
Operatory logiczne i relacyjne
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Zmiana zmiennych – funkcje
<?php
$bool = true;
print (int)$bool;
?>
Zmiana zmiennych – bez specjalnych funkcji
<?php $x = "100"; $x++; // zmienna $x jest teraz 101
?>
Konwersja zmiennych
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Zmienne globalne deklarowane wewnątrz skryptów natomiast niewidoczne wewnątrz funkcji.
Zmienne widoczne wewnątrz funkcji jako ich lokalne zmienne.
Zmienne używane wewnątrz funkcji i deklarowane jako global mające odpowiedniki do zmiennych globalnych o tych samych nazwach.
Typy zmiennych w PHP
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Dodawanie
$a = 1 + 1; // ustawia $a na 2
$a += 4; // dodaje 4 do $a
$a ++; // dodaje 1 do $a
Odejmowanie
$a = 10 - 5; // ustawia $a na 5
$a -= 6; // odejmuje 6 od $a
$a --; // odejmuje 1 od $a
Operacje na zmiennych
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Mnożenie
$a = 2 * 3; // ustawia $a na 6
$a *= 10; // mnoży $a przez 10
Dzielenie
$a = 10 / 3; // ustawia $a na 3.3333
$a /= 2; // dzieli $a na pół
Moduł
$a = 10 % 3; // ustawia $a na 1
$a %= 2; // ustawia $a jako moduł 2
// z samej siebie
Operacje na zmiennych
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Ciąg znaków jako sekwencja znaków
$stringTest = "to jest ciag znakow";
echo $stringTest[0]; // output: t
echo $stringTest; // output: to jest ciag znakow
Ciąg znaków w "pojedynczych apostrofach"
$age = 37;
$strTest = 'Tom ma $age lat'; // output: Tom ma $age lat
$strTest = "Tom ma $age lat"; // output: Tom ma 37 lat
Operacje na ciągach znaków
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Konkatenacja ( łączenie ciągów znaków )
$conc = " to"." jest "." połączony "." ciąg znaków "; echo $conc; // output: to jest połączony ciąg znaków $newConc = 'tak więc $conc '.$conc; echo $newConc; // output: tak więc $conc to jest połączony ciąg znaków
Operacje na ciągach znaków
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Funkcja explode() $sequence = "A,B,C,D,E,F,G"; $elements = explode ("",$sequence); // elementami tablicy są ciągi znaków pomiędzy "," echo $elemets[0]; // output: A; echo $elemets[1]; // output: B; echo $elemets[2]; // output: C; echo $elemets[3]; // output: D; echo $elemets[4]; // output: E; echo $elemets[5]; // output: F; echo $elemets[6]; // output: G;
Operacje na ciągach znaków
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
chr - zwraca znak
ord - zwraca kod ASCII znaku
sprintf - zwraca sformatowany tekst
strlen - podaje długość tekstu
strpos - znajduje pozycję od której zaczyna się ciąg znaków
strrev - odwraca ciąg znaków
strtolower - zmienia znaki na małe
strtoupper - zmienia znaki na duże
str_replace - podmienia wyspecyfikowany tekst na nowy w ciągu znaków
Operacje na ciągach znaków
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Grupa zmiennych, każdy element składowany w tablicy jest skojarzony z odpowiednim kluczem wskazującym na ten element. $books = array( 0=>"php manual", 1=>"perl manual", 2=>"C manual"); $books = array( 0=>"php manual", "perl manual","C manual"); $books = array ("php manual", "perl manual", "C manual"); echo $books[2]; //output: C manual
Tablica asocjacyjna w PHP ( tablica hashowana ) $books = array("php manual"=>1, "perl manual"=>1, "C manual"=>1); echo $books["perl manual"]; // output: 1 $books["lisp manual"] = 1; // dodanie nowego elementu
Deklaracje tablic
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Deklaracja zmiennych w tablicy
$books = array("php manual", "perl manual", "C manual");
Wydruk zawartości tablicy
for ($i=0; $i < count($books); $i++)
print ($i+1). "-ta kiążka w zbiorze: $books[$i] ";
Dostęp do danych w tablicach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Deklaracja zmiennych w tablicy asocjacyjnej
• $books = array("hp manual"=>1, "perl manual"=>2, "C manual"=>3);
Funkcja each()
while ($item = each( $books )) // Retrieve items one by one
print $item["value"]. "-ta książka w bibliotece : ".$item["key"];
Funkcje each() i list()
while ( list($value,$key) = each( $books ))
print "$value-ta książka w bibliotece : $key";
Funkcje operujące na tablicach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Wielowymiarowa tablica
$books = array(
array(“title”=>“php manual”,”editor”=>”X”,”author”=>”A”),
array(“title”=>“perl manual”,”editor”=>”Y”,”author”=>”B”),
array(“title=>“C manual”,”editor”=>”Z”,author=>”C”));
Wspólna pętla
for ($i=0; $i < count($books); $i++ )
print "$i-st book, title: ".$books[$i]["title"]." author: "
.$books[$i]["author"]." editor: ".$books[$i]["editor"];
Wielowymiarowe tablice
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Wykorzystanie funkcji list() i each()
for ($i=0; $i < count($books); $i++) { print "$i-st book is: "; while ( list($key,$value) = each( $books[$i] )) print "$key: $value "; print "<BR>"; // or “\n” }
Funkcje operujące na tablicach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Konstrukcja foreach
<?php //values $a = array (1, 2, 3, 17); foreach ($a as $v) { print "Current value of \$v: $v.<br>"; } // values and keys $a = array (1, 2, 3, 17); foreach($a as $k => $v) { print "\$a[$k] is $v<br>"; }
?>
Funkcje operujące na tablicach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
if ($test=='AAA')
{
// odpowiedni kod
}
else if ($test=='bbb')
{
// odpowiedni kod
}
else
{
// jeżeli nie wybrano poprzednich warunków
}ca
Instrukcja warunkowa - IF
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Sprawdzenie czy zmienna jest ustawiona.
Dwa rozwiązania …
if ($a)
{
print “\$a exists";
}
if (!empty($a))
{
print “\$a exists";
}
Instrukcja warunkowa - IF
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
switch ($test)
{
case "AAA":
// odpowiedni kod
break ;
case "bbb":
// odpowiedni kod
break ;
default:
// jeżeli nie wybrano poprzednich warunków
}
Instrukcja warunkowa - SWITCH
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
while ( wyrażenie logiczne ) { // odpowiedni kod } do
{ // odpowiedni kod } while ( wyrażenie logiczne ) ; for ( $i = 1; $i <= 5; $i++ )
{ // odpowiedni kod }
Rekurencja – WHILE, DO .. WHILE, FOR
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Przetwarzanie plików składa się z trzech kroków:
1) Otwarcie pliku. Generowanie odpowiedniej akcji w przypadku dostępu lub braku dostępu do pliku.
2) Zapis i odczyt z pliku.
3) Zamknięcie pliku.
Funkcja otwierająca plik - fopen().
Operacje na plikach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
r czytanie
r+ czytanie lub zapis
w nadpisanie – jeżeli plik istnieje jest usuwany i zapisany od nowa
w+ nadpisanie lub czytanie – jeżeli plik istnieje jest usuwany i zapisany od nowa
a dopisanie
a+ dopisanie i zapis
b mod binarny – różnica pomiędzy plikiem binarnym i znakowym
$fp = fopen( "file_name" , "mode" );
Operacje na plikach – otwarcie pliku
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
fgets() – funkcja czyta rekord z pliku
@fp = fopen("orders.txt", "a");
fwrite($fp, "adding something to the file");
while (!feof($fp))
{
$order = fgets($fp, 100);
print $order. "<br>";
}
Inne funkcje fgetss, fgetcsv, fread and fgetc.
Operacje na plikach – czytanie
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Zapis do pliku
–fwrite() …zapis do pliku
–fputs() …zapis do pliku ciągu znaków
@fp = fopen("orders.txt", "a");
fwrite($fp, "adding something to the file");
Zamknięcie pliku
fclose($fp);
Operacje na plikach – zapis
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
file_exists(path) - sprawdzenie czy istnieje plik
filesize(path) - sprawdzenie wielkości pliku
nlink(path) - usunięcie pliku
flock(path, option) - blokada pliku na odpowiednim poziomie:
– 1 : Reading lock
– 2 : Writing lock
– 3 : Release existing lock
Operacje na plikach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
form.php – plik wczytujący dane
<form action="receive.php" method="post"> Nazwisko: <input type="text" name="username"><br> <input type="submit"> </form>
receive.php – plik przetwarzający dane
<?php if($username) print "Twoje nazwisko: $username <br>";
else {
?> <a href="form.php">Proszę wypełnić najpierw formularz !</a>
<?php } ?>
Przetwarzanie danych z formularzy w PHP
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
<?php if($_POST[username])
{ echo "Twoje nazwisko - $username !!! <br>"; }
else
{
?> <form action="<?php= $PHP_SELF ?>" method="post"> Nazwisko: <input type="text" name="username"><br> <input type="submit"> </form>
<?php
}
?>
receive.php – cd.
Przetwarzanie danych z formularzy w PHP
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
Funkcje wykorzystywane przy obsłudze formularzy:
1. trim() usuwa białe znaki z początku i z końca ciągu
znaków
2. ltrim() i chop() podobne działanie – ale albo z lewej
albo z prawej strony usuwane są białe znaki
3. Zmiana wielkości liter strtoupper() - przekształcenie liter na duże
strtolower() - przekształcenie liter na małe
ucfirst() - pierwsza litera w pierwszym wyrazie duża
ucwords() - w każdym wyrazie pierwsza litera duża
Funkcje kontroli danych w formularzach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
4. Wstawianie znaków ucieczki
AddSlashes() - wstawienie znaków ucieczki ( np.. \" )
StripSlashes() - usunięcie znaków ucieczki
5. Usuwanie elementów HTML z wprowadzanych ciągów
znaków
strip_tags()
$address=strip_tags(trim($_POST["address"])) ;
Funkcje kontroli danych w formularzach
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
<form action="kontrola.php" method="post"> <table> <tr> <td>Nazwisko</td><td> <input type="text" name="nazwisko" /></td> </tr> <tr> <td>Imie</td><td> <input type="text" name="imie" /> </td> </tr> <tr> <td>Pytanie 1</td> <td> <span style="">Pytanie 1</span><br> <input type="radio" name="pyt1" value="1"/> Odpowiedz 1<br> <input type="radio" name="pyt1" value="2"/> Odpowiedz 2<br> <input type="radio" name="pyt1" value="3"/> Odpowiedz 3 </td> </tr> <tr> <td> <input type="reset" /> </td> <td> <input type="submit" name="wyslij" value="Wyslij" /> </td> </tr> </table> </form>
Formularz z pytaniami testu.
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
$nazwa = "wyniki.txt" ; if (file_exists($nazwa)) { echo "Plik $nazwa istnieje"; $uchwyt = fopen($nazwa,"a"); } else { echo "Plik $nazwa nie istnieje"; $uchwyt = fopen($nazwa,"w"); } $nazwisko = $_POST['nazwisko'] ; $imie = $_POST['imie']; $pyt1 = $_POST['pyt1']; $pyt2 = $_POST['pyt2']; $pyt3 = $_POST['pyt3']; $pyt4 = $_POST['pyt4']; $pyt5 = $_POST['pyt5']; /* * Zapis danych do pliku * $tekst - zmienna zawiera dane dotyczace jednej odpowiedzi testu * - funkcja fwrite() zapisuje dane do pliku */ $tekst = $nazwisko.":".$imie.":".$pyt1.":".$pyt2.":".$pyt3.":".$pyt4.":".$pyt5.":"."\n" ; fwrite($uchwyt,$tekst) ;
Przetwarzanie danych z formularza testu.
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk
$nazwa = "wyniki.txt" ; $uchwyt = fopen($nazwa,"r") ; print "<table border='1'>" ; print "<tr><th>Nazwisko</th><th>Imie</th><th>Pyt_1</th><th>Pyt_2</th>"; print "<th>Pyt_3</th><th>Pyt_4</th><th>Pyt_5</th></tr>" ; while ( false !== ($linia = fgets($uchwyt)) ) { $dane = explode(":",$linia) ; $tekst = "<tr>" ; $tekst .= "<td>".$dane[0]."</td>" ; $tekst .= "<td>".$dane[1]."</td>" ; $tekst .= "<td>".$dane[2]."</td>" ; $tekst .= "<td>".$dane[3]."</td>" ; $tekst .= "<td>".$dane[4]."</td>" ; $tekst .= "<td>".$dane[5]."</td>" ; $tekst .= "<td>".$dane[6]."</td>" ; $tekst .= "</tr>" ; print $tekst ; } print "</table>"
Odczyt wyników testu z pliku.
Informatyka w szkole, Technologie Internetowe, wykład 2, 13.12.2019 Antoni Dydejczyk