08 php 1

background image

PHP

PHP: Hypertext Preprocessor

background image

PHP: Hypertext Preprocessor

• Jest to język programowania

osadzany w

HTML

składniowo podobny do

C

,

Perla

i

Javy

• PHP to język programowania

przeznaczony dla programistów WWW

pozwalający na szybkie tworzenie
dynamicznych aplikacji WWW

background image

Prosty przykład kodu PHP

• <html>

<head>

<title>Prosty przykład kodu

PHP</title>

</head>

<body>

<?php

echo "Witajcie w PHP!" ;

?>

</body>

• </html>

background image

Preprocesor PHP

• Preprocesor PHP wykonuje cały kod zawarty

pomiędzy znacznikami

<?php

i

?>

umieszczonymi w kodzie HTML i zwraca wynik
w postaci tekstu.

• Kod ten jest wykonywany na serwerze WWW a

nie na kliencie.

• Przeglądarka nie wie, że do stworzenia strony

był używany PHP.

background image

Dlaczego PHP

• PHP jest pełnowartościowym językiem

programowania.

• PHP współpracuje z wieloma systemami

baz danych.

• Możliwy jest również dostęp do usług

sieciowych takich jak IMAP, POP3, NNTP

i TTP.

• PHP może być użyty we wielu

konfiguracjach serwerów.

background image

Wolne oprogramowanie

www.php.net

przechowuje kod źródłowy i

skompilowane moduły PHP.

• PHP jest dostępne na różne platformy.
• PHP można uruchomić z lini poleceń.
• PHP może działać w modelu CGI
• Istnieje wiele dobrych bibliotek funkcji.
• Można programować obiektowo.

• PHP nie wymaga opłat licencyjnych

background image

Konfigurowanie PHP

• Konfigurowanie PHP zostaw

administartorowi systemu.

• Jeśli sam jesteś administratorem:

– zapoznaj się dokładnie z dokumentacją
– pomyśl o jakiejś polityce bezpieczństwa
– przeanalizuj

php.ini

– dostosuj

php.ini

– jeśli to nie wystarczy, kompiluj PHP z

własnymi opcjami.

background image

Sposoby oznaczania bloku kodu

PHP w HTML

• <?

echo "użycie krótkich znaczników PHP

do wyjścia z trybu HTML<br>"; ?>

• <?php

echo "wyjście przy użyciu pełnych

znaczników PHP<br>"; ?>

• <script language="php">

echo "niektóre edytory HTML nie

obsługują instrukcji przetwarzania<br>";

• </script>

• <%

echo "można stosować również znaczniki

w stylu ASP<br>"; %>

background image

Komentarze w PHP

<?php

echo "Witaj świecie!<br>";

//

To jest jednowierszowy komentarz w

stylu C++

/*

To jest wielowierszowy

blok komentarza

*/

echo "Witamy ponownie.<br>";

#

To jest komentarz w stylu skryptów

Uniksa

?>

<?php

/* Poniższa linia spowoduje wypisanie "To wyświetli

nic."

*/

?>

To wyświetli <?php # echo "coś"; ?> nic.<br>

<?php

/*

echo "A tutaj mamy problem."; /* Komentarz ten jest

nieprawidłowy */

*/

?>

background image

Typy

• liczby zmiennoprzecinkowe,
• liczby całkowite,
• ciągi,
• tablice
• obiekty

Typ zmiennej jest ustalany w oparciu o
kontekst w jakim jest użyta zmienna i nie

jest on jawnie ustalany przez programistę

.

background image

Liczby — całkowite i

zmiennoprzecinkowe

• <?php

$int1 = 523; // liczba dziesiętna

$int2 = -523; // dziesiętna ujemna

$int3 =

01013; // ósemkowa reprezentacja liczby 523

$int4 =

0x20B; // szesnastkowa reprezentacja liczby

523

$float1 = 523.197; // zwykły zapis liczby

zmiennoprzecinkowej

$float2 = 5.23197e2; // notacja naukowa liczby

zmiennoprzecinkowej

/* Wypisanie wszystkich liczb.

Wyświetla "523, -523, 523, 523, 523.197, 523.197".

*/

