Pagina de start a forumului Comunitatea JustUs  
FAQ Cautare
Membri Grupuri
Profil Mesaje private
Inregistrare Autentificare
Lucrul cu fisiere I
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale PHP | MySql
Subiectul anterior :: Subiectul urmator  
Autor Mesaj
Elektro_Love
Administrator
Administrator
Elektro_Love

Data inscrierii: 21/Iul/2010
Mesaje: 101

MesajTrimis: 21/07/2010 19:06    Titlul subiectului: Lucrul cu fisiere I Raspunde cu citat (quote)

1. Obtinerea atributelor unui fisier

Privilegiile asociate unui fisier sau unui catalog determina operatiile pe care le poate executa un utilizator cu fisierul sau catalogul respectiv.
Pentru a adauga un fisier intr-un director, folosind PHP, trebuie sa aveti permisiunea de scriere in acel director, de asemenea, pentru a adauga date intr-un fisier, trebuie sa aveti permisiunea de scriere in fisierul respectiv.
Aceste permisiuni sunt date (configurate) de administratorul sistemului respectiv.
PHP furnizeaza numeroase functii care va consimt sa obtineti informatii care descriu un fisier.

Functiile fileowner() si filegroup() returneaza fiecare un identificator numeric; puteti converti identificatorul numeric într-un sir prin invocarea functiei posix_getpwuid() cu un identificator de utilizator, respectiv a functiei posix_getgrgid() cu un identificat de grup. Acestea returneaza informatii despre identificatorul precizat.
Iata un exemplu in care puteti vedea, si intelege mai bine, cum sunt folosite functiile rezentate in tabelul anterior (fisierul 'test.txt' care va fi întrebuințat de functii se afla in acelasi director cu scriptul php):

Citat:
<?php
$filename = "test.txt";

$result = file_exists($filename);
echo "<br /> file_exists(): $result";

$result = fileowner($filename);
echo "<br /> fileowner(): $result";

$result = filegroup($filename);
echo "<br /> filegroup(): $result";

$result = filetype($filename);
echo "<br /> filetype(): $result";

$result = filesize($filename);
echo "<br /> filesize(): $result";

$result = fileatime($filename);
$result = date("m/d/Y H:i", $result);
echo "<br /> fileatime(): $result";

$result = filectime($filename);
$result = date("m/d/Y H:i", $result);
echo "<br /> filectime(): $result";

$result = filemtime($filename);
$result = date("m/d/Y H:i", $result);
echo "<br /> filemtime(): $result";

$result = fileperms($filename);
$result = decoct($result);
echo "<br /> fileperms(): $result";

$result = is_file($filename);
echo "<br /> is_file(): $result";

$result = is_dir($filename);
echo "<br /> is_dir(): $result";

$result = is_readable($filename);
echo "<br /> is_readable(): $result";
$result = is_writable($filename);
echo "<br /> is_writable(): $result";
?>


Datele de iesire ale exemplului sunt urmatoarele

Citat:
file_exists(): 1
fileowner(): 0
filegroup(): 0
filetype(): file
filesize(): 5
fileatime(): 08/28/2008 00:00
filectime(): 08/28/2008 10:49
filemtime(): 08/28/2008 11:32
fileperms(): 100666
is_file(): 1
is_dir():
is_readable(): 1
is_writable(): 1


2. Privilegii de fisier

Privilegiile asociate unui fisier (sau director) determina operatiile pe care utilizatorii le pot efectua cu fisierul (sau directorul) respectiv. =
Privilegiile sunt date sub forma a trei grupuri alcatuite din câte trei caractere fiecare; cu alte cuvinte, trei triade. Prima triada indica privilegiile acordate posesorului fisierului. Cea de-a doua triada indica privilegiile acordate membrilor grupului posesor al fisierului. Cea de-a treia triada indica privilegiile acordate altor utilizatori.
Cele 3 caractere care alcatuiesc un grup sunt reprezentate, in sistemele UNIX, prin urmatoarele tri litere: 'r', 'w' si 'x'; acestea reprezinta:
r - fisierul poate fi citit
w - se poate scrie în fisier
x - continutul fisierului poate fi executat
Caracterele unei triade apar întotdeauna în secventa 'rwx'. Daca o anumita litera este înlocuita de o cratima (-), privilegiul asociat nu este accesibil.
De exemplu, sa examinam privilegiile specificate in urmatorul exemplu:
rwxr-xr--
Aceste caractere au urmatoarea semnificatie:
"rwx", posesorul fisierului poate citi, scrie sau executa fisierul
"r-x", membrii grupului posesor al fisierului pot citi sau executa fisierul, dar nu pot scrie în fisier
"r--", alti utilizatori pot citi fisierul, dar nu pot scrie în fisier sau executa continutul fisierului

