Programare web

Introducere în PHP – Ghidul de la A la Z

PHP, sau Hypertext Preprocessor este un limbaj de programare ce rulează pe server și poate oferi o componentă dinamică site-ului, prin trimiterea de răspunsuri la client ce au fost generate on-server, la momentul request-ului.  Astăzi, PHP a devenit un limbaj foarte popular de programare web, datorită simplității sale și ușurinței cu care acesta poate fi învățat. O să vorbesc imediat de unde vine această simplitate și de ce trebuie tratată cu grijă. Cine folosește PHP?

  • Rețelele sociale foarte cunoscute precum Facebook(deși la ora actuală au propriul framework și propriul limbaj, dar primele versiuni au fost scrise în PHP) și Twitter
  • Jocuri online ce nu se bazează pe descărcarea unui anumit software, ca Travian sau Triburile
  • Platforme de editare foarte cunoscute ca WordPress, PhpBB sau Joomla, dar și temele compatibile cu fiecare platformă(tema acestui site conține PHP, fiindcă rulează pe WordPress)
  • Framework-uri pentru e-Commerce

De ce este PHP simplu?

Spre deosebire de alte limbaje de programare (C++, Java, .Net), PHP are o curbă de învățare mult mai rapidă. Acest lucru i-a conferit, de-a lungul timpului, o reputație nu tocmai bună, proliferându-se ideea că este un limbaj simplist, deschis erorilor și codului prost scris. Personal, aș zice, în majoritatea cazurilor, că aceste afirmații vin, datorită unei lipse de maturități la nivelul calității codului, în rândul celor care scriu PHP. Nu vreau nici pe departe să sugerez că toți cei care scriu cod PHP îl scriu prost!! Vreau să subliniez că, datorită curbei de învățare rapide, vom putea încă din primele momente să putem rezolva o bună parte din probleme – vom fi foarte productivi și chiar vom termina treaba, dar e posibil ca tot ce-am făcut să nu fie robust.

Problema de mai sus ține și de experiența celui care scrie cod. Chiar dacă ești la început și vei remarca că poți face lucruri utile cu puțin, nu uita să înghiți totul cu un strop de sare…sunt foarte multe de învățat în realitate.

Limbajul este deschis, ai foarte mult control asupra codului, dar paradoxal, aș ruga pe cei cu multă experiență în programare să scrie cod PHP într-o aplicație ce ajunge în producție. Easy to learn…hard to master.

Cum funcționează PHP?

Pentru a rula codul PHP trebuie să ai un server ce rulează PHP. Poți să obții serverul fie luând un hosting gratuit cu PHP, fie luând unul plătit sau fie instalând propriul server pe computer. Un fisier .php simplu nu va putea fi citit direct de către browser chiar dacă este pe propriul PC, dar din fericire există câteva programe cunoscute și simple de utilizat ce rezolvă aceasta problema: XAMPP sau WAMPP(LAMP pentru Linux) sunt pachete software ce instalează automat componentele necesare rulării codului PHP. După instalarea programului vei putea testa componentele intrând pe http://localhost.

1. Primii pași

Prima oară trebuie să ne familiarizăm un pic cu codul PHP. Deschide editorul tău de texte preferat și scrie:

<?php phpinfo(); ?>

Salvează fișierul ca phpinfo.php în htdocs(în XAMPP, sau www în WAMPP), deschide http://localhost și dacă totul este corect vei vedea o pagină cu toate informațiile contului tău. De la username, la parolă, până la ce sistem de operare utilizezi și multe altele.Tot din exemplul de mai sus ne dăm seama că PHP începe cu <?php si se termină cu ?>. Acest criteriu va fi valabil pentru toate fisierele PHP.

Primul script in PHP

<?php
echo "Primul meu script in PHP";
?>

Primul tău script în PHP utilizează funcția echo. Cu ea putem afișa un string utilizatorului.

<?php
$text = "Primul meu script in PHP!";
$numar = 7
echo $text."<br>";
echo "Primul meu script in PHP! <br>";
echo $numar." e numar prim!";
?>

Rezultat:

Primul meu script in PHP!
Primul meu script in PHP!
7 e numar prim!