print( "$int1, $int2, $int3, $int4, $float1,

$float2<br>" );

• ?>

background image

Ciągi

• Ciągi w PHP są ograniczane apostrofami (

'

) lub

cudzysłowami (

"

).

• Jeżeli ciąg jest otoczony cudzysłowami, zmienne

zapisane w ciągu zostają zamienione na ich

wartości.

• Ciągi mogą być łączone przy użyciu operatora

kropki

(

.

).

• Podobnie jak w języku C, mamy dostęp do

poszczególnych znaków ciągu, traktując go jak

tablicę znaków

.

background image

Zasady konwersji

• Jeżeli ciąg zaczyna się od danych

numerycznych, zostaną one skonwertowane na
liczbę.

• Jeżeli ciąg nie zaczyna się prawidłowymi danymi

liczbowymi, wartością ciągu będzie zero (0).

• Jeżeli dane numeryczne zawierają jeden ze

znaków

.

,

e

lub

E

, wartość będzie liczbą

zmiennoprzecinkową a w przeciwnym
przypadku liczbą całkowitą.

background image

Tablice

• Tablice w PHP zachowują się zarówno tak jak

tablice indeksowane

(wektory) oraz jak tablice

mieszające (

asocjacyjne

).

• PHP pozwala na tworzenie tablic

wielowymiarowych.

• Można indeksować jeden wymiar tablicy

wielowymiarowej liczbami a inny w sposób

asocjacyjny.

• W przypadku tablic wielowymiarowych należy

użyć

nawiasów klamrowych

do zaznaczenia

indeksów.

background image

Asocjacje

• // Tworzenie tablicy asocjacyjnej

$color["niebieski"] = "#0000FF";

$color["zielony"] = "#00FF00";

$color["czerwony"] = "#FF0000";


• // Tworzenie tej samej co poprzedniej tablicy
• // tylko nieco prościej

$color = array( "niebieski" => "#0000FF",

"zielony" => "#00FF00",

"czerwony" => "#FF0000" );

background image

Zmienne

• Zmienne PHP są oznaczane znakiem dolara (

$

)

• Wielkość liter w nazwach zmiennych

jest rozróżniana

.

• Prawidłowe nazwy zmiennych muszą zaczynać się

literą

lub

znakiem podkreślenia

, po których może nastąpić

litera, liczba lub znak podkreślenia.

• Gdy wartości są przypisywane przez referencję,

nowa

zmienna staje się odwołaniem do oryginalnej zmiennej

.

Zmiana wprowadzona do dowolnej zmiennej powoduje

zmianę drugiej. Aby wykonać przypisanie przez

referencję, należy poprzedzić nazwę znakiem

&

.

$

variable3 =

&$

variable1;

print( "$variable1, $variable3<br>" );

background image

Wersja specyfikacji CGI używanej przez serwer, na

przykład CGI/1.1.

GATEWAY_INTERFACE

Nazwa i wersja protokołu za pomocą którego

zostało wysłane żądanie strony, na przykład
HTTP/1.1.

SERVER_PROTOCOL

Adres IP użytkownika oglądającego stronę.

REMOTE_ADDR

Zawartość nagłówka

User Agent:

wysłanego przez

przeglądarkę. Nagłówek ten opisuje
przeglądarkę żądającą strony, na przykład:

Mozilla/4/0 (compatible; MSIE 5.01; Windows

NT)

”. Więcej na temat wykorzystania tej

zmiennej znajduje się

w rozdziale 9

„Niezależność od przeglądarki”.

HTTP_USER_AGENT

Zawartość nagłówka

Host:

o ile został wysłany

przez przeglądarkę.

HTTP_HOST

Definicja

Zmienna

Zmienne środowiska serwera

Apache

background image

Zmienne środowiska systemu

System operacyjny działający na serwerze,

na przykład Linux.

OSTYPE

Systemowa ścieżka serwera.

PATH

Typ komputera, na przykład i386.

HOSTTYPE

Nazwa komputera serwera.

HOSTNAME

Definicja

Zmienna

background image

Zmienne generowane przez PHP

Tablica asocjacyjna zmiennych

przekazanych do skryptu za pomocą
metody POST.

HTTP_POST_VARS

Tablica asocjacyjna zmiennych

przekazanych do skryptu za pomocą
metody GET.

HTTP_GET_VARS

Tablica asocjacyjna zmiennych

przekazanych do skryptu poprzez
cookie HTTP.

HTTP_COOKIE_VARS

Nazwa pliku z wykonywanym skryptem.

PHP_SELF

Definicja

Zmienna

background image

Operatory arytmetyczne

Reszta z dzielenie

$a przez $b

$a % $b

Reszta z dzielenia

%

Iloraz $a i $b

$a / $b

Dzielenie

/

Iloczyn $a i $b

$a * $b

Mnożenie

*

Różnica $a i $b

$a - $b

Odejmowanie

-

Suma $a i $b

$a + $b

Dodawanie

+

Wynik

Przykład

Nazwa

Operator

background image

Operatory bitowe

Przesunięcie bitów w $a

w prawo o $b
kroków

$a >> $b

Przesunięcie w prawo

>>

Przesunięcie bitów w $a

w lewo o $b kroków

$a << $b

Przesunięcie w lewo

<<

Bity ustawione nie są

teraz ustawione i
odwrotnie

~$a

Negacja

~

Bity ustawione w $a lub

$b, ale nie w obu na
raz są ustawione

$a ^ $b

Różnica symetryczna

^

Bity ustawione w $a lub

$b są ustawione

$a | $b

Suma bitowa

|

Bity ustawione w $a i $b

są ustawione

$a & $b

Iloczyn bitowy

&

Wynik

Przykład

Nazwa

Operator

background image

Operatory porównania

True, jeżeli $a jest

większe lub równe
$b

$a >= $b

Większy lub równy

>=

True, jeżeli $a jest

mniejsze lub równe
$b

$a <= $b

Mniejszy lub równy

<=

True, jeżeli $a jest

większe od $b

$a > $b

Większy

>

True, jeżeli $a jest

mniejsze od $b

$a < $b

Mniejszy

<

True, jeżeli $a jest

różne od $b

$a != $b

Różny

!=

True, jeżeli $a jest

równe $b i są one
tych samych typów

$a === $b

Identyczny

===

True, jeżeli $a jest

równe $b

$a == $b

Równy

==

Wynik

Przykład

Nazwa

Operator

background image

Stałe

• Aby zdefiniować nową stałą używa się

funkcji

define()

<?php

define( "aString", "To jest stały ciąg znaków" );
define( "aNumber", 1 );

print( "Mamy tutaj zdefiniowane " . aNumber . " stałych.<br>"

);

print( "Jej wartością jest '" . aString . "'<br>" );

?>

background image

Programowanie przepływu

sterowania

• if, else, elseif
• while
• do .. while
• for
• foreach

foreach ( tablica as zmienna_wartosc) instrukcja

foreach ( tablica as zmienna_klucz => zmienna_wartosc) instrukcja

• switch
• break i continue

background image

include i require

• Wyrażenie

include()

jest zwykłą funkcją

PHP

• Wyrażenie

require()

jest konstrukcją

językową

background image

Funkcje

• PHP pozwala na tworzenie funkcji

definiowanych przez użytkownika

• Funkcje nie muszą być deklarowane przed ich

użyciem w kodzie PHP4

• PHP nie pozwala na przeciążanie funkcji, nie ma

również mechanizmu usuwania lub

przedefiniowania wcześniej zdefiniowanych

funkcji

• Domyślnie argumenty są przekazywane przez

wartość

background image

Przekazanie argumentu przez referencję

// przekazanie argumentu przez referencję

function StringAppend(

&$

BaseString,

$

AddString )

{

// ponieważ jest to przekazane przez referencję, wartość
// $BaseString może być zmieniona poza tą funkcją

$BaseString .= $AddString;

}

background image

wartości domyślne

function PrintAnchorTag( $aHREF, $aText,

$aTarg = ""

){

...
}

Funkcja ta może być wywołana przy użyciu jednej z

postaci:

PrintAnchorTag( "href", "text" );
PrintAnchorTag( "href", "text",

"target"

);

background image

zmienna lista argumentów

function PrintEverything( )

{

$aNumArgs =

func_num_args();

for ( $nIndex = 0; $nIndex < $aNumArgs; $nIndex++ )

{

$aArgVal =

func_get_arg( $nIndex );

print( "Argument $nIndex: $aArgVal<br>" );

}

}

background image

Programowanie obiektowe

• Dostępne jest dziedziczenie

jednobazowe

,

• nie ma dziedziczenia wielobazowego.
• Istnieją konstruktory klas,

• nie ma destruktorów

.

• PHP posiada

(i wymaga używania)

wskaźnik

$this

, który jest stosowany do

odwoływania się do metod i zmiennych
obiektu.

background image

tworzenie prostej klasy

class ShoppingBasket

{

var $fItems;
var $fCurValue;

function

ShoppingBasket

( $aInitialValue = 0.0 )

{

$this->fCurValue

= $aInitialValue;

}

// Dodanie określonej ilości przedmiotów
function AddItem( $aName, $aValue,

$aQuantity = 1 )

{

$this->

fItems[$aName]["Quantity"] +=

$aQuantity;

$this->

fItems[$aName]["Value"] =

$aValue;

$this->

fCurValue += $aValue *

$aQuantity;

return True;

}

}

background image

Tworzenie nowego obiektu

• $aBasket =

new

ShoppingBasket( 3.50 );

• $aBasket->

PrintBasket();

• $aBasket->AddItem( "gizmo", 1.50 );
• $aBasket->PrintBasket();

background image

Obsługa formularzy w PHP

<!-- To jest strona HTML, listing1.html -->
<html>
<head>
<title>Wydruk 3.1 - listing1.html</title>
</head>
<body>

<form action="post1.phtml" method="post">

Nazwa użytkownika: <input type="text"

name="Username"><br>

Hasło: <input type="password"

name="Password"><br>

<input type="submit" name="Submit"

value="Wyślij">

</form>

</body>
</html>

background image

Obsługa formularzy w PHP

<!-- To jest skrypt PHP, post1.html -->
<html>
<head>
<title>Wydruk 3.1: post1.phtml</title>
</head>
<body>
<?php

print( "Nazwa użytkownika: $Username<br>" );
print( "Hasło: $Password<br>" );

?>
</body>
</html>

background image

Wielowartościowe elementy formularza

<!-- Nazwy są indeksami tablicy -->
<select name="

Colors[]

" size="5"

multiple

>

<option value="Red">Czerwony</option>
<option value="Green">Zielony</option>
<option value="Blue">Niebieski</option>
<option value="Purple">Purpurowy</option>
<option value="Yellow">Żółty</option>

</select>

background image

Wielowartościowe elementy formularza

<!-- Trzy linie na dane adresowe.

Używamy notacji tablicowej

aby zaznaczyć użycie wielu wierszy tablicy -->

<input type="text" name="

address[]

"><br>

<input type="text" name="

address[]

"><br>

<input type="text" name="

address[]

"><br>

background image

Metody odczytywania wartości z

formularza

• Predefiniowane zmienne tablicowe

HTTP_GET_VARS

lub

_GET

i

HTTP_POST_VARS

lub

_POST

zawierają

tablice asocjacyjne

elementów przesłanych do

skryptu przy pomocy metod odpowiednio

GET

i

POST

.

function DisplayGetVars()
{

global $HTTP_GET_VARS;

DisplayArray( $HTTP_GET_VARS );

}

background image

Użycie rysunku jako przycisku

wysłania danych

<input type="image" name="SubmitImg" src="submit.gif">

• oprócz danych do serwera zostaną wysłane dodatkowo

współrzędne x i y (względem lewego górnego rogu

rysunku) punktu gdzie został kliknięty rysunek)

