Kurs: PHP programiranje Materijali vezani uz ovu lekciju: - Test rad sa fajl sistemom - Rad sa fajl sistemom (PDF dokument) Uključivanje fajlovaKorišćenje već napisanog koda je veoma korisna i česta opcija prilikom programiranja. Na primer, ukoliko web sajt sadrži meni koji se ponavlja na svakoj strani, tada je mnogo jednostavnije napisati kod jedanput, a zatim ga dinamički uključiti na strane na kojima treba da se pojavi, nego pisati kod u okviru svake strane. Ovo je moguće korišćenjem tzv. uključivanjem fajlova od strane servera.Fajlovi koji se uključuju, obično sadrže XHTML ili PHP kod i snimaju se sa ekstenzijom .inc, iako mogu biti snimljeni i sa drugim ekstenzijama. Sadržaj ovakvih fajlova se kodira jedanput, a zatim poziva od strane strana na kojima je potreban. Ukoliko dođe do izmene na originalnom fajlu, one su vidljive na svim stranama na kojima se koristi. Na primer, dešava se da sve strane jednog web sajta, na svom vrhu, treba da imaju isto zaglavlje. Neka je HTML kod zaglavlja: <div style="border:ridge 1px;width:95%;background-color:#F0F0F0;padding:5px">
Ovaj kod je moguće snimiti unutar fajla nazvanog Header.inc. Nakon kreiranja fajla zaglavlja, neophodno je da se on uključi na svaku stranu na kojoj treba da se prikaže. To se postiže pomoću naredbi require() ili include(). <?php
Funkcija require() poziva fajl header.inc i čita njegov sadržaj. Ovaj sadržaj se onda prikazuje kao deo strane sa koje je pozvan. Rad sa fajl sistemomKada govorimo o radu sa fajlovima, sa strane web servera, postoje neke stvari koje je potrebno znati pre samog početka.Najčešće će server, na kome će se nalaziti naša php aplikacija, biti udaljen i veoma je izvesno da nećemo imati prava na korišćenje fajl sistema izvan okruženja našeg web servera. Zato treba celu strukturu foldera i fajlova formirati u okviru same aplikacije, a ponekad tražiti i od administratora prava na pisanje fajlova čak i na nivou te aplikacije. Osim toga, rad sa fajlovima je uvek rizičan, što se tiče izvršavanja, jer nikada ne možemo biti u potpunosti sigurni da će fajl koji nam je potreban - biti dostupan. Zato se blokovi koda, u kojima se radi sa fajlovima, dodatno bezbednosno ojačavaju, jer, pucanje aplikacije u ovakvim situacijama može malicioznom korisniku otkriti informacije koje možda ne želimo da damo. Ovu tematiku ćemo konkretnije obraditi u jednoj od narednih lekcija, kada budemo radili sa greškama i izuzecima. Pisanje u fajloveDa bismo radili sa nekim fajlom, potrebno je prvo da mu pristupimo. To je moguće uraditi na sledeći način:<?php
Ovom linijom, tačnije, funkcijom fopen(), dajemo nalog sistemu da stvori fajl, koji se naziva proba.txt. Obzirom da nismo naglasili celu putanju fajla, on će biti kreiran u folderu gde je i skripta koja ga je kreirala. Za drugi parametar ove funkcije, prosleđujemo karakter, kojim označavamo koju tačno akciju nameravamo da izvršimo na fajlu. <?php
Ovaj kod već daje mnogo više mogućnosti za rad na fajlu. Na primer, sada fajl (kome se ubuduće obraćamo putem handle-a) možemo i zatvoriti. <?php
Tradicionalan pristup fajlovima, u smislu obaveznog zatvaranja nakon otvaranja, nije obavezan u php-u, jer će fajl automatski biti zatvoren nakon izvršenja i emitovanja skripte. U svakom slučaju, ovo je dobra praksa. <?php
Izvršenjem koda iznad, biće kreiran fajl proba.txt u folderu aplikacije, čiji će sadržaj biti tekst “probni tekst”. Ovo naravno nije praksa pri pisanju fajlova, već je najbolje, ili tekst i putanju pripremiti pre korišćenja funkcija: <?php
U HTML-u se novi red označava tagom <br>, ali za tekstualne fajlove i dalje važi pravilo escape karaktera \n za novi red. <?xml version="1.0" encoding="utf-8" ?>
a da pri tom od podataka posedujemo samo jedan niz gradova. <?php
a zatim bi taj tekst ubacili u željeni fajl. <?php
Obratite pažnju da se za novi red na nekim sistemima koriste escape kodovi \n , na nekim \r , a na nekim oba.
Čitanje iz fajlovaZa čitanje fajlova, potrebno je takođe inicijalizovati fajl objekat, po istom principu kao i za pisanje, s tom razlikom što treba naznačiti da je u pitanju čitanje, oznakom „r” u parametrima:<?php
Samo čitanje izvršava se kroz funkciju fread(). Ova funkcija prima fajl objekat i broj bajtova koji će biti pročitan iz fajla. Da bismo pročitali ceo fajl, koristimo funkciju filesize() koja izračunava broj bajtova fajla i prosleđujemo joj putanju našeg fajla kao parametar. Na taj način, dobijamo tačan broj bajtova našeg fajla, odnosno, broj bajtova koje želimo da pročitamo. <?php
Ovakav način čitanja je karakterističan za čitanje podataka iz toka, te ovaj blok izgleda najčešće isto u svim programskim jezicima nastalim iz C-a.
Brisanje fajlovaBrisanje fajlova, vrši se jednom komandom.<?phpJedino na šta prilikom njenog izvršenja treba obratiti pažnju, jeste da fajl bude zatvoren, inače fajl neće moći da bude obrisan. Osim pomenutih načina, postoji još jedan način za pisanje i čitanje fajlova u php-u. Ovaj način, iako ne toliko moćan, prilično je jednostava i efikasan. A pre svega, veoma kratak. Pisanje u fajl, gde je prvi parameter adresa fajla, a drugi, sadržaj za upis. <?phpČitanje iz fajla, kao parametar, prima adresu fajla, a kao rezultat vraća string - sadržaj fajla. <?php Rukovanje direktorijumimaKao i sa fajlovima, putem PHP-a moguće je rukovanje i direktorijumima. Jedina vidljiva razlika je u tome što folderi, za razliku od fajlova, mogu da imaju rekurzivan sadržaj, pa su tako malo problematičniji za čitanje.Pravljenje direktoriumaDa bi na web serveru napravili direktorijum, dovoljna je jedna linija koda:<?php...ali i dosta obazrivosti. Pre svega, kao i sa fajlovima, i ovde na snagu treba staviti najveće moguće bezbednosne mere (staviti kod u obradu izuzetka ili bar prekinuti izvršavanje koda, funkcijom die()). Konvencije putanja na web serveru su nešto drugačije nego na fajl sistemu, pa se root folder web aplikacije obeležava sa “../” a aktuelni folder “./”. Ukoliko pokušate da kreirate folder na nepostojećoj lokaciji, php će prijaviti grešku. Brisanje direktoriumaBrisanje foldera je još jednostavnije od kreiranja:<?php Listanje direktorijumaNajpotrebnije u radu sa direktorijumima je svakako listanje njihove sadržine. Da bi izlistali sadržaj foldera, potrebno je: napraviti direktorijum objekat funkcijom opendir i putanjom ciljnog foldera. Čitati fajl po fajl u direktorijumu, sve dok u njemu postoje fajlovi. Obzirom da se čitanje sadržaja direktorijuma vrši sekvencijalno, možemo prilikom svakog kruga while petlje intervenisati na aktuelnom fajlu, čija putanja čini sadržaj promenljive $fajl,<?php Najvažnije iz lekcije
|