280 likes | 402 Views
12. PHP – 3.dio. Funkcije date(), include(), rad s datotekama, mail. Date() funkcija u PHP-u. Koristi se ako želimo ispisati ili obraditi podatke o sistemskom datumu i vremenu Sintaksa: date(format, timestamp) Format – specificira format u kojem će biti ispisan datum (obavezno navesti)
E N D
12. PHP – 3.dio Funkcije date(), include(), rad s datotekama, mail M. Zekić-Sušac
Date() funkcija u PHP-u • Koristi se ako želimo ispisati ili obraditi podatke o sistemskom datumu i vremenu • Sintaksa: date(format, timestamp) • Format – specificira format u kojem će biti ispisan datum (obavezno navesti) • Timestamp – specificira vremensku oznaku. Standardna oznaka je trenutni datum i vrijeme. Timestamp je broj sekundi od 1. siječnja 1970. u 00:00:00 GMT. (nije obavezno navesti) M. Zekić-Sušac
Format datuma • U funkciji date() obavezno je navesti format vremena i datuma. U tu svrhu koriste se predefinirana slova, npr: • d – dan u mjesecu, brojčano (01-31) • m – tekući mjesec, brojčtano (01-12) • Y – tekuća godina, četveroznamenkasto • U format se mogu upisati i znakovi “/”, “.” i dr, npr: <?php echo date("Y/m/d"); echo "<br />"; echo date("Y.m.d"); echo "<br />"; echo date("Y-m-d"); ?> Rezultat ove skripte je prikaz: 2006/07/11 2006.07.11 2006-07-11 M. Zekić-Sušac
Vremenska oznaka (timestamp) • Za vraćanje sistemskog vremena i datuma koristi se funkcija mktime() • Sintaksa: mktime(hour,minute,second,month,day,year,is_dst) • Npr. ako želimo ispisati sutrašnji datum: <?php $tomorrow = mktime(0,0,0,date("m"),date("d")+1,date("Y")); echo "Sutra je “ . date("d/m/Y", $tomorrow); ?> Rezultat skripte: Sutra je 14/05/2008 M. Zekić-Sušac
Funkcija include() • Ova funkcija omogućava umetanje sadržaja druge .php datoteke u trenutno aktivnu .php datoteku • Preporuča se koristiti ako postoje dijelovi web mjesta koji će se ponavljati na više web stranica, kao npr. zaglavlja, izbornici, i dr. • Takvi dijelovi se smještaju u posebne php datoteke i pozivaju iz osnovne datoteke, što omogućuje lakše ažuriranje, npr. ako želimo napraviti promjenu u izborniku, to treba učiniti samo u jednoj php datoteci u kojoj je izbornik. • Sintaksa: include(“naziv_datoteke”) M. Zekić-Sušac
Primjer upotrebe include() • Primjer 11 - uključuje zaglavlje iz posebne datoteke: <html> <body> <?php include("header.php"); ?> <h1>Dobrošli na moju stranicu!</h1> <p>Neki tekst</p> </body> </html> • Sadržaj datoteke “header.php” može biti npr.: <h2><center>Odjel za matematiku</h2> <img src="logo_web.gif"> Za provjeru ovog primjera kliknite na: PHP_primjer11.php M. Zekić-Sušac
Primjer upotrebe include() - nastavak • Ako pogledamo u pregledniku IE izvorni kod datoteke PHP_primjer11.php, dobivamo ovo: <html> <body> <h2><center>Odjel za matematiku</h2> <img src="odjel_matem.jpg"> <h1>Dobrošli na moju stranicu!</h1> <p>Neki tekst</p> </body> </html> • Ovdje je automatski umetnut sadržaj druge datoteke: header.php M. Zekić-Sušac
Rukovanje datotekama • Za otvaranje datoteke koristi se funkcija fopen(). • Sintaksa: fopen(“naziv_datoteke”, “mod_otvaranja”) • The first parameter of this function contains the name of the file to be opened and the second parameter specifies in which mode the file should be opened: <html> <body> <?php $file=fopen("welcome.txt","r"); ?> </body> </html> M. Zekić-Sušac
Načini otvaranja datoteka M. Zekić-Sušac
Primjer otvaranja datoteke – fopen() • Primjer nastoji otvoriti datoteku, u slučaju da ne postoji, prikazuje poruku: <html> <body> <?php $file=fopen("welcome.txt","r") or exit(“Ne mogu otvoriti datoteku!"); ?> </body> </html> Za provjeru ovog primjera kliknite na: PHP_primjer12.php M. Zekić-Sušac
Provjera da li je kraj datoteke – feof() • Za provjeru da li je dostignut kraj datoteke (eng. end of file - EOF) koristi se funkcija feof() • Korisna je ako treba učitavati podatke za koje ne znamo koliko ih ima, pa ih treba učitavati sve dok se ne dostigne kraj datoteke.Napomena: Nije moguće čitati datoteke otvorene u modu: w i x! • Primjer: if (feof($file)) echo "Kraj datoteke"; M. Zekić-Sušac
Čitanje datoteke liniju po liniju – fgets() • Za čitanje iz datoteke liniju po liniju koristi se funkcija fgets() • Nakon poziva ove funkcije, pokazivač se automatski premješta na početak nove linije u datoteci. • Primjer - čita liniju po liniju sve do kraja datoteke: <?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Prikaz linije sve do kraja datoteke while(!feof($file)) { echo fgets($file). "<br />"; } fclose($file); ?>Ako je npr. u datoteku welcome.txt upisano: Ovo je prva poruka. Ovo je druga poruka. Ovo je treća poruka. Za provjeru što će ispisati ovaj primjer kliknite na: PHP_primjer13.php • Otvaranje datoteke za čitanje • Ispis linije ako nije kraj datoteke M. Zekić-Sušac
Čitanje datoteke znak po znak • Za čitanje podataka iz datoteke znak po znak, koristi se funkcija fgetc() • Nakon poziva ove funkcije, pokazivač se automatski premješta na početak nove linije u datoteci. • Primjer - čita znak po znak sve do kraja datoteke: <?php $file = fopen("welcome.txt", "r") or exit("Unable to open file!"); //Prikaz znakova sve do kraja datoteke while(!feof($file)) { echo fgets($file); } fclose($file); ?> M. Zekić-Sušac
Pisanje u datoteku • Za pisanje u neku datoteku koristi se funkcija fwrite(). • Funkcija vraća broj byte-ova podataka koji je upisan. • Sintaksa: fwrite(file,string,length)File – naziv datoteke String – naziv varijable čija se vrijednost upisuje u datoteku Length – maksimalni broj byte-ova podataka koji će se upisati (nije obavezno navesti) Napomena: da bi se moglo pisati u datoteku, ona mora biti prethodno otvorena u odgovarajućem modu. S pomoću ove funkcije mogu se upisivati podaci u bilo kojem formatu (ascii, binarni i dr). M. Zekić-Sušac
Primjer pisanja u datoteku • Primjer 14 – Pisanje teksta u datoteku “test.txt” <?php $file = fopen("test.txt","w"); echo fwrite($file,"Hello World. Testing!"); fclose($file); ?> Rezultat skripte će biti: 21 M. Zekić-Sušac
Rukovanje mailom – mail() • Funkcija mail() koristi se za slanje el.pošte iz php skripte • Sintaksa: mail(to,subject,message,headers,parameters) • To – specificira kome (na čiju e-mail adresu) se šalje poruka, obavezno navesti • Subject – specificira naslov poruke, obavezno navesti i to u jednoj liniji koda • Message – definira tekst poruke, obavezno navesti, svaka linija se odvaja znakovima za line feed (\n). Linije ne smiju biti dulje od 70 znakova. • Headers – specificira dodatna zaglavlja, kao npr. From, Cc, and Bcc. Nije obavezno navesti. Ako se navode, treba ih odvojiti međusobno znakovima (\r\n) • Parameters – specificira dodatne parametre za slanje, nije obavezno navesti Napomena: da bi se mogla koristiti ova funkcija, mora biti podešeno korištenje programa za mail u php.ini datoteci na poslužitelju M. Zekić-Sušac
Slanje teksta mailom • Za primjer slanja običnog teksta mailom, najprije su deklarirane varijable ($to, $subject, $message, $from, $headers), zatim su one korištene u funkciji mail() za slanje putem e-maila: <?php $to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent."; ?> M. Zekić-Sušac
Primjer slanja teksta mailom • Primjer 15: <html><body> <?php $to = “mzekic@mathos.hr"; $subject = "Test mail"; $message = “Zdravo. Ovo je probna poruka."; $from = “mzekic@efos.hr"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo “Poruka je poslana."; ?> </body></html> Za provjeru ovog primjera kliknite na: PHP_primjer15.php M. Zekić-Sušac
Slanje maila s pomoću obrasca (forme) • Ovaj primjer najprije prikazuje formu za unos podataka, zatim se na klik miša pozove druga php datoteka koja šalje podatke • Sadržaj datoteke PHP_primjer16.php <html> <body> <?php { echo "<form method='post' action=‘salji.php'> Email: <input name='email' type='text' /><br /> Subject: <input name='subject' type='text' /><br /> Message:<br /> <textarea name='message' rows='15' cols='40'> </textarea><br /> <input type='submit' value='Pošalji'/> </form>"; } ?> </body> </html> M. Zekić-Sušac
Slanje maila s pomoću obrasca (forme) - nastavak • Sadržaj datoteke salji.php: <html><body> <?php if (isset($_REQUEST['email'])) //ako je ispunjeno polje "email“ poruka se šalje { $email = $_REQUEST['email'] ; $subject = $_REQUEST['subject'] ; $message = $_REQUEST['message'] ; mail(“mzekic@mathos.hr", "Subject: $subject", $message, "From: $email" ); echo “Hvala na Vašoj poruci!"; } ?> </body> </html> M. Zekić-Sušac
Slanje sigurnog maila • Mail poslan u prethodnom primjeru nije siguran, već spam programi mogu u polja obrasca upisati npr. CC:, BCC: adrese više osoba i slati ih • Da bismo to spriječili, provjerava se polje upisano za email adresu, na način opisan na stranici: http://www.w3schools.com/php/php_secure_mail.asp M. Zekić-Sušac
Rukovanje greškama u PHP-u • Rukovanje greškama ili eng. error handling važno je kako bi se korisnika obavijestilo o vrsti greške koja se pojavila, ali i za kontrolu daljnjeg nastavka rada programa • Program bez rukovanja grešaka izgleda neprofesionalno, a također je izložen i sigurnosnim rizicima • Najčešći načini rukovanja greškama u PHP-u su: • Jednostavne naredbe "die()" • Samostalno kreirane greške (eng. custom errors) i okidači grešaka (eng. error triggers) • Izvještavanje o greškama M. Zekić-Sušac
Primjer upotrebe die() funkcije • Ako želimo otvoriti datoteku, upisali bismo naredbu npr.: <?php $file=fopen("welcome.txt","r"); ?> • Ukoliko datoteka ne postoji, pojavit će se pokruka o grešci, npr. ovako: Warning: fopen(welcome.txt) [function.fopen]: failed to open stream: No such file or directory in C:\webfolder\test.php on line 2 • Kako bi se izbjegle ovakve greške, može se u kodu provjeriti da li datoteka postoji i korisniku prikazati drugačija poruka: M. Zekić-Sušac
Primjer upotrebe die() funkcije - nastavak <?php if(!file_exists("welcome.txt")) { die(“Datoteka ne postoji"); } else { $file=fopen("welcome.txt","r"); } ?> Ovakva provjera da li datoteka postoji ne ostavlja korisnika s grubom porukom i ne prekida izvođenje aplikacije. Prikazat će se poruka “Datoteka ne postoji”. M. Zekić-Sušac
Rukovanje izuzecima • Rukovanje izuzecima (eng. exception handling) koristi se za provjeru unosa podataka od strane korisnika, te omogućava poruku o grešci korisniku i nastavak rada. • Rukovanje izuzecima mijenja normalan tijek programa ako se dogodio neki izuzetak (neka specifična greška ili događaj koji onemogućava daljnji nastavak programa), npr. ako korisnik unese tekst umjesto broja, i dr. • Za rukovanje izuzecima koriste se ključne riječi: Sintaksa: try { Ovdje naredbe kod kojih će se automatski provjeravati da li se dogodio izuzetak } catch { Ovdje naredbe koje rukuju izuzetkom: ispisivanje poruke ili dr. } M. Zekić-Sušac
Primjer rukovanja izuzecima <?php //funkcija koja provjerava da li je vrijednost manja od 1 function checkNum($number) { if($number>1) { throw new Exception("Value must be 1 or below"); } return true; } try { checkNum(2); / } catch(Exception $e) { echo 'Message: ' .$e->getMessage(); } ?> M. Zekić-Sušac
Literatura: • W3C, PHP Tutorial, http://www.w3schools.com/php/, 28.04.12. M. Zekić-Sušac