PHP 101 Basics

php logoAcesta este primul tutorial despre PHP, continua seria tutorialelor 101 si voi incerca sa pun bazele unor tutoriale mai complicate despre PHP si CMS-uri / framework-uri bazate pe acesta.
PHP-ul poate fi downloadat de aici. Site-ul php.net este locul in care gasiti documentatia pentru php, inclusiv in limba romana. Pentru incepatori, insa, poate aparea o problema datorita documentatiei care este destul de stufoasa si te poti pierde prin ea, daca nu stii ce cauti.
Exista si alternativa de a instala PHP impreuna cu Apache si MySQL – WAMP/ XAMP.

Instalarea in Ubuntu se face prin shell:
sudo apt-get install php5 – pentru ultima versiune de PHP;
trebuie sa aveti si Apache: sudo apt-get install apache2
sudo /etc/init.d/apache2 restart – pentru a restarta serverul Apache, dupa instalarea PHP, iar fisierele *.php vor fi puse in /var/www/.

Pentru a putea vedea un fisier *.php aveti 2 posibilitati:
1. incarcati fisierul prin browser navigand la pagina http://localhost/cale_catre_fisier/fisier.php – fisierul trebuie sa fie in folderul www din instalarea Apache, sau in folderul specificat in configurarea serverului.
2. prin shell: in Windows trebuie sa adaugati PHP.exe in variabila Path din System: click dreapta pe My Computer -> Properties -> Advanced system settings -> Environment Variables -> Path (din System Variables) editati adaugand ;”calea spre PHP.exe”(Exemplu pentru cei ce fol WAMP este C:wampbinphpphp5.3.0) “;”-reprezinta separatorul dintre diferitele locatii ale aplicatiilor adaugate in Path. Dupa instalarea PHP si adaugarea in Path, prin scrierea in shell a comenzii: php cale_catre_fisier/fisier.php este lansat in shell fisierul, linuxul stie deja cum sa trateze comanda, singura diferenta este ca trebuie pus $php in loc de php.
Primul fisier php, pentru a testa si instalarea aplicatiei poate fi urmatorul “” in fiecare fisier php pentru a interpreta codul, nu este suficienta doar extensia, trebuie sa se puna si tagurile astfel serverul stie ca portiunea respectiva trebuie interpretata folosind PHP, inainte de a fi trimisa catre browser – client; daca dupa blocul de cod PHP nu mai exista altceva in fisier (HTML) tagul de sfarsit se poate omite, aceasta practica este buna in cazul in care aveti probleme cu headerele trimise de PHP. Se pot folosi si alte taguri daca este activa setarea short open tags insa acestea provoaca confuzie daca serverul poate interpreta mai multe limbaje de programare (Perl, Python, …). Functia phpinfo() va afisa setarile atat despre PHP cat si despre interaciunea acestuia cu Apache si MySql.

Setari ce ar trebui avute in vedere de cei ce doresc sa dezvolte site-uri folosind PHP (pentru dezvoltare (acasa) si productie (hosting)):
– folosirea setului de caractere utf-8, atentie versiuni de MySQL anterioare 4.1 nu suporta utf-8;
– nu folositi setarea register_globals, in versiunea PHP 6 aceasta nu mai exista, astfel scripturile isi pierd din compatibilitate;
– daca folositi expresii regulate, si aveti in script functiile ereg_* inlocuitile cu echivalentul preg_* si folositi expresii Pearl – PCRE, suportul pentru ereg_* si POSIX fiind oprit – default;
– desi PHP-ul nu este un limbaj case-sensitive, incercati sa scrieti scripturile ca si cand acesta ar fi, deoarece se are in vedere ca in viitor acest lucru sa fie implementat;
– aveti grija cu setarea allow_url_fopen – aceasta permite includerea de fisiere externe, poate fi folosita in cazul unui atac;
– disable_functions aceasta directiva poate fi oprita pentru a avea grija ca functii periculoase sa nu fie folosite Exemplu: exec(); fopen(); system(); phpinfo(); shell_exec(); procinfo(); require(); – functii ce pot fi folosite in cazul unui atac; -> PHP-ul opereaza in safe mode, dar acesta nu mai este sustinut incepand cu PHP 5.3 si 6;
– display_errors – setarea ar trebui sa fie oprita pe serverul de hosting, si folosita doar la dezvoltarea proiectului, altfel utilizatorii, sau un atacator pot vedea erori si pot afla informatii despre site la care n-ar avea acces;
– enable_dl – setare ce permite activarea functiei dl(); functie care poate trece peste restrictiile open_basedir, ar trebui oprita daca nu este necesara aplicatiei;
– error_reporting – ar trebui pus pe E_ALL pentru a raporta toate erorile, pot exista erori neraportate daca nu este setata corespunzator si acestea pot scadea randamentul aplicatiei si securitatea acesteia.
– file_uploads – daca utilizatorii nu trebuie sa uploadeze fisiere pe site, ar trebui ca aceasta setare sa fie oprita;
– log_errors – este foarte important, mai ales daca display_errors este oprit, inregistreaza erorile intr-un fisier dat ca parametru;
– magic_quotes_gpc – adauga verificari asupra datelor la fel ca functia addslashes(); nu ar trebui folosita in cazul operarii cu baze de date – MYSQL, deoarece exista functia mysql_real_escape_string();
– memory_limit directiva ce previne scripturile scrise prost sa consume prea multa memorie, se foloseste o marime in Bytes Ex: 8M; poate fi folosita doar daca PHP-ul a fost compilat folosind enable-memory-limit;
– open_basedir – limiteaza fisierele ce pot fi deschise de PHP la un singur director – folosit cu require(); si include().

Variabilele din PHP au semnul $ in fata, si nu sunt declarate cu un tip anume, ele putand fi integer, daca sunt declarate: $i=3 sau string daca sunt $j=’4′; insa atentie, se pot face operatii aritmetice, $j fiind convertita in timpul operatiilor. de asemenea daca $k=’123abc’ si incercam $i+$k, se va extrage partea intreaga din $k si se va realiza adunarea, daca $k ar fi format doar din litere, atunci partea sa intreaga ar fi 0.
In afara de variabilele declarate de utilizator, PHP are si variabile globale Exemplu: $_GET; $_POST; $_SESSION; de cele mai multe ori acestea sunt array-uri ce contin date provenite de la utilizator, sau diverse setari. Recomand sa nu se foloseasca $HTTP_*_VARS, acesta fiind depreciat
Pot fi declarate si constante, PHP pune la dispozitie 2 modalitati:
– const NUME_CONSTANTA=’ceva’; atentie, la declararea constantelor nu se mai pune $ in fata, acesta fiind specific doar variabilelor, si continutul constantei nu se poate modifica, daca din greseala se incearca acest lucru va fi afisata o eroare.
– define(‘NUME_CONSTANTA’,’ceva’); astfel declarata constanta va fi globala.
Momentan echipa care dezvolta PHP a renuntat la sustinerea versiunii 4, ultimul build fiind 4.4.9 din august 2008; buildurile actuale sunt PHP 5.3.0 30 iunie 2009; in paralel se lucreaza si la PHP 6, care este orientat mai mult spre OOP si se incearca folosirea anumitor formate – utf8, insa si compatibilitatea cu versiunea 5; intre versiunile 4 si 5 exista o compatibilitate foarte scazuta, asa ca daca aveti scripturi mai vechi va sugerez sa le rescrieti pentru versiunea 5, si testati pe o versiune minim 5.2.

One thought on “PHP 101 Basics”

Leave a Reply

Your email address will not be published. Required fields are marked *


*