26
Door Taco Vader Workshopdag PFZ 7 november 2009 PHP voor beginners Slides & snippets: http://pfz.crisp-e.com IRC: #pfz- wsd @ Freenode

Beginnen met PHP

Embed Size (px)

DESCRIPTION

Slides ter inleiding van de workshop "Beginnen met PHP"

Citation preview

Page 1: Beginnen met PHP

Door Taco VaderWorkshopdag PFZ7 november 2009

PHP voor beginners

Slides & snippets: http://pfz.crisp-e.com IRC: #pfz-wsd @ Freenode

Page 2: Beginnen met PHP

Opzet workshop

2

BasiskennisPHP vs HTML, javascript, SQLVariabelenControl structures (if, for, while, foreach)ArraysFunctiesSuperglobals

WorkshopGastenboek, nieuwssysteem, …Database

Taco VaderWorkshopdag PFZ - 7 november 2009

Page 3: Beginnen met PHP

Wat is PHP?

Taco VaderWorkshopdag PFZ - 7 november 20093

PHP Hypertext Processor (vroeger Personal Home Page )

PHP ‘maakt’ HTMLEn nog véél meer, maar dit is een goed begin

PHP wordt gestart als je een pagina opvraagtPHP is serverside

Page 4: Beginnen met PHP

Hallo http://www.mijndomein.tldIk ben 111.112.123.133Mag ik van jou: users.php?user=HenkIk heb nog twee cookies hier(lastvisit=2009-08-08, language=NL)

Hallo 111.112.123.133Hier heb je een HTML-pagina op maat

Nu ik de html-pagina bekijk zie ikdat ik nog wat nodig heb:/image/header.jpg/js/scripts.js/css/screen.css

Hier heb je die bestanden ook

Het leven als server

Taco VaderWorkshopdag PFZ - 7 november 20094

PHPSQL

$_SERVER

$_GET

$_COOKIE

HTML

Superglobals

Resultaat: pagina in browserHTML

Javascript

Page 5: Beginnen met PHP

Het leven als PHP-script

Taco VaderWorkshopdag PFZ - 7 november 20095

Het script krijgt een requestInfo van de request beschikbaar in superglobals

Het script verwerkt deze dataHet script kan andere resources aanspreken

zoals de databaseHet bestand heeft geen idee van vorige of

volgende requests (stateless)Het resultaat wordt verstuurd en door de browser

verwerktAan de kant van de client wordt css toegepast

en javascript uitgevoerd

Page 6: Beginnen met PHP

Hello World

Taco VaderWorkshopdag PFZ - 7 november 20096

<html> <head>

<title>Hello world in PHP</title></head><body>

<h1>Hello World in PHP

</h1><p>

Eerst een HTML-pagina</p>

</body></html>

Page 7: Beginnen met PHP

Hello World

Taco VaderWorkshopdag PFZ - 7 november 20097

<html> <head>

<title>Hello world in PHP</title></head><body>

<h1>Hello World in PHP</h1><p>

<?php// Hiertussen staat PHP-code!?>

</p></body>

</html>

Page 8: Beginnen met PHP

Hello World

Taco VaderWorkshopdag PFZ - 7 november 20098

<html> <head>

<title>Hello world in PHP</title></head><body>

<h1>Hello World in PHP</h1><p>

<?phpecho ’And hello from PHP!’;?>

</p></body>

</html>

Page 9: Beginnen met PHP

Hello World

Taco VaderWorkshopdag PFZ - 7 november 20099

<html> <head>

<title>Hello world in PHP</title></head><body>

<h1>Hello World in PHP</h1><p>

<?php$sBericht= ’And hello from PHP!’;echo $ sBericht;?>

</p></body>

</html>

Page 10: Beginnen met PHP

Hello World

Taco VaderWorkshopdag PFZ - 7 november 200910

<?php$sBericht = ’And hello from PHP!’;echo $ sBericht;

?>

Page 11: Beginnen met PHP

Variabelen

Taco VaderWorkshopdag PFZ - 7 november 200911

<?php$sBericht = 'And hello from PHP!';echo $sBericht; // geeft: And hello from PHP!$iDeelnemers = 25;echo $iDeelnemers; // geeft: 25$sDatum = date('d-m-Y');echo $sDatum; // geeft: 7-11-2009 (vandaag dan)

echo 'Er waren ' . $iDeelnemers . ' mensen ' . $sDatum;

?>

Page 12: Beginnen met PHP

Voorwaardelijke code

Taco VaderWorkshopdag PFZ - 7 november 200912

<?php$iDeelnemers = 25;if ( $iDeelnemers > 20 ) {

echo 'De workshop gaat door!';}else {

echo 'De workshop gaat niet door!';}

?>

Page 13: Beginnen met PHP

Herhaling - while

Taco VaderWorkshopdag PFZ - 7 november 200913