Privilegiul 'x' este semnificativ numai pentru fisierele care includ un continut executabil, cum sunt fisierele binare executabile (.exe) sau anumite categorii de scripturi.

Posesorul unui fisier poate modifica privilegiile asociate fisierului emitând comanda chmod (aceasta functioneaza in sistemele de operare UNIX).
Aceasta comanda are doua forme. O forma va permite sa specificati privilegiile folosind cifre scrise în octal; cealalta va îngăduie sa le specificati folosind litere.
Pentru a specifica privilegiile întrebuințând cifre în octal, calculati valoarea numerica a fiecarei triade. Pentru aceasta, însumati numerele corespunzatoare fiecarui privilegiu la dispoziție din cadrul triadei. Numerele asociate privilegiilor sunt urmatoarele:
r - 4
w - 2
x - 1
De exemplu, privilegiul "rwx" are valoarea 4 + 2 + 1 = 7. Similar, privilegiul "r-x" are valoarea 4 + l = 5, iar privilegiul "r--" are valoarea 4.
Dupa ce ati calculat valoarea numerica a fiecarei triade, formati un numar din trei cifre scris în octal, care este alcatuit din valoarea numerica a privilegiilor utilizatorilor, valoarea numerica a privilegiilor membrilor grupului, si valoarea numerica a privilegiilor altor utilizatori. Astfel, privilegiile "rwxr-xr--" corespund valorii în octal 754.
3. Modificarea privilegiilor unui fisier

Pentru a modifica privilegiile unui fisier, folositi functia chmod(), care are urmatoarea forma:
chmod(nume_fisier, mod)
Argumentul 'nume_fisier' specifica numele si calea de acces a fisierului ale carui privilegii urmeaza a fi modificate, iar argumentul 'mod' specifica privilegiile dorite, în general, se prefera exprimarea privilegiilor sub forma unui numar scris în octal. Pentru aceasta, prefixati valoarea folosind cifra 0.
De exemplu, puteti atribui unui fisier "text.txt" privilegiile "rwxr-xr--" specificând pentru 'mod' valoarea 0754, functia "chmod" va fi chmod("text.txt", 0754)
Pentru ca functia chmod() sa se execute cu succes, PHP trebuie sa ruleze sub contul utilizatorului posesor al fisierului. Functia returneaza TRUE în caz de reusita, respectiv FALSE în caz contrar.
Pentru a modifica grupul posesor al unui fisier, invocari functia chgrp(), care are forma:
chgrp("nume_fifier", grup)
- Unde "grup" este un nume sau numar care desemneaza grupul respectiv.

Functiile chmod() si chgrp() nu functioneaza sub Microsoft Windows.
4. Deschiderea unui fisier