• Nazwy zmiennych przechowujących współrzędne są

tworzone poprzez dodanie

_x

i

_y

do nazwy elementu

reprezentującego rysunek.

• Niektóre przeglądarki posiadają mechanizm pozwalający

wykorzystać klawisz

Enter

zamiast klikania w przycisk na

formularzu. Gdy użyjemy rysunku zamiast przycisku,

mechanizm ten nadal będzie działał, ale

nie zostaną

wtedy przesłane dane na temat współrzędnych

.

background image

Cookie

• Cookie są plikami tekstowymi zapisanymi

na komputerze klienta

• PHP posiada tylko jedna funkcję

przeznaczoną do tworzenia cookie,

setcookie()

int setcookie(

string

nazwa

,

string

wartość

,

int

czas

,

string

ścieżka

,

string

domena

,

int

bezpieczny

)

background image

Cookie

• funkcja setcookie() musi być wywołana przed wysłaniem

jakichkolwiek danych do przeglądarki

• Dowolne cookie odesłane do aplikacji przez

przeglądarkę jest automatycznie konwertowane na

zmienną PHP tak samo, jak dzieje się to w przypadku

metod GET i POST.

• Cookie mogą przenosić wartości skalarne jak również

tablice wartości.

• Wszystkie argumenty funkcji poza nazwą są opcjonalne
• Argument czas jest standardowym czasem z systemu

