PHP Date and File Functions Tutorial
Learn about PHP functions like date(), include(), and handling files in this comprehensive tutorial with syntax examples. Master date formatting, timestamp, include files, and file manipulation in PHP.
PHP Date and File Functions Tutorial
E N D
Presentation Transcript
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