Dobrodošli na moji domači spletni strani!

PHP

Tukaj bom prikazal, kako uporabiti PHP.

Kaj je PHP?

PHP (PHP Hypertext Preprocessor) je razširjen odprtokodni programski jezik, ki se uporablja za strežniške uporabe oziroma za razvoj dinamičnih spletnih vsebin. PHP primarno teče na spletnem strežniku, kjer jemlje PHP izvorno kodo za vhod in generira spletno stran kot izhod. Kot del PHP-ja sta tudi možnost zaganjanja skript v ukaznem načinu in kreiranje grafičnih aplikacij.

Izvorne kode v brskalniku ne vidimo. Izpiše se kot koda HTML.
Če vpišemo: <?php
echo 'Hello World!';
?>
se bo v izvorni kodi v brskalniku pokazalo: Hello World!

Vsaka PHP stran ima končnico .php, včasih tudi druge odvisno od nastavitev strežnika.
PHP kodo je potrebno zaganjati na strežniku z nameščeno PHP podporo.

Sintaksa

Vsaka PHP stran ima končnico .php. PHP kodo lahko vključimo v HTML. Pred začetkom PHP kode moramo dodati znak: <?php, pred koncem pa: ?>.
Ukazi se ločijo s podpičjem (;). V PHP-ju poznamo enovrstične komentarje (//) in večvrstične komentarje (/* in */). Č je spremenljivka $a in napišemo echo 'hey $a' se bo izpisalo točno tako če pa uporabimo " se bo izpisala vrednost spremenljivke.

Izpisovanje in spremenljivke

Za izpisovanje se v PHP-ju uporabljata ukaza print in echo.

Odprite urejevalnik besedil in vanj vpišite:<?php
echo 'Hello World!';
?>
Datoteko shranite kot hello-world.php in jo prek FTP programa prenesite na strežnik. V brskalniku odprite stran, ki ste jo naredili. Pisalo bo Hello World. Sedaj si poglejte izvorno kodo v brskalniku. Izgledalo bo kot navadna HTML koda. PHP izvorne kode se v brskalniku ne vidi.

PHP pozna tudi osnovne matematične operatorje kot so + - / * Poglejmo si primer:

<?php
echo '5+5 je enako ';
echo 5 + 5;
echo ' 5*5 je enako ';
echo 5 * 5;
?>
Izpisalo se bo: 5+5 je enako 10 5*5 je enako 25

Sedaj pa na spremenljivke. Za njih se zapiše znak za dolar ter ime spremenljivke. Poglejmo si primer;

<?php
$stranicaA = 5; //določimo stranico a
$stranicaB = 10; //določimo stranico b
$ploscina = $stranicaA * $stranicaB; //določimo ploščino

echo 'Ploščina kvadrata s stranicama
5 ter 10 je enaka ';
echo $ploscina;
?>
Izpisalo se bo: Ploščina kvadrata s stranicama 5 ter 10 je enaka 50

V prejšnjem primeru smo dvakrat uporabili ukaz echo. Lahko ga tudi enkrat.

<?php
$stranicaA = 5; //določimo stranico a
$stranicaB = 10; //določimo stranico b
$ploscina = $stranicaA * $stranicaB; //določimo ploščino

echo 'Ploščina kvadrata s stranicama
5 ter 10 je enaka ' .$ploscina;
?>
Z piko (.) smo torej združili besedilo z vrednostjo spremenljivke.

Zanke

PHP pozna več zank. Tukaj bomprikazal le dve najpogostejši

If

V prevodu to pomeni "če". Torej v stavek vnesemo naprimer 5=10 in stavek nam bo vrnil false (neresnično). Poglejmo si primer:

<?php
$a = 100;
$b = 99;

if ($a==$b)
{
    echo '100 je enako 99!';
}
else
{
    echo '100 ni enako 99!';
}
?>
Izpisalo se bo: 100 ni enako 99!
Podrobneje si poglejmo stavek IF. Dobro se ga naučite saj je zelo pomemben. Najprej zapišemo if nato v oklepajih navedemo pogoj. Uporabimo operator ==, ki pomeni je enako < manjše kot, > večje kot, <= manjše ali enako, => večje ali enako, != ni enako. Kot pri matematiki uporabnimo tudi logične operatorje kot so AND (&&) OR (||) ter NOT (!). Nato pride na vrsto zaviti oklepaj zatem pa stavki, ki se naj izvedejo, če je pogoj resničen. Sledi zaviti zaklepaj. Če želimo, da se nekaj izvede, ko je stavek neresničen zapišemo še else, zaviti oklepaj, stavke ter zaviti zaklepaj.

For

Ta se izvaja dokler ni pogoj izpolnjen. Poglejte si primer:

<?php
for ($i=1; $i<=10; $i++)
{
  echo 'Spremenljivka i ima vrednost '.$i.'
'; } ?>
Izpisalo se bo:
Spremenljivka i ima vrednost 1
Spremenljivka i ima vrednost 2
Spremenljivka i ima vrednost 3
Spremenljivka i ima vrednost 4
Spremenljivka i ima vrednost 5
Spremenljivka i ima vrednost 6
Spremenljivka i ima vrednost 7
Spremenljivka i ima vrednost 8
Spremenljivka i ima vrednost 9
Spremenljivka i ima vrednost 10

Zanka se je izvedla desetkrat oz. dokler $i ni bil večji ali enak 10.
Prvi argument v zanki for je implementacija spremenljivke. V tem primeru spremenljivki $i določimo vrednost 1. V drugem argumenti zapišemo pogoj v tem primeru ponavljaj zanko dokler $i ne bo večji ali enak 10. V tretjem argumentu pa določimo, kaj naj se naredi ko se posamezna zanka konča. $i++ pomeni da se spremenljivka poveča za 1. Prav tako bi lahko napisalo $i-- ali pa $i** .

Funkcije

Funkcije uporabljamo, da nam ni treba večkrat ponavljati istih ukazov. Primer:

<?php
function vrstica($a) {
echo $a.'$lt;br>';
}

vrstica('besedilo...');
vrstica('besedilo...');
?>
Dvakrat se bo izpisalo besedilo... vsakič v novo vrstico. Če bi uporabili echo, ki se izpisalo besedilo...besedilo...
Na začetku smo določili funkcijo vrstica, ki sprejme besedilo, nato pa ga izpiše skupaj z vrstico, v nadaljevanju pa smo to funkcijo klicali. Če želimo da funkcija ne izpiše nič, bi namesto echouporabili return. Primer:
<?php
function sestej($a,$b) { //ustvarimo funkcijo sestej, ki sprejme 2 argumenta
return $a+$b; //funkcija vrne seštevek 2 argumentov
} //konec funkcije

sestej (2,4); //ne izpiše se nič
echo sestej (2,4); //izpiše se 6

$_GET in $_POST

$_GET in $_POST sta posebni spremenljivki, ki shranjujeta podatke poslane iz obrazca.

$_GET

$_GET spremenljivka shranjuje podatke poslane iz obrazca ali pa iz URL-ja strani. Je v obliki polja.
Pred nadaljevanjem si prenesite to datoteko: obrazec.html. Ta vsebuje obrazec z kontaktnimi podatki, ki se bodo poslali na naslov stran.php . Torej to datoteko si shranite na vaš strežnik, ustvarite pa tudi novo datoteko stran.php. Vanj vpišite:

<php
$ime = $_GET['ime'];
$priimek = $_GET['priimek'];
$starost = $_GET['starost'];

echo 'Ime vam je '.$ime.' pišete pa se '.$priimek.'. Stari ste '.$starost.' let.';
?>
Sedaj odprite obrazec.html ter vpišite podatke. Kliknite Potrdi. Odprla se bo stran stran.php kjer bodo izpisani vaši podatki. Če pa dobro pogledate v vrstico z URL-jem bodo noter zapisani vaši podatki. Obrazec je torej odprl stran
stran.php?ime=kljuka&priimek=nepovem&starost=nivazno&potrdi=Potrdi
Vsi podatki iz obrazca so se prenesli v URL nato pa s pomočjo $_GET spet napisali.

$_POST

$_POST spremenljivka shranjuje podatke poslane iz obrazca. Je v obliki polja. Če v obeh zgornjih datotekah spremenimo GET v POST, se bo pokazalo, kot prej, v URL-ju pa se podatki ne bodo prikazali.

Časovne funkcije

Oglejmo si kako bi izpisali datum na serverju.

<?php
echo date("d.m.y");
?>
Funkcija date torej vrne rezultat na serverju. Podati ji moram en argument v katerem zapišemo format. S to funkcijo lahko izpišemo tudi čas:
<?php
echo date("d.m.y  H:i:s");
?>
V formatu lahko uporabljamo različna ločila. Glavni znaki so:
  • d - dan v mesecu od 1 do 31
  • D - poimenovan dan v tednu od Mon do Sun
  • j - dan v mesecu brez začetnih ničel
  • l - poimenovan dan v tednu od Monday do Sunday
  • N - dan v tednu od 1 do 7
  • S - vrstna končnica dneva (st, nd, rd, th)
  • z - dan v letu od 0 do 365
  • W - teden v letu
  • F - meseci
  • t - število dnevov v mesecu
  • Y - leto
  • y - leto, zadnji dve številki
  • G - ura (24 ur)
  • g - ura (12 ur)
  • H - ura (24 ur) brez ničel
  • h - ura (12 ur) brez ničel
  • i - minute
  • s - sekunde
  • u - milisekunde

Include in require

Include in require vključita neko datoteko v le-to. Oba delujeta enako, le da različno delujeta ob napaki. Include vrne napako ter nadaljuje z izvajanjem require pa vrne usodno napake in izvanjanje skripte se ustavi. Pripročam require() seveda pa lahko zaenkrat uporabljamo kar include. Tako bomo videli, da če datoteka ne obstaja tudi podatkov, ki jih bomo želeli črpati iz nje ne bomo dobili. Pa si poglejmo primer:

casovneFunkcije.php :<?php
$time["navaden"] = date("G.i.s");
$time["datum"] = date("d.m.Y");
$time["vse"] = date("d.m.Y  G.i.s");
?>mojaDatoteka.php:<?php
include("casovneFunkcije.php");

echo "Trenuten čas je ".$time["navaden"];
echo "
Danes je ".$time["datum"]; echo "
Če to združimo dobimo ".$time["vse"]; ?>
Torej v datoteki casovneFunckije.php nastavimo določene spremenljivke na neko vrednost. Vendar kako lahko imajo vse tri spremenljivke enako ime? To je mogoče. Spremenljivka $time je pravzaprav množica. Množica se označi z [ in ]. Tako nek objekt v tej množici poimenujemo ter mu določimo vrednost. Skratka objekt "navaden" v množici $time ima vrednost trenutnega časa. Objekt "datum" ima vrednost trenutnega datuma itd. To datoteko smo potem vstavili v datoteko mojaDatoteka.php s funkcijo include(). Tako lahko sedaj dostopamo do vseh spremenljivk v vstavljeni datoteki.

Posebne spremenljivke

PHP ima ogromno posebnih spremenljivk kot so $_GET, $_POST, $_SESSION, $_COOKIE, $_SERVER, $_REQUEST, $_ENV vsaka od teh množic pa ima mnogo objektov. Več informacij o njih najdete na: http://www.w3schools.com/php/php_superglobals.asp

Piškotki

Piškotki so posebne datotekice shranjene v brskalniku, ki spletnim stranem omogočajo shranjevanje določenih besedic. Primer:

<?php
setcookie("mojPrviPiškotek", "filips");
echo $_COOKIE["mojPrviPiškotek"];
?>
Najprej smo s funkcijo setcookie nastavili vrednost našega piškotka. Prvi argument je ime drugi pa vrednost piškotka. Potem smo izpisali ta naš cookie s posebno spremenljivko $_COOKIE . Če si sedaj pogledamo listo cookiejev te strani bomo videli naš cookie. Spodaj piše da poteče ob koncu seje torej ko se brskalnik zapre. Mi lahko to tudi spremenimo tako, da čas podamo v tretjem argmuentu.
<?php
setcookie("mojPrviPiškotek", "kljuka", time()+3600);
echo $_COOKIE["mojPrviPiškotek"];
?>
Če si sedaj pogledamo piškotek vidimo da bo potekel čez eno uro.

Phpsessid

PHPSESSID je poseben piškotek, ki označuje vrednost seje. PHP pozna seje, ki so uporabne pri prijavljanju uporabnikov. Poglejmo si primer:

<?php
session_start();
if (isset($_SESSION["prijavljen"])==false) {
    if (isset($_GET["user"])){
        $_SESSION["prijavljen"] = $_GET["user"];
        die ("Uspešno ste prijavljeni!");
    }
    die ("Napačno uporabniško ime!");
}
echo "Še vedno ste prijavljeni kot ".$_SESSION["prijavljen"];
?>
Razlaga:
Najprej smo pognali funkcijo session_start ki poskrbi, da lahko sploh gledamo v sejo. Ta funkcija je obvezna, če se želimo ukvarjati s sejo.
Nato pride na vrsto stavek if , ki z funkcijo isset preveri če objekt "prijavljen" v seji ne obstaja. Če ne obstaja potem preveri, če obstaja argument user Url vrstici. Če obstaja potem nastavi objek "prijavljen" v seji na vrednost, ki ste jo vpisali v url. Če pa user ne obstaja potem z funkcijo die prekine nadaljevanje skripte in hkrati izpiše sporočilo "Napačno uporabniško ime!" .
Če pa na začetku stavek if ugotovi, da ste že prijavljeni, potem izpiše "Še vedno ste prijavljeni kot " ter ime. Sedaj poskusite preveriti. Odprite to datoteko. Izpisalo se bo, da je uporabniško ime napačno. Sedaj pa zgoraj v URL vrstici dodajte:
?user=filips
In kliknite enter. Izpisalo se bo uspešno ste prijavljeni. Sedaj zbrišite tisti zadnji del in povovno odprite datoteko. Izpisalo se bo, da ste še vedno prijavljeni kot filips. Če se želimo odjaviti moramo pognati ukaz unset($_SESSION) , ki sejo izbriše.

$_SERVER

S pomočjo PHP SERVER spremenljivke lahko pridobimo nekaj informacij o trenutni php datoteki, ki se izvaja, klientu ali strežniku, ki gostuje datoteko. Sintaksa za dostop do spremenljivke je naslednja: $_SERVER['identifikator']

IDENTIFIKATORJI:
trenutna php datoteki, ki se izvaja
	PHP_SELF - izpis trenutno zagnane php datoteke
	QUERY_STRING - izpis GET parametrov, ki se nahajajo v URL naslovu
	DOCUMENT_ROOT - pot do vrhnje mape spletnega strežnika
	
klient, ki dostopa do naše spletne strani
	REMOTE_ADDR - IP naslov uporabnika, ki dostopa do naše strani
	HTTP_REFERER - spletni naslov, iz katerega je uporabnik prišel na našo stran
	HTTP_USER_AGENT - informacije o brskalniku klienta
	
spletni strežnik, na katerem gostujemo
	SERVER_ADDR - IP naslov strežnika
	SERVER_SOFTWARE - kateri program se uporablja za spletni strežnik
	SERVER_ADMIN - kdo je administrator strežnika
	SERVER_SIGNATURE - dodaten opis strežnika

MySql

MySQL je sistem za upravljanje s podatkovnimi bazami. Več informacij o njem najdete na: http://www.w3schools.com/php/php_mysql_intro.asp
OPOMBA: če želite preizkuševati ukaze, ki sledijo, potrebujete strežnik z nameščeno MySql podporo.

Povezovanje

Pred nadaljevanjem ustvarite poljubno bazo in v njej poženite ukaz:

CREATE TABLE `table` (
`id` INT NOT NULL AUTO_INCREMENT ,
`number` INT NOT NULL ,
`text` TEXT NOT NULL ,
`date` DATE NOT NULL ,
PRIMARY KEY ( `id` )
) ENGINE = MYISAM;

INSERT INTO `table`(`id`, `number`, `text`, `date`) VALUES (1,'1211','text','2016-04-28');
INSERT INTO `table`(`id`, `number`, `text`, `date`) VALUES (2,'6543','my text','2016-04-01');
 
ki bo ustvari tabelo v bazi in vanjo doda nekaj podatkov.
Za povezavo do MySql baze bomo uporabili razširitev mysqli.
Sintaksa za kreiranje povezave do baze je enostavna: $mysqli = new mysqli("host", "username", "password", "database"); Spodnji primer prikazuje, kako se povežemo na bazo my_db na lokalnem računalniku, z uporabniškim imenom root in praznim geslom. Vi vpišite svoje podatke. $mysqli = new mysqli("localhost", "root", "", "my_db"); Ko ustvarimo povezavo, je priporočljivo, da preverimo, ali je bila povezava na bazo uspešna:
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
Poleg mysqli se za povezovanje na bazo uporablja tudi razširitev mysql. Ker pa je razširitev mysql od verzije PHP 5.5 naprej opuščena, raje uporabljate razširitev mysqli.

Izpisovanje

Sedaj bomo pripravili novo SQL poizvedbo, ki bo vrnila podatke iz tabele my_table. Pod kodo iz prejšnjega koraka vpišite:

$query = "SELECT * FROM my_table";
$result = $mysqli->query($query); 
Rezultat poizvedbe je shranjen v spremenljivki $result.
Sedaj bomo uporabili zanko while, s pomočjo katere se bomo sprehodili čez vrnjene rezultate.
Vsaka vrnjena vrstica bo shranjena v spremenljivki $row. Posamezna polja iz zapisa bomo izpisali tako, da v oglatih oklepajih vpišemo ime polja.
while ($row = $result->fetch_assoc()) {
  echo $row['number'].'
'; echo $row['text'].'
'; echo $row['date'].'
'; echo '------------------------
'; }

Vstavljanje

Najprej pripravimo utrezen SQL stavek za vstavljanje podatkov. Zatem ga zaženemo in podatki bodo vpisani v bazo.
Omenjeni postopek je prikazan na spodnjem primeru:

$query="INSERT INTO my_table(id, number, text, date) VALUES(0,987,'hello','2013-05-21')";
$mysqli->query($query);