Documente Academic
Documente Profesional
Documente Cultură
16
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
<?php
// Acesta este un comentariu uni-linie
# Acesta este de asemenea un comentariu
uni-linie /* Acesta este format din mai multe
linii de comentariu bloc care se întinde pe mai
multe linii */
// Comentariile pot fi folosite pentru a
”anula” //anumite secvențe de cod
$x = 5 /* + 15 */ + 5;
echo $x;
?>
</body>
</html>
Case-sensitivity în PHP
În PHP, toate cuvintele cheie (de exemplu if, else, while, echo, etc.),
clase, funcții și funcții definite de utilizator nu sunt sensibile la scrierea
cu litere mici sau cu litere mari.
În exemplul de mai jos, cele 3 instrucțiuni echo sunt corecte (și
echivalente, ca rezultat):
Exemplu:
<!DOCTYPE html>
<html> <body>
<?php
ECHO "Hello World!<br>";
echo "Hello World!<br>";
EcHo "Hello World!<br>";
?> </body>
</html>
Variabile PHP
Variabilele reprezintă ”containere” pentru memorarea informațiilor.
Crearea (declararea ) variabilelor PHP
În PHP, un identificator de variabilă începe cu simbolul $, urmat de
numele propriu-zis al variabilei:
Exemplu:
<?php
$txt = "Hello world!";
$x = 5;
$y = 10.5;
?>
18
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
19
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
20
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
myTest();
echo "<p>Variable x outside function is:
$x</p>"; ?>
function myTest() {
global $x, $y;
$y = $x + $y;
}
myTest();
echo $y; // afișează 15
?>
function myTest() {
$GLOBALS['y'] =
$GLOBALS['x']+$GLOBALS['y']; }
myTest();
echo $y; // outputs 15
?>
În mod normal, atunci când o funcție este executată, toate variabilele sale
sunt șterse. Cu toate acestea, uneori, ne dorim ca o variabilă locală să NU
fie eliminată pentru a o utiliza într-o altă secvență de instrucțiuni.
Pentru a nu fi eliminată din memorie se utilizează specificatorul static la
prima declarare a variabilei:
<?php
function myTest() {
static $x = 0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
?>
Apoi, de fiecare dată când funcția este apelată, acea variabilă va memora
în continuare informațiile pe care le conținea la ultimul apel. Notă:
Variabila este locală funcției.
Instrucțiunile echo și print
În PHP există două moduri de bază pentru afișare: echo și print.
Instrucțiunile echo și print sunt mai mult sau mai puțin asemănătoare.
Ambele sunt utilizate pentru afișarea datelor pe ecran.
Diferențele care pot fi semnalate sunt:
• echo nu returnează nici o valoare, în timp ce print returnează 1,
astfel încât poate fi utilizată în cadrul expresiilor.
• echo poate avea parametri multipli (mai rar), în timp ce print are
un parametru unic.
• echo este o instrucțiune relativ mai rapidă decât print.
22
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Constante PHP
O constantă este un identificator (nume) pentru o valoare simplă.
Valoarea nu poate fi modificată în timpul execuției scriptului. Un
identificator valid de constantă începe cu o literă sau cu simbolul ”_” (nu
se utilizează simbolul $).
Notă: Spre deosebire de variabile, constantele sunt vizibile global în
cadrul scriptului.
Pentru crearea unei constante se utilizează funcția define().
Modul de utilizare a funcției define():
define(nume, valoare, case-insensitive)
Parametrii funcției și semnificația acestora:
• nume: specifică numele constantei
• valoarea: specifică valoarea constantei
23
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Operatori PHP
Operatorii sunt utilizați pentru a realiza diferite operații cu variabile și
valori constante.
Operatorii în limbajul PHP se clasifică astfel:
• Operatori aritmetici (+, -, *, /, %, **)
• Operatori de atribuire (=, +=, -=, *=, /=, %=)
• Operatori relaționali (==, ===, !=, <>, !==, >, <, >=, <=) •
Operatori de incrementare/decrementare (++$x, $x++, --$x,
$x--)
• Operatori logici (and, or, xor, &&, |, !)
• Operatori pe stringuri (., .=)
• Operatori pe tablouri (+, ==, ===, !=, <>, !==)
Pentru mai multe informații accesați linkul:
http://www.w3schools.com/php/php_operators.asp
Structuri de control
Instrucțiuni de decizie
Instrucțiunile condiționale (de decizie) sunt utilizate pentru a executa
anumite acțiuni bazate pe condiții.
Foarte des atunci când scriem cod, dorim să efectuăm acțiuni diferite
pentru diferite condiții.
În PHP există următoarele instrucțiuni de decizie:
• if – execută o secvență de cod dacă o condiție logică este
adevărată
• if...else - execută o secvență de cod dacă o condiție logică este
adevărată și execută altă secvență de cod dacă condiția este
falsă
24
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Sintaxa:
function functionName() {
code to be executed;
}
Notă: Numele unei funcții începe cu o literă sau simbolul ”_”, nu poate
începe cu o cifră.
Alegeți nume sugestive pentru funcții care să reflecte scopul acesteia.
Numele de funcții nu sunt case-sensitive.
Pentru mai multe detalii accesați:
http://php.net/manual/en/functions.user-defined.php
Tablouri PHP
Un tablou reprezintă o structură de date care memorează într-o singură
variabilă o mulțime de valori.
Exemplu:
<?php
$cars = array("Volvo","BMW", "Toyota");
echo "I like
".$cars[0].",".$cars[1]."and"
.$cars[2].".";
?>
Dacă aveți de memorat o listă de valori (de exemplu numele unor
mașini), memorarea acestor date ar arăta în modul următor: $cars1 =
"Volvo";
$cars2 = "BMW";
$cars3 = "Toyota";
Dacă ar trebui să scrieți un cod pentru identificarea unei anumite mașini
dintr-o mulțime de 3 sau 300 de mașini, cum ar arăta codul?
Soluția în acest caz este să creați un tablou.
Un tablou poate stoca o mulțime de valori, utilizând un nume unic, iar
regăsirea unei valori se va realiza prin referirea la un anumit
index(poziția ocupată de valoare ).
Pentru crearea unui tablou în PHP se utilizează funcția array().
În PHP, există 3 tipuri de tablouri:
• Tablouri indexate – tablouri indexate numeric
• Tablouri asociative – tablouri în care identificarea unui element se
realizează pe baza unei chei
• Tablouri multidimensionale – tablouri care conțin unul sau mai
multe tablouri
26
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Sortarea tablourilor
• sort() – sortează tablourile în ordine crescătoare
• rsort() - sortează tablourile în ordine descrescătoare • asort() -
sortează tablourile asociative în ordine crescătoare, în funcție de o
valoare dată
• ksort() - sortează tablourile asociative în ordine crescătoare, în
funcție de o cheie dată
• arsort() - sortează tablourile asociative în ordine descrescătoare, în
funcție de o valoare dată
• krsort() - sortează tablourile asociative în ordine descrescătoare, în
funcție de o cheie dată
</body>
</html>
Atunci când utilizatorul completează formularul de mai sus și dă clic pe
butonul de trimitere, datele din formular sunt trimise pentru procesare
într-un fișier PHP denumit "welcome.php". Datele din formular sunt
trimise prin metoda HTTP POST.
Metoda HTTP POST și variabila superglobală $_POST Pentru
afișarea datelor trimise prin intermediul formularului putem utiliza
variabila superglobală $_POST și instrucțiuni de afișare a diferitelor
componente ale acesteia. Fișierul "welcome.php" va arăta astfel:
<html>
<body>
28
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
<form action="welcome_get.php" method="get">
Name: <input type="text"
name="name"><br>
E-mail: <input type="text"
name="email"><br> <input type="submit">
</form>
</body>
</html>
</body>
</html>
29
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Când să utilizăm metoda GET?
Informațiile transmise dintr-un formular prin metoda GET sunt vizibile
tuturor( toate numele și valorile variabilelor sunt afișate în URL). GET
este o metodă care restricționează volumul de informație trimis la
aproximativ 2000 de caractere. Datorită faptului că variabilele sunt
afișate în URL, este posibil să marcăm pagina, lucru util în anumite
situații.
Metoda GET poate fi utilizată în transmiterea datelor mai puțin
importante.
Notă: Metoda GET nu trebuie utilizată pentru trimiterea parolelor sau
a altor informații importante!
Când anume utilizăm metoda POST?
Informațiile transmise dintr-un formular prin metoda POST nu sunt
vizibile altor persoane(numele/valorile sunt încorporate în cadrul unei
cereri HTTP) și nu există limitări din punct de vedere al volumului de
informație transmis.
În plus, metoda POST oferă o funcționalitate avansată cum ar fi suport
pentru operația de încărcare a fișierelor pe server în format binar.
Deoarece variabilele nu sunt afișate în URL marcarea paginii care
conține formularul nu este posibilă.
Pentru mai multe informații accesați link-ul :
http://www.w3schools.com/php/php_forms.aspf
Validarea datelor din formulare
Pentru protejarea datelor dintr-un formular trebuie să realizați o validare
corectă a datelor care să protejeze formularul împotriva atacurilor
provocat de hackeri sau a spam-urilor.
Ce este funcția htmlspecialchars()?
Funcția htmlspecialchars() convertește caracterele speciale în entități
HTML. De exemplu, caractere ca ” < ” și ” >” vor fi înlocuite cu < și
>.
Acest lucru împiedică atacatorii să exploateze codul prin inserarea de
coduri HTML sau Javascript în formulare (atacuri de tip Cross-site
Scripting).
Notă : Foarte important în securitatea unui formular PHP – Variabila
$_SERVER["PHP_SELF"] poate fi utilizată de hackeri! Dacă utilizați în
pagină parametrul PHP_SELF atunci un hacker poate introduce în cod
un simbol ”/” și comenzi de tip Cross Site Scripting (XSS) pentru a
exploata datele.
30
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
31
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
if ($_SERVER["REQUEST_METHOD"] ==
"POST") { $name =
test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website =
test_input($_POST["website"]); $comment
= test_input($_POST["comment"]);
$gender = test_input($_POST["gender"]);
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
if ($_SERVER["REQUEST_METHOD"] ==
"POST") { if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
}
32
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
}
}
?>
Name:
<input type="text" name="name">
<span class="error">* <?php echo
$nameErr;?></span> <br><br>
E-mail:
<input type="text" name="email">
<span class="error">* <?php echo
$emailErr;?></span> <br><br>
<input type="submit" name="submit"
value="Submit"> </form>
33
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
34
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Exemplu:
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value,
time()+ (86400 * 30), "/"); // 86400 = 1 zi
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not
set!";
} else {
echo "Cookie '" . $cookie_name . "' is
set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
</body>
</html>
Sesiuni
Sesiunea reprezintă o metodă de stocare în variabile a informațiilor astfel
încât acestea să poată fi utilizate în mai multe pagini web. Spre deosebire
de un cookie, informațiile nu sunt stocate pe computerul utilizatorului.
O sesiune durează atât timp cât utilizatorul accesează un site și se
încheie o dată cu închiderea browserului. Accesarea unei pagini web este
o operație de sine stătătoare, orice accesare ulterioară a aceleiași pagini
(spre exemplu un refresh) se va face fără ca serverul "să știe" de
accesările anterioare. La fel se întâmplă atunci când sunt accesate mai
multe pagini diferite una după alta.
Variabilele sesiune rezolvă această problemă prin stocarea informațiilor
legate de utilizator și utilizarea lor în cadrul mai multor pagini vizitate de
acesta. (de exemplu: username, favorite color, etc).
35
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
<?php
// Atribuirea de valori variabilelor de tip
sesiune $_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>
</body>
</html>
36
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Se afișează valorile variabilelor sesiune
setate în pagina anterioară
echo "Favorite color is " . $_SESSION["favcolor"]
. ".<br>";
echo "Favorite animal is " .
$_SESSION["favanimal"] . ".";
?>
</body>
</html>
37
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
session_destroy();
$_SESSION = array();
?>
<html>
<body>
<h3>Login-Pages</h3>
<form action="intro.php" method="post">
<p><input name="name" /> Name</p>
<p><input type="password" name="password"
/> Password</p>
<p><input type ="submit" value="login"
/></p> </form>
</body>
</html>
Pagina intro.php conține următorul cod:
<?php
// deschiderea sesiunii
session_start();
<html><body>
<h3>Intro Page</h3>
<?php
echo "<p>Hello " . $_SESSION['name'] .
"</p>"; ?>
38
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
<p><a href="other.php">Go to another Page
</a></p> <p><a href="session_login.php">Log off
</a></p> </body></html>
?>
<html>
<body>
<h3>This is the other page</h3>
<?php
</body>
</html>
Baze de date
O bază de date reprezintă o colecție de date organizată astfel încât un
program să poată selecta rapid datele necesare la un moment dat.
39
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
40
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password);
// verificarea conexiunii
If (!$conn) {
41
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
die (“Connection failed: “ .
Mysqli_connect_error());
}
echo “Connected successfully“;
?>
Pentru crearea sau ștergerea unei baze de date sunt necesare privilegii de
tip CREATE.
3. Crearea unei baze de date MySQL utilizând MySQLi
Comanda CREATE DATABASE este utilizată pentru crearea unei baze
de date în MySQL. În exemplul următor se creează o bază de date cu
numele “myDB“:
<?php
$servername = “localhost“;
$username = “root“;
$password = ““;
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password);
// verificarea conexiunii
If (!$conn) {
die (“Connection failed: “ .
mysqli_connect_error());
}
// Crearea bazei de date
$sql = “CREATE DATABASE myDB“;
if (mysqli_query($conn, $sql)) {
echo “Database created successfully“;
} else {
echo “Error creating database: “ .
mysqli_error($conn);
}
mysqli_close($conn);
?>
// crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// verificarea conexiunii
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
43
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
// sql to create table
$sql = "CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY
KEY, firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)";
if (mysqli_query($conn, $sql)) {
echo "Table MyGuests created successfully";
} else {
echo "Error creating table: " .
mysqli_error($conn);
}
mysqli_close($conn);
?>
44
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
// Create connection
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" .
mysqli_error($conn);
}
mysqli_close($conn);
?>
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
45
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
VALUES ('John', 'Doe', 'john@example.com')";
if (mysqli_query($conn, $sql)) {
$last_id = mysqli_insert_id($conn);
echo "New record created successfully. Last
inserted ID is: " . $last_id;
} else {
echo "Error: " . $sql . "<br>" .
mysqli_error($conn);
}
mysqli_close($conn);
?>
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
if (mysqli_multi_query($conn, $sql)) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" .
mysqli_error($conn);
}
46
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
mysqli_close($conn);
?>
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// Verificarea conexiunii
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
if (mysqli_num_rows($result) > 0) {
// afișează datele fiecărei înregistrări
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " .
$row["firstname"]. " " . $row["lastname"].
"<br>"; }
} else {
echo "0 results";
}
mysqli_close($conn);
?>
47
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// Verificarea conexiunii
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
if (mysqli_query($conn, $sql)) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " .
mysqli_error($conn);
}
mysqli_close($conn);
?>
48
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
// Crearea conexiunii
$conn = mysqli_connect($servername,
$username, $password, $dbname);
// verificarea conexiunii
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " .
mysqli_error($conn);
}
mysqli_close($conn);
?>
52
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
creat.
53
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
fclose($myfile);
?>
fclose($myfile);
?>
54
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
55
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
$txt = "Minnie Mouse\n";
fwrite($myfile, $txt);
fclose($myfile);
?>
</body>
</html>
56
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
Notă:
57
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
58
PHP- GHID DE PROGRAMARE WEB PENTRU ÎNCEPĂTORI
}
}
// verificăm dacă fișierul există în directorul
uploads
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
// verificăm dimensiunea fișierului
if ($_FILES["fileToUpload"]["size"] > 500000)
{ echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// Verificăm formatele de fișier
59