Unix w postaci liczby, którą można uzyskać jako wynik

funkcji

mktime()

lub

time().

background image

Użycie cookie

<?php

// Sprawdzenie czy istnieje zmienna cookie

$LastTime

if ( !empty( $LastTime ) )
{

$aMessage = "Ostatnia wizyta miała miejsce ";
$aMessage .= date( "d F Y", $LastTime );
$aMessage .= " o ";
$aMessage .= date( "h:i:s a", $LastTime );

}
else
{

$aMessage = "Nie byłeś tu przez ostatnie ";
$aMessage .= "dwa tygodnie.";

}
// Ustawienie cookie ważnego przez dwa tygodnie
$aTwoWeeks = time() + ( 60 * 60 * 24 * 14 );
setcookie( "LastTime", time(), $aTwoWeeks );
// sprawdzenie istnienia niezwykle ważnej tablicy

z cookie

$aValMessage = "";
if ( !empty( $CookieArray ) )
{

$aValMessage = "Wartości: " .

$CookieArray[0];

$aValMessage .= ", " . $CookieArray[1];
$aStartValue = $CookieArray[1] + 1;

}
else
{

$aValMessage = "Wartości nie są dostępne!";
$aStartValue = 0;

}

// usunięcie niezwykle istotnej tablicy wartości

