php i bazy danych
Transkrypt
php i bazy danych
<?php
Ming_setScale(1.0);
$string = "Ming";
$f = new SWFFont("ComicSansMS.fdb");
$m = new SWFMovie();
$m->setRate(24.0);
$m->setDimension(2400, 1600);
$m->setBackground(0xff, 0xff, 0xff);
PHP i Bazy Danych
function text($r, $g, $b, $a)
{
global $f, $m;
$t = new SWFText();
$t->setFont($f);
$t->setColor($r, $g, $b, $a);
$t->setHeight(960);
$t->moveTo(-($t->getWidth($string))/2, 220);
$t->addString($string);
$i = $m->add($t);
$i->x = $x;
$i->y = $y;
$i->rot = $rot;
$i->s = $scale;
$i->rotateTo($rot);
Michał Dudkiewicz
[email protected]
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
pętla for
pętla for – instrukcja sterująca, przy pomocy której skrypt może wykonad
fragment kodu ustaloną z góry ilośd razy. Ilośd wykonao (iteracji) kontrolowana
jest zmienną pełniącą rolę licznika.
Przykład 1
for ($i=1;$i<10;$i++) {
echo $i.”<br>”;
}
Rolę licznika pełni zmienna $i wartośd początkowa wynosi 1, zakooczenie pętli
nastąpi kiedy zmienna osiągnie wartośd równą 10, licznik zwiększa swoją
wartośd o 1. Jako wynik wypisane zostaną wartości zmiennej $i od 1 do 9.
2
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
pętla for
Przykład 2
for ($k=20;$k>10;$k=$k-2) {
echo $i.”<br>”;
}
*Przykład 3
$proba=false;
for ($i=0; $proba==false; $i=$i+0.6) {
if ($i>3) $proba=true;
komunikat("\$i=".$i);
}
3
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
pętla for
Należy zwracad uwagę na to aby nie manipulowad wartością licznika wewnątrz
pętli, gdyż może to doprowadzid do działania pętli innego niż planowaliśmy.
Wyjątkiem jest sytuacja, kiedy celowo wykonujemy takie działanie.
Przykład 4
for ($i=1;$i<10;$i++) {
$i=4;
echo $i.”<br>”;
}
Powstała pętla nieskooczona !
4
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
pętla while
pętla while – instrukcja sterująca, przy pomocy której skrypt może wykonad
fragment kodu wiele razy. Ilośd wykonao (iteracji) kontrolowana jest warunkiem
wykonania pętli. Pętla nie ma określonej z góry ilości wykonao. Może nie wykonad
się ani razu, jeśli warunek wykonania pętli nie będzie spełniony. Za pomocą pętli
while można symulowad pętlę for.
Przykład 5
$i=5;
while ($i>10) {
$i--;
echo $i.”<br>”;
}
Pętla nie wykona się ani razu !
5
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
pętla do … while
pętla do … while – instrukcja sterująca, podobna do pętli while. Pętla wykona
się zawsze co najmniej raz gdyż warunek wykonania pętli sprawdzany jest na jej
koocu (a nie na początku jak w przypadku pętli while). Ta pętla także może
symulowad pętlę for.
Przykład 6
$i=5;
do {
$i--;
echo $i.”<br>”;
} while($i>10);
Pętla wykona się raz !
6
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
instrukcja „wielowarunkowa” case
case – instrukcja warunkowa podobna do if, jednak w odróżnieniu od if może
sprawdzad wiele wartości dla danego warunku (najczęściej warunkiem jest
wartośd zmiennej) i w zależności od wartości warunku, wykonywad określone
instrukcje. Pozwala zastąpid kilka warunków if. Ważnym elementem jest brake.
Przykład 7
switch ($a) {
case ”jeden”:
include(”jeden.php”);
break;
case ”trzy”:
include(”trzy.php”);
break;
default:
include(”dwa.php”);
}
7
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
obsługa formularza po stronie serwera
$_POST – zmienna tablicowa zawierająca dane z naszego formularza wysłanego
metodą POST.
Takie zmienne należy ze względów bezpieczeostwa bezwzględnie przetworzyd !
Istnieją proste sposoby, które pozwalają włamad się na strony, czy też wyrządzid
spore szkody w bazach danych.
Jedną z prostych i bardzo skutecznych (kiedy nie ma zabezpieczeo) technik jest
SQLInjection i PHPInjection
8
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
SQLInjection
SQLInjection – (z ang., dosłownie zastrzyk SQL) – luka w zabezpieczeniach
aplikacji internetowych polegająca na nieodpowiednim filtrowaniu lub
niedostatecznym typowaniu i późniejszym wykonaniu danych przesyłanych w
postaci zapytao SQL do bazy danych. Podatne są na niego systemy złożone z
warstwy programistycznej (przykładowo skrypt w PHP itp.) dynamicznie
generującej zapytania do bazy danych (MySQL, PostgreSQL itp.). Wynika on
zwykle z braku doświadczenia lub wyobraźni programisty.
Podstawowym sposobem zabezpieczania przed SQLInjection jest niedopuszczenie
do nieuprawnionej zmiany wykonywanego zapytania.
http://www.poradnik-webmastera.com/artykuly/bazy_danych/sql_injection.php
(źródło Wikipedia)
9
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
PHPInjection
PHPInjection – PHP Injection polega na dopisywaniu przez złośliwych
użytkowników fragmentów kodu do przesyłanych zmiennych m.in. za
pośrednictwem formularzy znajdujących się na stronach WWW.
Przed PHP Injection można zabezpieczyd się filtrowaniem przekazywanych
parametrów - wygląda to dokładnie tak samo, jak w przypadku SQL Injection,
jednak atak nie ma bezpośredniego (lub nie ma w ogóle) wpływu na bazę danych.
(źródło Wikipedia)
10
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
wyrażenia regularne
Wyrażenie regularne – w PHP są to pewne wyrażenia, opisujące w sposób
ogólny jak ma wyglądad łaocuch znaków (napis). Mając taki opis (wzorzec) można
testowad czy dany łaocuch spełnia nasze wymagania np.: czy jest poprawnym
składniowo adresem email.
Wyrażenia regularne konstruuje się w oparciu o:
• zwykłe znaki alfanumeryczne (litery, cyfry)
• kwantyfikatory powtórzeo
• wyrażenia logiczne (negacja, alternatywa)
• zakresy
11
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
kwantyfikatory powtórzeń
.
- jeden jakikolwiek znak (wyjątkiem jest znak nowej linii). Czyli pojedyncza
litera, cyfra, przecinek, spacja, czy jakikolwiek inny znak będzie pasował do tego
wzorca
*
- zero, jedno lub więcej wystąpieo
?
- zero lub jedno wystąpienie
+
- jedno lub więcej wystąpieo
{n}
{n,}
{,m}
{n,m}
- dokładnie n wystąpieo
- co najmniej n wystąpieo
- co najwyżej m wystąpieo
- co najmniej n i nie więcej niż m wystąpieo
12
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
znaki specjalne
We wzorcach można również stosowad specjalne litery poprzedzone znakiem
odwrotnego ukośnika (ang. backslash), które mają specjalne znaczenie.
Na przykład \d oznacza dowolną cyfrę (znak z zakresu od 0 - 9), a \s to spacja.
Oczywiście w tym przypadku również można wykorzystad kwantyfikatory
powtórzeo.
Najprostszy wzorzec (nie uwzględniający znaczenia analizowanych danych) dla
jednej z form zapisu numeru identyfikacji podatkowej może wyglądad następująco:
\d{3}-\d{2}-\d{2}-\d{3}
Odwrotny ukośnik może również służyd do usunięcia specjalnego znaczenia
niektórym znakom.
13
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
zakresy
Możliwe jest również definiowanie zestawów dopuszczalnych znaków.
Wykorzystuje się do tego nawiasy kwadratowe - [ i ]. Dla przykładu, dla określenia
wzorca dla liczby w systemie szesnastkowym (wykorzystującej jako cyfry wszystkie
cyfry oraz wielkie litery od A do F) wystarczy użyd:
0x[0123456789ABCDEF]+
Wypisywanie wszystkich możliwości jest nieco żmudne. Można skorzystad z
zakresów. I tak, ten sam przykład można zapisad jako:
0x[0-9A-F]+
14
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
negacja, alternatywa
W pewnych przypadkach lepiej jest określid znaki, które nie mogą się pojawid niż
znaki, które mogą się pojawid, chociażby z powodu ilości pozycji do wpisania. Do
zdefiniowania zestawu znaków, które wystąpid nie mogą służy znak ^ (ale tylko
gdy rozpoczyna definicję zestawu znaków). Przykładowo, poprawnie zapisanego
hiperłącza to:
<a\shref="[^\n">]+">[^>]+</a>
Alternatywa to możliwośd zdefiniowania kilku wzorców dla tego samego miejsca
w analizowanym ciągu znaków.
Na przykład słowo cztero lub ośmioliterowe to:
[a-zA-Z]{4}|[a-zA-Z]{8}
Wykorzystywany jest tutaj znak |.
15
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
początek i koniec linii
Istnieje również możliwośd oznaczenia początku i kooca linii.
Początek linii jest oznaczany znanym już symbolem ^, jednak aby był traktowany
jako początek linii, to musi on występowad na początku wzorca, a koniec to $,
analogicznie, powinien występowad na koocu wzorca.
Wzorzec opisujący poprawny składniowo adres email:
^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$
16
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcje sprawdzania preg_match, preg_match_all
Przykład 8 (sprawdzanie czy podany email jest poprawny)
$wzorzec = '/^[a-zA-Z0-9.\-_]+@[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}$/';
$dane = $_POST['email'];
if(preg_match($wzorzec,$dane))
echo("E-mail prawidłowy");
else
echo("E-mail nieprawidłowy");
Funkcja preg_match_all różni się od funkcji preg_match tym, że wyszukuje wszystkie ciągi
pasujące do wzorca i nie poprzestaje na znalezieniu tylko pierwszego. Wynik zwraca w
postaci tablicy.
17
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcja preg_replace
preg_replace - funkcja potrafi zamienid w tekście wystąpienie jednego łaocucha
znaków (napisu) na inny łaocuch znaków (napis). Napis do wymiany opisany jest
wyrażeniem regularnym.
Zamiana adresu strony na działający link:
1) Musimy opisad protokół. Ustalamy, że interesują nas tylko najpopularniejsze:
http, https, ftp czy nntp. (wszystkie tutaj wymienione protokoły mają w
środku litery t i p, niektóre z nich mogą zostad rozszerzone o literę s).
Dlatego początek adresu możemy zapisad jako:
[a-zA-Z]{1,2}tps?:\/\/
18
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcja preg_replace
2) Opis domeny (podobnie jak przy wzorcu na adres email), rozszerzymy o
numer portu TCP na którym ma zostad nawiązane połączenie:
[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}(:[0-9]{1,5})?\/
W nawiasach okrągłych jest opisany numer portu, potem jest znak ? określający,
że wyrażenie może wystąpid co najwyżej raz. Nawiasy okrągłe powodują
utworzenie podwyrażenia i znak ? będzie miał zastosowanie tylko do tego
podwyrażenia.
19
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcja preg_replace
Przykład 9 (zamiana tekstu na link)
$wzorzec
=
'/[a-zA-Z]{1,2}tps?:\/\/[a-zA-Z0-9\-.]+\.[a-zA-Z]{2,4}(:[0-9]{1,5})?\/[^\n\s]*/';
$zamiana = '<a href="\0">\0</a>';
$wynik = preg_replace($wzorzec, $zamiana, $tresc);
W zmiennej zamiana występuje wyrażenie \0 oznaczające ciąg, który został
dopasowany do całego wyrażenia.
20
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcja preg_replace
Przykład 10 (zamiana wg tablicy z wzorcami)
$usmiechy = array( '/:?\)/',
'/:?\(/',
'/:?\-/',
'/:?\[/');
$zamiana = array( '<img
'<img
'<img
'<img
src="usmiech.png">',
src="smutek.png">',
src="zastanowienie.png">‘,
src="oczko.png">');
$tresc = preg_replace($usmiechy, $zamiana, $tresc);
Każde wystąpienie :), :(, :/, ;) w tekście reprezentowanym przez zmienną $tresc
zostanie zastąpione odpowiednim obrazkiem.
21
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcje explode i implode
funkcja explode - funkcja pozwalająca utworzyd z ciągu znaków oddzielonych
jakimś ustalonym znakiem (separatorem) tablicę.
Przykład 10
(tablica z wszystkich elementów)
$text = ”14/09/2009;19:23:33;Internet Explorer;192.168.1.1”
$tablica = explode(”;”,$text);
Przykład 11
(tablica tylko z 2 pierwszych elementów)
$text = „jeden|dwa|trzy|cztery”;
$tab = explode('|', $str, 2);
22
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP I BAZY DANYCH
funkcje explode i implode
Przykład 12
(tablica z wszystkich elementów oprócz ostatniego)
$text = „jeden|dwa|trzy|cztery”;
$tab = explode('|', $str, -1);
funkcja implode - funkcja pozwalająca utworzyd z tablicy ciąg znaków
oddzielonych jakimś ustalonym znakiem (separatorem.
Przykład 13
$tablica = array(‘kowalski', ‘[email protected]', ‘123456789');
$napis = implode(",", $array);
23
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu
PHP i MING
Zakończenie
cdn …
24
System podwyższenia kwalifikacji zawodowych pracowników Izby Celnej w Toruniu