În PHP variabilele sunt marcate cu un $, urmat de numele variabilei. În variabilă am un string identic cu cel din functia echo. Notația cu punct, de la nivelul primei instrucțiuni echo reprezintă operația de concatenare. În felul acesta, adăugăm după textul din $text un line-break.

Un alt aspect important este modul de definire al variabilelor. Spre deosebire de Java, C sau C++, PHP e dynamic-typed, adică doar la momentul executării script-ului PHP se cunoaște tipul variabilei. Acest lucru este important, iar adesea, o convenție de nume a variabilelor se adoptă atunci când scriem cod PHP, pentru a compensa lipsa tipurilor. Din acest motiv și codul poate fi mai expus riscurilor deoarece nu se poate verifica consistența datelor decât la run-time.

În PHP ghilimelele au un rol important! Ghilimele vor printa conținutul variabilei (stringul), iar apostrofurile vor printa numele variabilei.

<?php
$culoare = "rosii";
echo "Trandafirii sunt $culoare";
echo "<br />";
echo 'Trandafirii sunt $culoare';

//Trandafirii sunt rosii
//Trandafirii sunt $culoare

?>

Comentariile
Ca în orice alt limbaj de programare comentariile sunt utilizate pentru a furniza date adiționale programatorului sau userului și nu sunt citite de către interpretor.

<?php
//Acesta este un comentariu

/*
Acest este un bloc mai lung de comentarii.
Se utilizeaza mai rar din motive practice.
*/
?>

2. Operatorii

Operatorii sunt simbolurile matematice utilizate pentru a modifica anumite valori. Nu voi enunța sau descrie toti operatorii fiindca există o groază de website-uri ce fac o descriere amănunțită la acestea, ca W3Schools.

3. PHP if…else

Instrucțiunea condițională este desigur și în PHP. La modul general, o instrucțiune condițională este locul unde fluxul programului se ramifică.

if (conditia) {codul ce va fi executat dacă condiția este adevărată}

<?php
$var1=1;
$var2=2;

// Verificăm dacă variabilele sunt egale
if ($var1==$var2){
    echo "Cele două variabile sunt egale!";
}
// Dacă nu sunt egale afișează mesajul
else {
    echo "Cele două variabile sunt diferite!";
}
?>

Codul de mai sus verifică dacă variabila $var1 este egală cu $var2. Știm că $var1 nu este egală cu $var2 așa că se va afișa mesajul “Cele doua variabile sunt diferite!”. Pentru a verifica dacă cele două variabile sunt egale am utilizat operatorul “==“. Utilizarea acoladelor este opțională, dar vă recomand să le utilizati tot timpul, fiindcă te ajută să delimitezi unde se termină fiecare declarație, în special când vrei structuri de genul.

