    Lucrul cu fishiere in php
    ~~~~~~~~~~~~~~~~~~~~~~~~~


   Un script php poate executa operatzii de citire / scriere asupra unor fishiere, la fel ca in C++.
  Atita doar ca fishierele se pot accesa la nivel de string <=> linie de text.
   De asemenea se mai pot accesa shi in mod binar (la nivel de bloc de octetzi) - lucru mai putzin folosit.


  Lucrul cu un fishier in php impune urmatoarele:

 - folosirea unei variabile asociate fishierului, care se va crea in momentul deschiderii acestuia:

        $variabila=fopen("<locatzie fishier>","metoda");


   metoda:
      r  -> read
      r+ -> read/write (acces direct)
      w  -> write: daca fishierul exista, se shterge, daca nu se creeaza
      w+ -> read/write (acces direct). Spre deosebire de r+, daca fish. nu exista, il creeaza
      a  -> append -> descihde fishierul pt. scriere la sf. datelor DEJA (shi obligatoriu) existente
      a+ -> read/write. Pointerul fishierului se pune la sfirshit

Ex:
      $f=fopen("date.in","r");
      $f=fopen("date.out","w");
      $f=fopen("ftp://user:pass@www.site.term","w");  -> deschide o conexiune ftp, shi permite crearea
                                          unui fishier la acea locatzie.

 - citirea din fishier:
    * fgets(<variabila_fishier>,<lungime>);
        -> citeshte din fishier un string pe care il intoarce, de lungime maxim <lungime> caractere.
           Daca pe linia curenta sunt mai putzin de <lungime> caractere, se citeshte pina la sfirshitul 
           liniei shi se muta pointerul de fishier la inceputul liniei urmatoare
        -> daca linia curenta are mai mai mult de <lungime> caractere se vor citi doar <lungime> caractere
           shi pointerul de fishier se muta pe primul caracter care a ramas necitit
	-> daca omitem parametrul <lungime> se ia implicit 1024.

    * fgetc(<variabila_fishier>); -> citeshte un singur caracter shi-l intoarce
    * fscanf(<variabila_fishier>,<format_citire>,<variabile>); -> analog lui scanf din C++
    * fread(<variabila_fishier>,<nr_octetzi>); -> folosit la fishierele binare.

   Daca deschidem un fishier binar la metoda mai trebuie adaugat b
    ex: $f=fopen("nume.ext","rb");

 - testarea sf. de fishier:
      feof(<variab_fishier>);
  
 - inchiderea fishierului:
      fclose(<variab_fishier>);


Ex: apl01.php 
       vom afisha intr-un php contzinutul fishierului cici.txt, aflat in directorul curent.
   Presupunem ca acest fishier NU va linii mai mari de 1024 de caractere.
---------------------------------
 - scrierea in fishier:
      fwrite(<variabila_fishier>,<stringu>);


 - alte functzii:
     * file_exists(<string-nume fishier+locatzie>);
               -> verifica daca exista fishierul specificat
     * is_writable(<string-nume fishier+locatzie>);
               -> verifica daca fishierul dat de nume+locatzie se poate deschide pt. scriere
          in sistemele de operare multi-user, trebuie setate explicit permisiunile fiecarui utilizator.
         In acest sens, in directorul in care php face scrierea trebuie ca acesta sa aiba drepturile 
         respective.
         
Ex: apl02.php

    Daca incercarea de a scrie in fishier da eroare, pentru a da drepturi de scriere in directorul
in care php-ul dorim sa scrie, se fac urmatoarele:
  - in cazul in care NU avem setat "Advanced file sharing" vom activa aceasta optziune de la:
        * deschidem Windows Explorer (Tzapa+E)
        * meniul Tools, optziunea Folder Options
        * Tabul View
        * Debifam optziunea Use simple file sharing (ultima)
  - mergem pe directorul in care vrem sa dam drepturile de scriere (de regula cel setat ca director
    home pt. serverul de http. La shcola este c:\work )
  - dam click dreapta, shi alegem Sharing & Security
  - alegem tab-ul Security
  - dam Add
  - Scriem grupul de utilizatori "Everyone"
  - Dupa ce dam Ok, in fereastra anterioara apare shi grupul Everyone
  - in partea de jos a ferestrei bifam shi optziunea de Write + modify
  - eventual putam chiar sa dam Full Control
-------------------------------------------------

apl03.php : guestbook primitiv.
  
   Unui site putem sa-i atasham un guestbook (carte de impresii) in care utilizatorii care doresc
pot sa-shi scrie propriile lor impresii.
   Evident, acestea tre' sa ramine pe site; una dintre modalitatzile in care le putem retzine este sa
le scriem intr-un fishier.
   Pentru asta vom face apl03.php, care sa listeze contzinutul fishierului, iar la sfirshit sa contzina un
form prin care utilizatorul poate sa adauge un nou comentariu.

--------------------------------------------------

   Functzii pentru ASCII in PHP:
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 - ord(caracter) -> ne da codul ascii al lui caracter
 - chr(cod) -> ne da caracterul care are codul ascii cod.
  Obs. In aplicatziile de windows, un ENTER (trecerea la rind nou) este marcata (De exemplu
atunci cind citim dintr-un textarea) prin 2 caractere, shi anume:
   \n\r <=> codurile ascii 13 shi 10

   pe cind in linux (unix) un enter este DOAR \n (cod ascii 13)