PHP osa 1 Verkkotekniikan jatkokurssi Kevt 2003 Ville
- Slides: 35
PHP osa 1 Verkkotekniikan jatkokurssi Kevät 2003 Ville Seppänen (rissepp@cc. jyu. fi) 1
Sisältö 1. 2. 3. 4. 5. 6. 7. 8. Yleistä Skriptien kirjoittaminen Muuttujista Operaattoreista Funktioiden määrittely ja käyttäminen include ja require Kontrollirakenteista Taulukoista Ville Seppänen (rissepp@cc. jyu. fi) 2
PHP: n käyttötilasto helmikuu 03 Ville Seppänen (rissepp@cc. jyu. fi) 3
Yleistä (1) • Alkoi 1994 yhden miehen, Rasmus Lerdorfin, projektina Personal Home Page • Nykyisin useita kehittäjiä, vapaa Open Source projekti, nimi muuttunut muotoon PHP Hypertext Preprocessor • Viimeisin versio 4. 3. 1 (www. php. net) • Kehityksessä oleva versio 5 tulee muuttamaan PHP: n enemmän oliokielen suuntaan Ville Seppänen (rissepp@cc. jyu. fi) 4
Yleistä (2) • ‘Serverside HTML-embedded scripting language’ • PHP-skripti kirjoitetaan tavallisesti HTML-koodin sekaan • Asiakkaan pyytäessä skriptiä sisältävää dokumenttia palvelimelta, palvelin suorittaa dokumenttiin upotetun koodin • ja (tavallisesti) palauttaa vastauksena staattisen HTMLdokumentin • HTTP ja HTML asettavat tiettyjä rajoituksia • Suunniteltu web-käytöön • Paljon valmiita funktioita yleisiin käyttötarkoituksiin; esim. grafiikan ja PDF-dokumenttien generointi, sähköpostin lähettäminen, cookieiden käsittely, yhteydet muihin verkkopalveluihin ja erilaisiin tietokantoihin jne. Ville Seppänen (rissepp@cc. jyu. fi) 5
Yleistä (3) • Syntaksi perustuu muihin ohjelmointikieliin, pääasiassa C: hen ja Perliin. Piirteitä myös C++: sta ja Javasta. Mahdollista kirjoittaa oliotyyliin. • Siirrettävää: koodi toimii ilman muutoksia tai pienin muutoksin (hakemistoviittaukset jne. ) erilaisilla alustoilla (vapaat ja kaupalliset Unixit, Windowsit jne. ) sekä lukuisissa WWW-palvelimissa laajennusmodulien avulla, esim. Apache ja MS IIS Ville Seppänen (rissepp@cc. jyu. fi) 6
Yleistä (4) • Verrattaessa ‘kilpailijoihinsa’ (esim. Perl, ASP, JSP, Cold Fusion) PHP: n vahvuuksia ovat: • Suorituskyky • Liittymä useille tietokannoille • Sisäänrakennetut kirjastot yleisille web-sovelluksiin liittyville tehtäville • Edullinen ( ilmainen) • Helppo oppia ja käyttää • Siirrettävyys • Lähdekoodin saatavuus (Welling & Thomson, 2001) • Koodin pituus PHP: lla toteutettuna on tyypillisesti vain murto-osan esim. vastaavasta Perl-koodista Ville Seppänen (rissepp@cc. jyu. fi) 7
Skriptin kirjoittaminen (1) • Palvelin tunnistaa PHP-skriptiä sisältävät tiedostonimen päätteen perusteella, yleensä. php, . php 3, . php 4 tai. phtml (hyväksytyt päätteet riippuvat palvelimen asetuksista) • PHP-skriptit kirjoitetaan <? ? > tai <? php ? > merkkiparien sisälle (suosi jälkimmäistä muotoa) Ville Seppänen (rissepp@cc. jyu. fi) 8
Skriptin kirjoittaminen (2) <html> <head> <title>Päiväys<title> </head> <body> <p> <? php // PHP-koodi alkaa echo “Tänään on: “; echo time(“d-m-Y”); ? > // PHP-koodi loppuu </p> </body> </html> Ville Seppänen (rissepp@cc. jyu. fi) 9
Skriptin kirjoittaminen (3) <? php $my. String = ‘Hello, world!’; ? > <h 1> <? php echo $my. String; ? > </h 1> <? php $my. String = ‘Hello, world!’; echo “<h 1>$my. String</h 1>”; ? > <? php $my. String = ‘Hello, world!’; echo “<h 1>”. $my. String. ”</h 1>”; ? > <? php echo “<h 1 class=”iso”>Iso otsikko</h 1>”; echo “<h 1 class=‘iso’>Toinen iso otsikko</h 1>”; ? > <for method=“get” action=“<? php echo $PHP_SELF ? >”> Ville Seppänen (rissepp@cc. jyu. fi) 10
Skriptien kirjoittaminen (4) • PHP-sovellus voidaan kirjoittaa kokonaisuudessaan yhteen tiedostoon tai se voidaan pilkkoa loogisesti erillisiin skripteihin if($page==‘kirjoita’) { /* kirjoittamiseen liittyviä juttuja */ } else if($page==‘lue’) { /* lukemiseen liittyviä juttuja */ } else { /* jotain muuta */ } Ville Seppänen (rissepp@cc. jyu. fi) index. php kirjoita. php lue. php 11
Muuttujista (1) • PHP: ssa muuttujia ei tarvitse julistaa. Muuttuja luodaan, kun sille asetetaan arvo, ja muuttujan tyyppi määräytyy automaattisesti arvon tyypin mukaan $my. Interger = 1; $my. String = “Hello, world!”; $my. Array = array(“Hello”, “world!”); echo Ville Seppänen (rissepp@cc. jyu. fi) gettype($my. Integer); // integer gettype($my. String); // string gettype($my. Array); // string 12
Muuttujista (3) • Muuttujien arvoja voidaan välittää skripteille GET tai POST-kutsujen mukana • Muuttujien siirtäminen URLissa (GET-metodi) http: //www. palvelin. net? sivu=etusivu&kieli=suomi muuttuja arvo • POST lähettää datan HTTP-kutsun mukana, mutta sitä ei siirretä osana URLia Ei GETin fyysistä pituusrajoitusta ja mahdollistaa multipart/form-data enkoodauksen. Ville Seppänen (rissepp@cc. jyu. fi) 13
Muuttujista (2) • PHP: n tietotyypit • • • Boolean (PHP 4), kaksiarvoinen Integer, kokonaisluku Float, liukuluku String, merkkijono Array, taulukko Object • Luokan ilmentymä oliokoodissa • Resource (PHP 4) • Sisältää viittauksen ulkoiseen resurssiin. Resurssit luodaan ja niitä käsitellään määrätyillä funktioilla (esim. tietokantakyselyn suorittava funktio ja sen palauttama resurssimuuttuja) Ville Seppänen (rissepp@cc. jyu. fi) 14
Vertailu- ja loogiset operaattorit • PHP: n vertailuoperaattorit: • • == equals (sama arvo) === identical (sama arvo ja sama tietotyyppi) != not equal <> not equal < less than > greater than <= less than or equal to >= greater than or equal to • PHP: n loogiset operaattorit: • • • ! NOT && AND | | OR Ville Seppänen (rissepp@cc. jyu. fi) 15
Muita operaattoreita • Ternary operaattori Yleinen muoto: condition ? value if true : value if false Esim: $answer = ($color == “red” ? “Color is red” : “Color is not red”); • Error suppression operaattori $a = @(57/0); • Execution operaattori $out = ‘ls -la’; echo “<pre>”. $out. ”</pre>”; Ville Seppänen (rissepp@cc. jyu. fi) 16
Funktiot (1) • Funktioiden nimeäminen ja määrittely • • Nimissä sallitaan kirjain- ja numeromerkit, sekä alaviiva Nimi ei saa alkaa numerolla Nimi ei saa olla varattu sana Nimi ei saa olla valmiin funktion nimi // funktion määrittely function oma. Funktio() { echo “Moro!”; } // funktion kutsu oma. Funktio(); Ville Seppänen (rissepp@cc. jyu. fi) 17
Funktiot (2) • Esimerkkejä funktion kutsumisesta: oma. Funktio(); // kutsutaan ilman parametreja oma. Funktio(“iso”); // string-parametrilla oma. Funktio(15. 23); // float-parametrilla oma. Funktio($muuttuja); // muuttujaparametrilla oma. Funktio($muuttuja, “iso”); // muuuttuja- ja string-param. // funktio vaatii parametrin: function oma. Funktio($koko) { echo “Koko on $koko. ”; } oma. Funktio(“iso”); // tulostaa: Koko on iso. Ville Seppänen (rissepp@cc. jyu. fi) 18
Funktiot (3) • Parametreille voidaan antaa arvo funktion määrittelyssä. Tällöin niille ei funktiota kutsuttaessa vaadita arvoa. pakollinen optionaalinen function oma. Funktio($muoto, $koko = “iso”) { echo “Muoto on $muoto ja koko on $koko. ”; } oma. Funktio(); // warning: missing oma. Funktio(“soikea”); // Muoto on oma. Funktio(“soikea”, “pieni”); // Ville Seppänen (rissepp@cc. jyu. fi) argument soikea ja koko on iso. Muoto on soikea ja koko on pieni. 19
Funktiot (4) • Muuttujien vaikutusalue (scope) • Funktion sisällä määritellyt muuttujat ovat voimassa vain ko. funktion sisällä (local variables) • Funktion ulkopuolella määritellyt muuttujat eivät ole voimassa funktioiden sisällä (global variables) • Avainsana global pakottaa muuttujan globaaliksi, vaikka se määriteltäisiin funktion sisällä • include() ja require() eivät vaikuta muuttujan vaikutusalueeseen Ville Seppänen (rissepp@cc. jyu. fi) 20
Funktiot (5), esim. vaikutusalueista function oma. Funktio() { $muuttuja = “foo”; } echo $muuttuja; // ei tulostetta function oma. Funktio() { echo “Funktion sisällä, $muuttuja = “bar”; echo “Funktion sisällä, $muuttuja = } $muuttuja = “foo”; oma. Funktio(); Echo “Funktion ulkopuolella, $muuttuja “. $muuttuja. ” ”; = “. $muuttuja. ” ”; Tuloste: Funktion sisällä, $muuttuja = bar Funktion ulkopuolella, $muuttuja = foo Ville Seppänen (rissepp@cc. jyu. fi) 21
Funktiot (6) • Esimerkki globalin käytöstä: function oma. Funktio() { global $muuttuja; $muuttuja = “foo”; echo “Funktion sisällä, $muuttuja = “. $muuttuja. ” ”; } oma. Funktio(); echo “Funktion ulkopuolella, $muuttuja = “. $muuttuja. ” ”; Tuloste: Funktion sisällä, $muuttuja = foo Funktion ulkopuolella, $muuttuja = foo Ville Seppänen (rissepp@cc. jyu. fi) 22
Funktiot (7) • Muuttuja voidaan välittää • Pass by referencen käyttö funktiolle käyttämällä sen määritellään kirjoittamalla arvoa (pass by value) tai parametrin eteen &-merkki: viittausta alkuperäiseen muuttujaan (pass by reference) function kertaa 10(&$luku) • Pass by value: ta käytettäessä { $luku = ($luku * 10); muuttujan globaali arvo ei } $luku = 10; muutu: function kertaa 10($luku) { $luku = ($luku * 10); } $luku = 10; kertaa 10($luku); echo $luku; // tulostaa 10 Ville Seppänen (rissepp@cc. jyu. fi) kertaa 10($luku); echo $luku; // tuloste 100 23
Funktiot (8) • Arvojen palauttaminen • Avainsana return lopettaa funktion suorittamisen ja ohjelman suorittamista jatketaan funktion kutsua seuraavasta lauseesta • returnia voidaan käyttää myös arvojen palauttamiseen funktiosta. • Ehdollinen arvon palauttaminen: Ville Seppänen (rissepp@cc. jyu. fi) function random($min = 1, $max = 100) { $random = rand($min, $max); return($random); } $satunnainen = random(); $iso_satunnainen = random(1000, 10000); function tausta. Vari($rivinumero) { if(($rivinumero % 2) == 0) return(“silver”); else return(“gray”); } 24
include ja require (1) • includen käyttö helpottaa koodin hallintaa, jäsentämistä ja vähentää redundanssia • Usein tarvittavat koodinpätkät (esim. tietokantayhteyden muodostaminen) • Kirjastot • Teksti ja HTML-koodi (esim. heading, footer, layout, …) • require toimii includen tavoin, mutta liitettävän tiedoston puuttuminen keskeyttää koodin suorituksen, kun taas include ainoastaan tulostaa varoituksen Ville Seppänen (rissepp@cc. jyu. fi) 25
include ja require (2) • require_once toimii requiren tavoin, mutta liittäminen tehdään ainoastaan mikäli sitä ei ole aiemmin tehty. <? php // avaataan tietokantayhteys - db. inc $db = mysql_connect(“localhost”, “sqluser”, “sqlpassword”); if(!$db) echo “Cannot connect to database”; else mysql_select_db(“mydb”); ? > <? php include(“. /includes/db. inc”); ? > Ville Seppänen (rissepp@cc. jyu. fi) 26
include ja require (3) • Jos liitettävä tiedosto sisältää PHP-koodia, koodi tulee kirjoittaa PHP-tagien sisälle. Muutoin koodia ei suoritetaan vaan se liitetään mukaan tekstinä. • Liitettäviä tiedostoja nimettäessä tulee käyttää ainoastaan loppupäätteitä, jotka WWW-palvelin käsittelee PHP-skripteinä. Muutoin tiedoston sisältö esitetään selaimessa tekstinä. Ville Seppänen (rissepp@cc. jyu. fi) 27
Kontrollirakenteista (1) • if, else if ja else • Jos if-ehto on tosi, sitä seuraava koodi(blokki) suoritetaan • Muussa tapauksessa, jos else if-ehto on tosi, sitä seuraava koodi(blokki) suoritetaan • Muussa tapauksessa, else: ä seuraava koodi(blokki) suoritetaan if($i == 10) { echo “$i on 10”; } else if($i == 5) { echo “$i on 5”; } else { echo “i$ on jotain muuta kuin 5 tai 10”; } Ville Seppänen (rissepp@cc. jyu. fi) 28
Kontrollirakenteista (2) • Ehtovertailuesimerkkejä: if($i < 10 || $i > 20) // OR if($a == TRUE && $b == FALSE) // AND if(!$login) // NOT if(!isset($login)) // NOT • switch ja case: switch($i) { case “ 10” : echo “$i on 10”; break; case “ 5” : echo “$i on 5”; break; } Ville Seppänen (rissepp@cc. jyu. fi) 29
Kontrollirakenteista (3) • while ja do while ($i <= 10) { echo “$i ”; $i++; } /* -------------- */ $i = 11; do { echo “$i ”; $i+ } while ($i <= 10); • do while-rakenteessa ehto tarkistetaan lopussa, joten silmukka suoritetaan aina vähintään kerran Ville Seppänen (rissepp@cc. jyu. fi) 30
Kontrollirakenteista (4) • for // testataan ehtoa $i <= 10. Kun epätosi, suorittaminen loppuu for($i = 1; $i <= 10; $i++) { echo “$i ”; } • Kontrollirakenteiden suorittaminen voidaan lopettaa milloin vain exit: llä • Lisää: http: //www. php. net/manual/en/control-structures. php Ville Seppänen (rissepp@cc. jyu. fi) 31
Taulukot [array] (1) • Yksi tai useampi ulotteinen joukko tunniste (index tai key) – arvo (value) -pareja • Tunniste voi olla joko kokonaisluku tai merkkijono • Arvo voi olla mikä tahansa, myös toinen array (moniuloitteiset taulukot) • Demojen puitteissa taulukoihin törmätään ainakin lomakkeita ja tietokantakyselyn tuloksia käsiteltäessä Ville Seppänen (rissepp@cc. jyu. fi) 32
Taulukot (2) <form action="kasittelija. php" method="get"> Nimi: <input type="text" name="nimi" size="30” /> Email: <input type="text" name="email" size="30” /> Viesti: <textarea name="viesti" rows="3" cols="25”/></textarea> <input type="submit" name="submit" value="Lä hetä ” /> </form> print_r($_GET); // kasittelija. php Tuloste: $_GET-muuttujan (array) sisältö Viittaaminen yksittäiseen elementtiin: $_GET[nimi]; Array( [nimi] => Santa Claus [email] => joulupukki@korvatunturi. fi [viesti] => Hyvää joulua! [submit] => Lähetä ) Ville Seppänen (rissepp@cc. jyu. fi) 33
Taulukot (3) • Taulukon muodostaminen: $my. Array = array(“Santa”, “Ho ho ho!”); // tunnisteet asetetaan automaattisesti kokonaislukuina nollasta alkaen $my. Array = array(nimi => “Santa”, viesti => “Ho ho ho!”); // tunnisteet $my. Array[nimi] ja $my. Array[viesti] • Suoraan arvot asettamalla: $my. Array[0] = “Santa”; $my. Array[1] = “Ho ho ho!”; $my. Array[nimi] = “Santa”; $my. Array[viesti] = “Ho ho ho!”; Ville Seppänen (rissepp@cc. jyu. fi) 34
Taulukot (4) • Taulukoiden käsitteleminen • Numeeriset tunnisteet mahdollistavat taulukon käsittelemisen esim. for-silmukassa for($i = 0; $i < count($my. Array)-1; $i++) echo “$my. Array[$i] ”; • list ja each while (list($tunniste, $arvo) = each($my. Array)) echo “$tunniste - $arvo ”; • foreach($my. Array as $tunniste => $arvo) echo “$tunniste - $arvo ”; • Lue lisää: http: //www. php. net/manual/en/ref. array. php Ville Seppänen (rissepp@cc. jyu. fi) 35
- Web.facebook.com.php
- Php php://input
- Bearville city
- Ville intelligente ppt
- Interlaken ville
- Peg ville de lille
- Learning ville
- Ville dallemagne
- Ville radieuse plan
- Ville troglodyte pouilles
- Ville seppänen jyu
- Ville mondiale new york
- Allons en ville chapitre 9 vocabulaire 1
- Ville cap
- Circonscription béziers ville
- Gamesville mobile
- Mike fernie wiki
- 28 raisons de ne pas aller a saint etienne
- Domus romana schema
- Novelle eksempel
- College la fontaine du roy ville d'avray
- Ville fiorentine klee
- Paris ville mondiale bac pro
- Gmail
- Harri veijola
- Ma ville vocabulaire
- En terme de contenu
- Ville friman
- Camille claudel mantes
- Ile americaine
- Riippuvatsat
- Ville hanni
- Botulinumtoksiini
- Hôtel de ville
- Raconte ta ville
- Webadi osa