- Hvad er PHP? - Hurtigt historisk overblik - Installation - Indstillinger - Hello world - Tekststrenge - PHP og HTML - En doven programmør er en god



Relaterede dokumenter
PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

PHP Quick Teknisk Ordbog

Indholdsfortegnelse If-sætningen... 3 Opgaver... 4 OR, AND sammen med if-sætningen... 5 Rand() funktion... 5 Opgave... 5 Include() funktionen...

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Hack of the Month opgave 2

HTML, PHP, SQL, webserver, hvad er hvad??

Interaktionsudvikling

Sådan installeres og teste WordPress på en lokal server

Projekt 3: Interaktionsudvikling 11/04.14

Procesbeskrivelse - Webprogrammering

Denne rapport er skrevet af:

if (mysqli_num_rows($res) > 0) { while ($result = $res->fetch_array(mysqli_assoc)) { "<div class=\"article\">".

En Kort Introduktion til Oracle

FairSSL Fair priser fair support

Website sikkerhed SQL Injections og mere...

Eksamen, DSDS, efterår 2007

Umbraco installationsvejledning

Databaseadgang fra Java

Programmering I Java/C#

Vejledning til Teknisk opsætning

MySQL C API. Denne artikel beskriver hvordan man bruger MySQL C API. Der er beskrivelse af build med forskellige compilere.

Dokumentering af umbraco artikeleksport:

Eksamens rapport Informationsteknologi B

PHP guide af Daniel Pedersen

Data lagring. 2. iteration (implement backend)

Gæstebog med validering opbygget med MySQL

Sådan kan du sende data fra din egen hjemmeside til JitBesked via en HTML-JDF.

Eksamen, DSDS, efterår 2008

SKOLELOGIN KNANPU1 FULDE NAVN ANAN PUSKAR URL TIL LØSNING URL TIL PORTFOLIO

DPR lokal persondatabase. Checkliste for CPR migrering

Data load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON

Installation af Wordpress

SSSystems.local. Netværk. Sikkerhed. Webserver

SmartWeb Brugermanual

Tagwall med Php & MySQL

KIH Database. Systemdokumentation for KIH Databasen. 1. maj Side 1 af 13

Anvendelse af Model- View koncept i SAS Stored Processer

Sådan logger du ind... 2 Hvilke mapper kan du tilgå... 3 Visning af eksempel af en fil... 5 Sådan deler du en fil... 7 Se hvad du deler med andre...

Installation af WeroShop 2.4 S

Web Admin 5.5. Brugsvejledning for Domain admin. Copyright 2003 Gullestrup.net

The Design Diaries Project 3 2. Semester. Blog om designprincipper

xgalleri Mulige filtyper Installation web-version

Værktøjer fra værktøjskassen. Søren Breddam, Stevns Kommune

Web Admin 5.5. Brugsvejledning for User admin. Copyright 2003 Gullestrup.net

DRFLive - dynamisk visning af resultater fra DRF Stævnesystem

Opdatering af ISOWARE til version 6.1.0

Matematik læringsprojekt Journal

OpenTele datamonitoreringsplatform

bedreweb.dk - Bolette Obbekær 2012 SÅDAN LÆGGER DU WORDPRESS PÅ DIT WEBHOTEL

Vejledning til indsendelse af artikler via Manuscript Central

Oktober 2013 HLG/XIGA. Opstartsvejledning ATS Engros 1/12

klient Webside Forespørgsel/ Nye data Python program Database kommando svar Database

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske

DEPLOYMENTGUIDE DØGNPOSTEN FOR PARTNERSITES

3. Menuen Start -> Programs -> OpenVPN åbnes, og "My Certificate Wizard" vælges:

Installationsguide til Oracle Database XE 10.2 og APEX 3.1.1

Guide til Umbraco CMS

Vejledning i brug af dli dokumenthåndteringssystemet til virksomheder

Offline besked. Det budskab, der vil blive vist på sitet, når webstedet er offline.

Guide til at lave din egen hjemmeside Maria, Mads, Morten Sebastian og Marc

PHP kode til hjemmeside menu.

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Inden du går i gang. For Mozilla Firefox brugere. For Internet Explorer brugere

Terese B. Thomsen 1.semester Formidling, projektarbejde og webdesign ITU DMD d. 02/

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach 2002

Transkript:

5 For begyndere

- Hvad er PHP? - Hurtigt historisk overblik - Installation - Indstillinger - Hello world - Tekststrenge - PHP og HTML - En doven programmør er en god programmør - Include filer - Funktioner - Interaktion med bruger/klient - Validering - Database: MySQL - Dokumentation

Hvad er PHP? PHP er et scriptsprog primært udviklet til at lave dynamiske hjemmesider med. I version 4.3 kom PHP CLI (Command Line Interface), dvs. at PHP også kan bruges til cronjobs mv. Traditionelle programmer compiles og konverteres permanent til eksekverbare filer. Et scriptsprog fortolkes kommando for kommando hver gang programmet afvikles og er derfor langsommere men til gengæld hurtigere/nemmere at udvikle i. Bl.a. fordi man ikke skal spekulere i allokering og deallokering af hukommelse (malloc og free).

Hurtigt historisk overblik PHP/FI 1995 Personal Home Page / Forms Interpreter udvikles af danske Rasmus Lerdorf PHP/FI 2.0 1997 Sproget er stadig en enmandsprojekt, men tusindvis af udviklere rundt om i verden, bidrager nu med kode. Ca. 50.000 domæner benytter PHP. PHP 3.0 1998 I 1997 beslutter to studerende, Andi Gutmans og Zeev Suraski at den eksisterende version er alt for begrænset i forhold til det ecommerce projekt de arbejder på, og laver en komplet omskrivning. Andi, Zeev og Rasmus beslutter at samarbejde. PHP 3.0 frigives efter 9 måneder i brugertest. PHP begynder nu at ligne det sprog vi benytter i dag. PHP 5.3 2009 Seneste release. I dag er PHP et rekursivt akronym for PHP: Hypertext Preprocessor PHP 6? - Under udvikling Mere historie: http://dk.php.net/manual/en/history.php

Installation PHP kan installeres på stort set alle platforme, herunder Linux, Unix, Mac OS og Windows. Er afhængig af Apache webserver, som derfor også bliver installeret, når du installerer PHP. Se yderligere info for din Linux distro / Unix variant. Du behøver stort set ikke foretage dig noget efter installation. Bare start en browser og gå til http://localhost/. Er installationen udført korrekt, vil du her se Apaches velkomstside. Har du installeret PHP/Apache på en server der har en offentlig IP adresse, vil Apache velkomstsiden være at finde på http://www.ditdomaene.tld eller bare din ip adresse: http://123.456.789.876 Mere om installation: http://dk.php.net/manual/en/install.php

Indstillinger PHP har forholdsvis mange indstillinger man kan vælge fra/til og skrue på. Denne fil hedder php.ini. Placeringen af filen afhænger af din Linux distribution / Unix variant. Husk at ændringer ikke træder i kraft før Apache er genstartet: # apachectl restart Alle indstillinger er beskrevet her: http://dk2.php.net/manual/en/ini.core.php En kort gennemgang af de mest almindelige:

Hukommelse og diskplads memory_limit Hvor meget hukommelse et script må bruge max_execution_time Hvor lang tid et script må køre post_max_size Hvor meget information man kan sende til scriptet via en formular upload_max_filesize Hvor stor en fil man kan uploade upload_tmp_dir Sti til midlertidige filer Note: Brug evt. php_value og php_flag i din virtualhost (Apache). http://dk.php.net/configuration.changes ini_set() og ini_get() henholdsvis sætter og henter indstillinger under afvikling (runtime). Se hvilke her: http://dk.php.net/manual/en/ini.list.php Fejlrapportering error_reporting Niveau for fejlrapportering display_errors Hvorvidt scriptet skal printe fejl til skærmen log_errors Hvorvidt fejl skal logges eller ej error_log Sti til logfil Variabler magic_quotes_gpc Håndtering af tekststrenge fra klienter register_globals Forsvinder i PHP 6 - er off som standard og skal forblive off

Apache virtualhost Listen 80 ServerName laptop NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html/thecamp ServerName local.thecamp.dk ErrorLog /var/www/html/data/logs/thecamp_error.log CustomLog /var/www/html/data/logs/thecamp_access.log common php_flag display_errors On </VirtualHost> hosts filen (/etc/hosts) 127.0.0.1 laptop localhost.localdomain localhost local.thecamp.dk Derefter... # apachectl restart... og genstart din browser

Hello world Åben en tekst editor (gedit, vim etc) og skriv følgende: echo Hello world\n ; Gem filen med endelsen.php, eks. helloworld.php Afvikling via web: http://localhost/helloworld.php Afvikling via kommandolinien: $ php helloworld.php

echo Hello world\n ; Start- og slut tag echo Hello world\n ; Kommando echo Hello world\n ; Parameter til kommando echo Hello world\n ; Kommando afslutning echo Hello world\n ; Specialtegn: linieskift Denne ene linie kode skriver ganske enkelt Hello world på skærmen

Tekststrenge Konkatenering af strenge: $firstname = Peter ; $lastname = Hansen ; $fullname = $firstname..$lastname; Brug af citationstegn: $firstname = Peter's ; $lastname = Hansen\ s ; $firstname = 'Peter\'s'; $lastname = 'Hansen s';

PHP og HTML PHP bruges primært til udvikling af dynamiske hjemmesider, dvs. man laver et php script der genererer HTML som sendes til brugerens browser. <html> <head> <title>hilsen</title> </head> <body> <p> if (date( H ) < 12) { echo <b>godmorgen</b> ; } else { echo <em>goddag</em> ; } </p> </body> </html> Når en bruger går ind på denne side eksekveres PHP delen, og derefter sendes resultatet browseren. Vi fortæller systemet hvilken del der er PHP ved at omslutte koden med Man kan naturligvis have så mange sektioner PHP i sit script som man har lyst til.

At blande PHP og HTML som vist i det foregående eksempel, bliver dog hurtigt grimt at se på. if (date( H ) < 12) { $greeting = <b>godmorgen</b> ; } else { $greeting = <em>goddag</em> ; } echo <<<EOFHTML <html> <head> <title>hilsen</title> </head> <body> <p> $greeting </p> </body> </html> EOFHTML; Udfør funktionalitet øverst i scriptet Print indholdet nederst i scriptet (Brug af <<<EOF kaldes for Heredoc syntax)

En doven programmør er en god programmør Undlad at gentage dig selv det er hårdt arbejde og gør din kode umulig at vedligeholde. Husk Brug funktioner og include filer til kode du skal bruge mere end ét sted. Det mest optimale er at beslutte sig for at bruge et godt design pattern og udvikle objektorienteret. Dette vil kun blive berørt meget kort i slutningen af denne præsentation men det er et mål du bør sætte dig.

Include filer Include filer egner sig fortrinligt som skabelon til hjemmesiden. template.php echo <<<EOFHTML <html> <head> <title>hilsen</title> </head> <body> <p> $content </p> </body> </html> EOFHTML; greeting.php if (date( H ) < 12) { $content = <b>godmorgen</b> ; } else { $content = <em>goddag</em> ; } include( template.php ); year.php $content = Vi er i år ; $content.= date( Y ); include( template.php );

Funktioner Funktioner gør det muligt at genbruge kode. functions.php function greeting() { if (date( H ) < 12) { return <b>godmorgen</b> ; } else { return <em>goddag</em> ; } } greeting.php include( functions.php ); $content = greeting(); include( template.php ); function thisyear() { return date( Y ); }

Interaktion med bruger/klient Når der sendes data fra en klient, bliver det tilgængeligt i ét af disse 3 arrays, alt efter hvilken metode der er benyttet. $_POST via formular $_GET via url $_COOKIE via cookie $_SERVER browser information Husk! Stol aldrig på data der kommer fra klienten. Gå altid ud fra, at brugeren er ualmindeligt dum, eller en meget ond hacker. Validering, validering, validering! Husk

<form action= script.php method= post > Fornavn: <input type= text name= firstname value= ><br> Efternavn: <input type= text name= lastname value= ><br> Køn: <input type= radio name= gender value= male > <input type= radio name= gender value= female ><br> <input type= submit name= submit_name value= Send > </form> Fornavn: Efternavn: Køn: Mand Kvinde Send script.php echo Dit fornavn:.$_post[ firstname ]; echo Dit efternavn:.$_post[ lastname ]; echo Dit køn:.$_post[ gender ]; echo Du har klikket på knappen:.$_post[ submit_name ];

<a href= script.php?firstname=peter&lastname=hansen >Klik her</a> Klik her script.php echo Dit fornavn:.$_get[ firstname ]; echo Dit efternavn:.$_get[ lastname ]; Husk Hvis magic_quotes_gpc er On er enkelt- og dobbelt citationstegn i tekststrenge via cookie, get og post escaped. I PHP5 er magic_quotes_gpc Off og i PHP6 er den fjernet helt.

Validering Simpel validering... if (empty($_post[ firstname ])) { echo Du har glemt at udfylde feltet 'Fornavn' ; } else if (strlen($_post[ firstname ]) < 5 strlen($_post[ firstname ]) > 50) { echo Dit fornavn skal være mellem 5 og 50 karakterer. ; } Eksempel med regex. Tjek flere ting på én gang med meget mindre kode. if (eregi( ^[a zæøå]{1,50}$,$_post[ firstname ])) { echo Dit fornavn skal være mindst 5 karakterer langt ; }

Brug af æ, ø og å (lidt om character encoding) header( Content type: text/html; charset=utf 8 ); $firstname = Søren ; $lastname = Vestergård ; echo $firstname..$lastname; Husk at hvis du benytter utf-8 i din header, skal scriptfilen også være i utf-8 format. Dette afhænger af den editor du benytter. Bruger du en database der indeholder tekst, skal tekstfelterne i databasen, også benytte samme karaktersæt. UTF-8 er en af mange karaktersæt man kan benytte ved Character encoding. Et karaktersæt repæsenterer karakterer af en bestemt type og antal. Eksempler: Arabisk, græsk, kinesisk, vest europæisk osv... Nogle af de første karaktersæt var morsekoder, braille og ascii. Arbejder man på et internationalt website, bør man vælge UTF-8, da dette karaktersæt repræsenterer alle karakterer.

Database: MySQL Funktioner til brug for kommunikation med en mysql database, findes i en særskilt pakke der skal installeres. Der findes to pakker: php-mysql og php-mysqli Det er ikke sikkert de er navngivet præcis sådan på din Linux distro/unix variant, men php og mysqli indgår med stor sandsynlighed i navnet. mysqli <- med et i i enden betyder mysql improved og er altså efterfølgeren til mysql pakken. Væn dig derfor til at bruge mysqli fra starten. mysqli kan benyttes med MySQL version 4.1 og nyere.

//Connect to database $link = mysqli_connect( localhost, fake_user, my_password, my_db ); if (!$link) { die( Connect Error:.mysqli_connect_errno()); } //Create SQL $sql = SELECT Name FROM City LIMIT 10 ; //Fetch result if ($result = mysqli_query($link, $sql)) { $numberofrows = mysqli_num_rows($result); if ($numberofrows > 0) { //If we have rows... while ($row = mysqli_fetch_assoc($result)) { echo $row[ Name ]. <br> ; } } else { //...else inform the user echo Der er ingen byer i databasen ; } }

Brug ALTID mysqli_real_escape_string() //Create SQL $sql = SELECT Name FROM City WHERE CountryCode = '.$_GET[ cc ]. ' ; Røvfuld! Roulade //Create SQL $sql = SELECT Name FROM City WHERE CountryCode = '.mysqli_real_escape_string($link,$_get[ cc ]). ' ; Tænk over hvilke privilegier du giver en mysql bruger. Undgå destruktive privilegier som f.eks. DROP og DELETE. Giv aldrig globale privilegier. Lav én bruger pr. website... BRUG ALDRIG root!! $sql = SELECT * FROM City ; Fyføj!

Vil man gerne have lidt data at eksperimentere med, kan man hente en lille database på MySQL's hjemmeside: http://dev.mysql.com/doc/world-setup/en/world-setup.html På siden findes også en trin-for-trin beskrivelse af, hvordan man indlæser databasen. phpmyadmin er en meget populær frontend til MySQL. http://www.phpmyadmin.net

Dokumentation Brug et af de 2 danske mirrors, når du vil ind på PHP hjemmesiden: http://dk.php.net http://dk2.php.net En af de store fordele ved PHP, er at dokumentationen er skrevet i et letforståeligt sprog og altid er efterfulgt at kodeeksempler og kommentarer fra andre brugere. Kommentarerne er særdeles nyttige, i forhold til at undgå faldgruber. Bookmark denne side, så er dokumentationen altid kun et klik væk: http://dk2.php.net/manual/en/funcref.php