Beginnen met PHP
-
Upload
crisp-e-webdevelopment -
Category
Technology
-
view
1.678 -
download
0
description
Transcript of Beginnen met PHP
Door Taco VaderWorkshopdag PFZ7 november 2009
PHP voor beginners
Slides & snippets: http://pfz.crisp-e.com IRC: #pfz-wsd @ Freenode
Opzet workshop
2
BasiskennisPHP vs HTML, javascript, SQLVariabelenControl structures (if, for, while, foreach)ArraysFunctiesSuperglobals
WorkshopGastenboek, nieuwssysteem, …Database
Taco VaderWorkshopdag PFZ - 7 november 2009
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
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
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
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>
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>
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>
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>
Hello World
Taco VaderWorkshopdag PFZ - 7 november 200910
<?php$sBericht = ’And hello from PHP!’;echo $ sBericht;
?>
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;
?>
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!';}
?>
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;
}?>
Herhaling - for
Taco VaderWorkshopdag PFZ - 7 november 200914
<?phpecho 'Even tot tien tellen!<br />';for ( $iTeller = 1; $iTeller < 11; $iTeller++ ) {
echo $iTeller . '...<br />';}
?>
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
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) */?>
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
)
)
*/
?>
Arrays
Taco VaderWorkshopdag PFZ - 7 november
200918
<?phpecho $aDeelnemers[0];
?>
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
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 />';
?>
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
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
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
Aan de slag
http://pfz.crisp-e.com
Taco VaderWorkshopdag PFZ - 7 november 200924
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
SQL Injectie
SELECT emailFROM usersWHERE username = ' OR 1 = 'AND password = 'geheim'
Taco VaderWorkshopdag PFZ - 7 november 200926
Taco' OR 1 = '1