Inainte de a putea citi sau scrie într-un fisier, trebuie sa deschideti fisierul utilizând functia fopen().
fopen("nume_fisier", "mod")
- unde 'nume_fisier' specifica numele si calea spre fisierul care urmeaza a fi deschis, iar 'mod' indica tipul de acces dorit.
Modurile de deschidere a unui fisier sunt urmatoarele:
r - Permite doar citirea fisierului
r+ - Citire sau scriere de la inceputul fisierului
w - Creaza fisierul daca nu exista si suprascrie datele existente
w+ - Citire sau scriere; la scriere , creeaza fisierul daca nu exista si suprascrie datele existente
a - Adaugare; Creaza fisierul daca nu exista si adauga datele noi la sfarsitul fisierului existent
a+ - Citire sau scriere; la scriere, creaza fisierul daca nu exista si adauga datele noi la sfarsitul fisierului existent
x - Doar scriere; Creaza fisierul daca nu exista si genereaza un averisment daca acesta exista
x+ - Citire sau scriere; Creaza fisierul daca nu exista si genereaza un averisment daca acesta exista
b - Deschide fisierul in mod binar
Functia fopen() returneaza FALSE daca PHP nu a reusit sa deschida fisierul, în caz contrar, returneaza o valoare care contine un întreg, numit "identificator de fisier", care se foloseste pentru identificarea unui fisier de catre functiile care executa operatii cu fisiere.
De exemplu, instructiunea urmatoare deschide fisierul 'carte.txt' pentru citire:
$fh = fopen("carte.txt", "r");
Sub Microsoft Windows, fisierele ASCII si fisierele binare sunt tratate în mod diferit. Când deschideti un fisier binar sub Windows, specificati "b" ca al doilea caracter al modului; de exemplu, "rb" pentru citire, "wb" pentru scriere, "a+b" pentru citire si adaugare. Daca nu procedati astfel, citirile din fisier si alte operatii se vor încheia prematur sau vor esua.
5. Verificarea finalizarii unei operatii cu un fisier

Operatiile cu fisiere (inclusiv cele legate de deschiderea, citirea unui fisier si scrierea într-un fisier) pot esua dintr-o varietate de motive. Deci, este important sa verificati daca fiecare operatie s-a încheiat cu succes.
Iata o modalitate în care puteti proceda:

Citat:
<?php
$fh = fopen("carte.txt", "rb");
if (!$fh) {
echo "Nu a fost deschis fisierul carte.txt.";
}
?>


Functia fopen() returneaza FALSE daca nu reuseste sa deschida fisierul. In acest caz, scriptul executa instructiunea echo care afisaza un mesaj.
O forma alternativa mai simpla foloseste operatorul OR (SAU):

Citat:
<?php
($fh = fopen("carte.txt", "rb"))
OR die("Nu a fost deschis fisierul carte.txt.");
?>


6. Inchiderea unui fisier

Un fisier deschis consuma resursele sistemului. îndată ce un script a terminat de utilizat un fisier, scriptul trebuie sa închida fisierul, eliberând aceste resurse.
La sfârsitul unui script, PHP închide în mod automat fisierele deschise. Totusi, la programare se recomanda sa închideti fisierele mai rapid, ori de câte ori este posibil.
Pentru a închide un fisier, folositi functia fclose():
fclose(identificator_fisier)
- 'identificator_fisier' este identificatorul fisierului, returnat la deschiderea acestuia cu functia fopen()
Iata un exemplu caracteristic de deschidere, exploatare si închidere a unui fisier:

Citat:
<?php
$fh = fopen("carte.txt", "rb");
if (!$fh) {
echo "Nu a fost deschis fisierul carte.txt.";
}
// Aici se insereaza instructiunile care folosesc fisierul deschis
fclose($fh);
?>


Functia fclose() returneaza valoarea TRUE daca fisierul a fost închis cu succes. Testarea acestei valori este rareori necesara, pentru că nu se mai pot face prea multe dupa ce s-a ratat o încercare de a închide un fisier.
Vezi profilul utilizatorului Trimite mesaj privat
Afiseaza mesajele pentru a le previzualiza:   
Creaza un subiect nou   Raspunde la subiect    Pagina de start a forumului Comunitatea JustUs Tutoriale PHP | MySql Ora este GMT + 3 ore
Pagina 1 din 1

 
Mergi direct la:  
Nu puteti crea un subiect nou in acest forum
Nu puteti raspunde in subiectele acestui forum
Nu puteti modifica mesajele proprii din acest forum
Nu puteti sterge mesajele proprii din acest forum
Nu puteti vota in chestionarele din acest forum
ezHyperShadow template - a boo design Original ezHyperShadow theme by boo ©2004 www.ez-life.net
Powered by phpBB © 2001, 2002 phpBB Group
Fa-ti si tu propriul forum GRATUIT, pe www.myforum.ro