if (conditie 1) {
    // Dacă e îndeplinită condiția 1 verifică condiția 2
    if(conditie 2) {
        // Execută ceva doar dacă condiția 1 și condiția 2 sunt adevărate
    }
    else {  // Afișează un mesaj  }
}
else { // Afișează un mesaj }

4. Funcțiile în PHP

Adevărata putere a PHP-ului vine din funcțiile sale. PHP vine cu peste 700 de funcții incluse, ce pot fi chemate, dupa declararea lor, oriunde în pagină.

<?php
// Creăm o functie cu numele "nume"
function nume() {
    echo "Stefanescu Marian";
}
echo "Numele meu este: ";
// Chemăm funcția – Nu este necesar să adăugăm $ fiindcă deja este declarată
nume();
?>

Alt exemplu ce ilustrează o funcție simplă ce calculează suma dintre două numere. Variabila totală calculează suma celorlalte două.

<?php
function suma($x,$y) {
    $total=$x+$y;
    return $total;
}

echo "1 + 16 = " . suma(1,16);
?>

5.Formularele în PHP

În PHP, te vei întâlni adesea de formularele HTML. Acestea sunt de o importanță majoră fiindcă cu ajutorul lor userul poate comunica cu server-ul prin diferite metode. Am ieși din sfera acestui tutorial dacă am trata protocolul HTTP, dar este important de reținut că PHP oferă suport nativ pentru funcțiile implementate în protocolul HTTP.

Să luăm ca exemplu formularul prin care puteți pune comentarii pe acest website. Odată ce ai scris un comentariu și dai submit, prin intermediul protocolului HTTP, o cerere de tip POST se trimite la server. Serverul, prin intermediul unui serviciu intermediar(Apache de ex.), preia această cerere și o trimite la PHP engine. Acesta are suport nativ pentru cererile de tip POST, preia informațiile din această cerere și le prelucrează mai departe. În cazul de față, va stoca conținutul comentariului într-o bază de date MySQL, de pe server. La un moment ulterior, când încarci din nou pagina pe care ai adăugat comentariul, PHP se folosește de ID-ul postării pentru a selecta din baza de date toate informațiile legate de postare(post + comentarii + metadate etc.). Dar să revin…

  1. Creați o nouă filă PHP și salvați-o ca formular.php;
  2. Copiați codul de mai jos.
<html>
<body>
<form action="formular.php" method="get">
Nume: <input type="text" name="nume" />
Varsta: <input type="text" name="varsta" />
<input type="submit" />
</form>

<?php 
Buna <?php if (isset($_GET["nume"])) echo $_GET["nume"]; ?>.<br />
Ai <?php if (isset($_GET["varsta"])) echo $_GET["varsta"]; ?> ani!
</body>
</html>

Formularul de mai sus va fi executat în formular.php, adică chiar în fișierul în care este scris, iar metoda prin care se vor lua informațiile va fi GET. Am folosit funcția isset din PHP care verifică dacă într-un dicționar cu cheie valoare există acea cheie. Când intrăm prima oară pe acest script, $_GET[“nume”] și $_GET[“varsta”] nu există, iar fără acest isset, PHP ar fi aruncat o eroare, spunându-ne chiar acest lucru. După submit, ele există, isset este adevărat și atunci se execută echo.

Dacă de exemplu ai introdus în formular Andrei și 99 de ani, vei vedea:

Buna Andrei.
Ai 99 ani!

Dacă observi am dat câmpurilor numele “nume”, respectiv “varsta”. Funcția GET va prelua informația din câmpul cu numele specificat, ca apoi să arate informațiile introduse utilizatorului. Totuși, funcția GET nu ar trebui să fie utilizată pentru texte foarte mari, mai mari de 2000 de caractere și nici pentru trimiterea unor informații confidențiale.

Exemplul de mai sus se va vedea în browser ca:

http://localhost/formular.php?nume=Andrei&varsta=99

Același principiu este valabil și pentru o formularul unde ai vrea să inserezi o parolă. Vei putea vedea conținutul câmpurilor în URL, lucru periculos, în special dacă ești ți-e calculatorul virusat și este vreun mic progrămel care face screen recording și trimite pe undeva asta. De aceea, la crearea formularelor web, funcția GET se va utiliza foarte rar, fiind înlocuită de cea POST. GET este utilă în elemente dinamice ce țin de comportamentul general al site-ului și nu depind în vreun fel de inputul din partea user-ului.

Funcția POST se utilizează pentru a prelua informatiile dintr-un formular, dar cu câteva diferențe importante totuși:

  • Informația trimisă prin metoda POST nu modifică URL-ul paginii
  • Dimensiunea maximă a conținutului ce poate fi transmis este de 8MB, dar această valoare poate fi schimbată din php.ini(mai precis, opțiunea post_max_size).
<html>
<body>
<form action="formular.php" method="post">
Nume: <input type="text" name="nume" />
Varsta: <input type="text" name="varsta" />
<input type="submit" />
</form>

<?php 
Buna <?php if (isset($_POST["nume"])) echo $_POST["nume"]; ?>.<br />
Ai <?php if (isset($_POST["varsta"])) echo $_POST["varsta"]; ?> ani!
</body>
</html>

Comparativ cu exemplul cu funcția GET, am modificat doar metoda prin care se trimite informația (method=”post”) și funcția în sine. Rezultatul va fi același, dar după ce ai apăsat pe submit în URL va apărea doar http://localhost/formular.php.

Write A Comment