<?phpecho 'Even tellen tot ik bij de 10 ben!<br />';$iTeller = 1;while ( $iTeller < 11 ) {

echo $iTeller . '...<br />';$iTeller++; // Of: $iTeller += 1;// Of: $iTeller = $iTeller + 1;

}?>

Page 14: Beginnen met PHP

Herhaling - for

Taco VaderWorkshopdag PFZ - 7 november 200914

<?phpecho 'Even tot tien tellen!<br />';for ( $iTeller = 1; $iTeller < 11; $iTeller++ ) {

echo $iTeller . '...<br />';}

?>

Page 15: Beginnen met PHP

ArraysArrays zijn lijsten van dataIeder element wordt gekenmerkt door één

unieke keyDe key kan een getal zijn (standaard) of een

string (associatieve array)

Taco VaderWorkshopdag PFZ - 7 november 200915

Page 16: Beginnen met PHP

Arrays

Taco VaderWorkshopdag PFZ - 7 november 200916

<?php$aDeelnemers = array('Henk','Jan','Piet');print_r($aDeelnemers);

/* Dit geeft: Array( [0] => Henk [1] => Jan [2] => Piet) */?>

Page 17: Beginnen met PHP

Arrays

Taco VaderWorkshopdag PFZ - 7 november 200917

<?php

$aRandomData= array('string',5,array('a',10));

print_r($aRandomData);

/* Dit geeft:

Array (

[0] => string

[1] => 5

[2] => Array (

[0] => a

[1] => 10

)

)

*/

?>

Page 18: Beginnen met PHP

Arrays

Taco VaderWorkshopdag PFZ - 7 november

200918

<?phpecho $aDeelnemers[0];

?>

Page 19: Beginnen met PHP

FunctiesEr bestaan al veel functies in PHP

Functies nemen argumenten als invoerFuncties geven een antwoord als uitvoer (meestal)

Uitzonderingen bijvoorbeeld "sort"

Je kan ze zelf schrijvenMinder herhalenMeer overzicht

Bottom-upType je code voor de derde keer, maak een functie

Top-downRoep de functie aan en vul hem later pas in

Taco VaderWorkshopdag PFZ - 7 november 200919

Page 20: Beginnen met PHP

Functies

Taco VaderWorkshopdag PFZ - 7 november 200920

<?php

function generateRandomPassword( $length=10 ) {

$password = '';

while ( strlen($password) < $length ) {

switch ( rand(1,3) ) {

case 1: $password = $password . chr(rand(65,90));break;

case 2: $password = $password . chr(rand(97,122));break;

case 3: $password = $password . rand(0,9);break;

}

}

return $password;

}

echo generateRandomPassword() . '<br />';

echo generateRandomPassword(20) . '<br />';

$password = generateRandomPassword();

echo $password . '<br />';

?>

Page 21: Beginnen met PHP

SuperglobalsAlle informatie voor je script komt uit de

superglobals$_GET

Alle info uit de URL$_POST

Alle info uit het formulier (mits posted)$_SERVER

Allerlei informatie over server, gebruiker, request$_COOKIE

De cookies bij de gebruiker$_SESSION

Bestanden die aan PHPSESSID-cookie gekoppeld zijn (schrijfbaar!!!)

$_FILESDe geüploade bestanden

Taco VaderWorkshopdag PFZ - 7 november 200921

Page 22: Beginnen met PHP

DatabaseEen puur geheugenloze website is erg zinloosOplossing: database

PostgreSQLMySQLOracleMSSQL

Database heeft tabellenTabellen hebben recordsDatabases moet je 'bevragen' in SQLWe gebruiken deze workshop MySQL

Taco VaderWorkshopdag PFZ - 7 november 200922

Page 23: Beginnen met PHP

DatabaseBasis-syntax SQL:Opvragen:

SELECT user_id, user_nameFROM usersWHERE user_origin = 'NL'

AanpassenUPDATE usersSET user_name = 'Pietje', user_origin

= 'BE'WHERE user_id = 5

ToevoegenINSERT INTO users (user_name,

user_origin)VALUES ('Henk', 'NL' )

Taco VaderWorkshopdag PFZ - 7 november 200923

Page 24: Beginnen met PHP

Aan de slag

http://pfz.crisp-e.com

Taco VaderWorkshopdag PFZ - 7 november 200924

Page 25: Beginnen met PHP

SQL InjectieSELECT user_nameFROM usersWHERE user_id =

Taco VaderWorkshopdag PFZ - 7 november 200925

$_GET['user_id']

www.mijndomein.tld/pagina.php?user_id= 5

5

1 OR 1

1 OR 1

Page 26: Beginnen met PHP

SQL Injectie

SELECT emailFROM usersWHERE username = ' OR 1 = 'AND password = 'geheim'

Taco VaderWorkshopdag PFZ - 7 november 200926

Taco' OR 1 = '1