setcookie( "CookieArray[0]" );
setcookie( "CookieArray[1]" );
// dodanie niezwykle istotnej tablicy wartości
setcookie( "CookieArray[0]", $aStartValue,

$aTwoWeeks );

setcookie( "CookieArray[1]", $aStartValue + 1,

$aTwoWeeks );
?>
<html>
<head>

<title>Użycie cookie</title>

</head>
<body>
<?php

print( $aMessage . "<br><br>" . $aValMessage

);
?>
</body>
</html>

background image

Obróbka danych do wyświetlenia

• strip_tags()
• htmlentities()
• strip_slashes()
• nl2br()

<!-- Skrypt safedisplay2.phtml -->
<?php

error_reporting( 255 );
switch ( $FilterType )
{

case 0 : // brak

$aDisplayText = $TheText;
break;

case 1 : // strip_tags

$aDisplayText = strip_tags( $TheText );
break;

case 2 : // htmlentities

$aDisplayText = htmlentities( $TheText

);

break;

}

?>


Wyszukiwarka

Podobne podstrony:
PHP profesjonalnie programowanie obiektowe i narzędzia programisty 08 2006
www.platforma.imiib.polsl.pl file.php 8 08 05 2012 Wyniki kolokwium calosc i przyrost MM IM
FP w 08
08 Elektrownie jądrowe obiegi
archkomp 08
02a URAZY CZASZKOWO MÓZGOWE OGÓLNIE 2008 11 08
ankieta 07 08
08 Kości cz Iid 7262 ppt
08 Stany nieustalone w obwodach RLCid 7512 ppt
2009 04 08 POZ 06id 26791 ppt
08 BIOCHEMIA mechanizmy adaptac mikroor ANG 2id 7389 ppt
depresja 08 09
W15 08 II
Szkol Ogólne 08 1pomoc

więcej podobnych podstron