ohjeita web-sivuston tekijälle
PHP:ssa on kolmenlaisia muuttujia. Kaikkia niitä merkitään dollarimerkillä ($) ja muuttujan nimellä:
$skalaarimuuttuja $taulukkomuuttuja $objekti
Skalaarimuuttujat eli merkkijonomuuttujat ovat muuttujista yksinkertaisimpia. Ne voivat sisältää vain yhden arvon kerrallaan. Esimerkiksi:
$nimi = "Juha-Pekka Järvenpää"; $koodi = 123123;
Taulukot ovat joukkomuuttujia. Taulukossa jokaisella jäsenellä eli alkiolla on indeksi, joka numero tai nimi. Taulukon soluihin päästään käsiksi syntaksilla:
$taulukko[indeksi]
Esimerkiksi:
$taulukko[123] = "Juha-Pekka Järvenpää"; $taulukko["jp"] = 123123;
Objektit ovat muuttujia, jotka viittaavat käyttäjän luomaan luokkaan. Luokka on kokoelma jäsenmuuttujia ja -funktioita, jotka muodostavat loogisen kokonaisuuden.
"Henkilö" -luokka voitaisiin luoda seuraavasti:
class henkilo {
var $nimi;
var $syntymavuosi;
var $syntymakuukausi;
var $syntymapaiva;
function getSynttaripaiva() {
return $this->syntymapaiva . "." .
"." . $this->syntymakuukausi . "." .
$this->syntymavuosi;
}
}
"Henkilö" -objektia käytetään tällöin seuraavasti:
$jp = new henkilo; $jp->nimi = "Juha-Pekka Järvenpää"; $jp->syntymavuosi = 1983; $jp->syntymakuukausi = 8; $jp->syntymapaiva = 25; print $jp->nimi; print $jp->getSynttaripaiva();
esimerkit/objekti.php
lähdekoodi
Eräs PHP:n parhaimmista ominaisuuksista on se, että PHP:n ulkopuolelta tulevaa dataa ei tarvitse erikseen parsia jos sitä haluaa käyttää. PHP parsii automaattisesti kaiken saatavilla olevan datan. Tämä data käsittää HTML-lomakkeista lähetetyn sekä evästeisiin ja ympäristömuuttujiin asetettu data.
GET ja POST ovat HTTP-protokollan tavat siirtää dataa HTML-lomakkeesta skriptille. GET-metodilla data siirtyy osoitteen mukana, esimerkiksi:
http://www.palvelin.fi/skripti.php?nimi=jp&vastaus=1
POST-metodilla data lähetetään erillään osoitteesta.
Oli metodi kumpi tahansa, PHP parsii lomakkeen kentät PHP:n omiksi muuttujiksi. GET-metodilla lähetetty data parsitaan taulukoksi $_GET ja POST-metodilla lähetetty data taulukoksi $_POST. GET- ja POST-metodeilla lähetettyyn dataan päästään siis käsiksi seuraavasti:
$_GET['muuttujan_nimi'] $_POST['muuttujan_nimi']
Esimerkki lomakkeesta ja skriptistä, jotka käyttävät GET-metodia:
<form action="lomakkeen_kasittelija.php" method="GET"> <input type="text" name="testikentta" value="foobar"> <input type="submit"> </form>
<html> <head> <title>lomakkeen käsittelijä</title> </head> <body> <?echo $_GET[testikentta]?> </body> </html>
esimerkit/lomake_get.html
lähdekoodi (lomakkeen_kasittelija_get.php)
Sama toteutettuna POST-metodilla:
<form action="lomakkeen_kasittelija.php" method="POST"> <input type="text" name="testikentta" value="foobar"> <input type="submit"> </form>
<html> <head> <title>lomakkeen käsittelijä</title> </head> <body> <?echo $_POST[testikentta]?> </body> </html>
esimerkit/lomake_post.html
lähdekoodi (lomakkeen_kasittelija_post.php)
Evästeet eli keksit (engl. cookies) ovat palvelimen ehdottamia ja selaimen tallentamia tietueita, jotka selain lähettää takaisin palvelimelle jokaisen sivuhaun yhteydessä hakiessaan lisää dokumentteja samalta palvelimelta.
PHP parsii evästeet $_COOKIE-taulukoksi aivan kuten GET- ja POST-metodien tapauksessa. Evästeet asetetaan SetCookie-funktiolla:
<?
SetCookie("PHPopasKeksi", "sisältö");
?>
<html>
<head>
<title>keksit</title>
</head>
<body>
<p>Tämä skripti asettaa PHPopasKeksi-nimisen evästeen, jonka arvo on "sisältö". Lataa sivu uudelleen niin evästeen sisältö näkyy mikäli selaimesi tukee evästeitä.</p>
<p>Keksin sisältö: <?echo $_COOKIE['PHPopasKeksi']?></p>
</body>
</html>
esimerkit/evasteet.php
lähdekoodi
Huomaa, että selain ei lähetä evästettä takaisin heti kun se on asetettu. Lataa siis skripti kahteen kertaan nähdäksesi evästeen toiminnan. Evästeet tulee luonnollisesti olla päällä selaimessa.
PHP parsii muuttujiksi myös kaikki saatavilla olevat ympäristömuuttujat. Monet käyttöjärjestelmät asettavat omia ympäristömuuttujia yleisille asetuksille ja sitäkin tärkeämmin, lähes kaikki web-palvelinohjelmistot asettavat omia ympäristömuuttujiaan. Näihin muuttujiin voi olla asetettu esim. kävijän IP-osoite
Ympäristömuuttujat voidaan kaivaa esille kahdella eri tavalla: muuttujiksi parsittuina tai getenv-funktiolla. Ero on siinä, että getenv-funktiolla ympäristömuuttujasta saa aina uusimman mahdollisen version.
<html>
<head>
<title>evästeet</title>
</head>
<body>
<p>
$REMOTE_ADDR = <?echo $REMOTE_ADDR?>
</p>
<p>
getenv('REMOTE_ADDR') = <?echo getenv('REMOTE_ADDR')?>
</p>
</body>
</html>
esimerkit/ymparistomuuttujat.php
lähdekoodi
Seuraava sivu: Komentorakenteet.
Tätä sivua viimeksi päivitetty: 4.2.2004
Kiitos! Opettavaiset esimerkit. uitenkin, miten asetetaan ja luetaan keksissä useita arvoja? esim (etunimi: Joku, sukunimi: Esimerkki jne...)
17.10.2003 19:06Aseta useampi keksi. Yhteen esimerkiksi etu-, toiseen sukunimi.
20.10.2003 16:18Jos on määrittelemätön muuttuja niin miten siitä saa sen virheilmoituksen pois?
16.6.2004 16:00Eikö ole mahdollista asettaa evästettä eri tiedostosta kuin mistä se luetaan.
Eli ongelma on se että tarvisi lukea toisesta PHP-tiedostosta asetettu evästeen arvo, toisessa PHP-tiedostossa.
Toki evästeen voi asettaa yhdellä skriptillä ja lukea toisella. Evästeen toiminta-aluetta (scope) voidaan muuttaa.
http://fi.php.net/manual/en/function.setcookie.php
Oletuksena on muistaakseni sama domain-nimi kun evästeen on asettanut, mutta saatan olla väärässäkin.
Voitko laittaa kävijälaskurin / joka ottaa yhden ip:n vain kerran ja tän kommentti palstan koodit!!
12.9.2004 14:03En rupea kirjoittamaan valmista koodia, mutta voin auttaa hieman kuvailemalla skriptin kulkua.
Kävijän yksilöiminen IP-osoitteen perusteella on vähintäänkin arveluttavaa. Moni kävijä voi tulla saman IP:n takaa (esim. NAT:attu firman verkko). Sama kävijä voi tulla monesta eri IP:stä (esim. kotoa ja töistä).
Periaatteessa laskurin tulee pitää kirjaa IP-osoitteista, joista on jo tehty hakuja. Jokaisen haun yhteydessä sitten tarkistetaan, onko kävijän IP jo listassa. Jos on, ei kirjata, jos ei ole, kirjataan yksi käynti ja uusi IP listaan.
Tämän kommenttipalstan sorsia, kuten ei mitään muutakaan skriptiä tältä sivustolta, ei tulla julkaisemaan. Syynä on yksinkertaisesti se, ettei minulla olisi aikaa vastailla niihin liittyviin kysymyksiin. Koodi ei myöskään ole kovin modulaarista tai kaunista. Skriptit on rakennettu yksinomaan tätä sivustoa varten eivätkä suurin osa niistä sovellu kuin todella suurella sovellutuksella toisille sivustoille.
Periaate kommenttiskriptin takana on, että tietokannassa on taulu, jossa on kentät sivun osoitteelle, ajalle, lähettäjälle ja kommenttitekstille. Jokaisen sisältösivun lopussa suoritetaan skripti, joka hakee kyseisen sivun kommentit kronologisessa järjestyksessä ja muotoilee ne järkevään esitysmuotoon.
Kysyisin et mitä var meinaa tossa phpssä?
31.3.2005 16:07Kysyisin et mitä var meinaa tossa phpssä?
15.4.2005 18:05Voisit kertoa vähän ennemmän noista koodien sisä rakenteista...
Eli esim mitä var $muuttuja
mitä toi var tossa meinaa.
Sitten voisit kertoa niille jotka ei tiedä mikä on functio, niin voisin kertoa mikä se functio on.
Muistan itse kun aloittelin ohjelmoinnin/scriptauksen niin et en tiennyt mikä on functio ja se tuotti vaikeuksia...
Mä en nyt oikeen tajuu noita PHP - juttuja.
Et mihi se PHP koodi kirjotetaa. Ons se semmone javascripti tyyliin:
<html><body>
<script language="PHP">
...Jotain...
</srcript>
</body></html>
alallala
Ei toimi toi POST lähettäjä!
14.11.2005 15:25Toi post metodi koodi toimii tälleenkin:
<?php print"muuttuja" ?>
Olisi sellainen ongelma, et täytyy saada lähetettyä tiedon sivulta toiselle muuttujassa. Homma olisi muuten helppo, mut täytyy submit toiminnon laittaa kuvaan. Tarkasti kerrottuna ongelma on seuraavanlainen:
Ensimmäisellä sivulla on valittavana kolme eri kieltä ja klikkaamalla lippua/tekstiä pitäisi avautua tietokanta valitulla kielellä. Miten tiedon lähetys onnistuu pelkkää lippua/tekstiä painamalla?
Ongelma ratkesi kovalla yrityksellä. Annan vastauksen, jotta vastaisuudessa apua tarvitsevat saavat vastauksen heti. :-D
"Etusivun" pätkät:
<form action="sivu.php" method="post">
<input type="image" src="kuva.gif" name="lang" value="en"></input>
</form>
sivu.php:
<?
$lang = "$_POST[lang]";
if ($lang == "en")
{
$title = "English";
}
echo
'<html>
<head>
<title>'.$title.'</title>
</head>
</html>';
?>
Hei!
En oikein ymmärtänyt tuota lomaketta. Kokeilin sekä post- että get-tyyleillä, mutten onnistunut. Sivut löytyvät osoitteesta http://www.freewebs.com/virtuaalik/lomake.htm
Osaisitko neuvoa minua tai tehdä minulle valmiin koodin?
geocities ei tainnut tukea php:tä. Kokeile tripodia
(mikrobitin sivuilta löytyi tietoa onko joissakin sivuilla php-tuki, katso googlesta).