PHP

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Notă despre dezambiguizare.svg Dezambiguizare - Dacă sunteți în căutarea altor semnificații, consultați PHP (dezambiguizare) .
PHP
limbaj de programare
PHP-logo.svg
Autor Grupul PHP
Data de origine 8 iunie 1995
Ultima versiune 8.1.0 Beta 1 (22 iulie 2021) și 8.0.9 (29 iulie 2021)
Utilizare Aplicații web pe partea de server
Paradigme Imperativ , funcțional , orientat spre obiect , procedural , de reflecție
Tastare Slab
Extensii comune php
Influențată de C ++ , Perl , C , Java , Tcl , HTML și JavaScript
Implementare referință
Implementare Interpret
Sistem de operare Multiplatform
Licență Licență PHP
Site-ul web www.php.net

PHP ( acronim recursiv pentru "PHP: Hypertext Preprocessor", hipertext preprocessor ; inițial acronim pentru "Personal Home Page" [1] ) este un limbaj de script interpretat , conceput inițial pentru programarea paginilor web dinamice . Interpretul PHP este un software gratuit distribuit sub licența PHP [2] .

În prezent, este utilizat în principal pentru a dezvolta aplicații web pe partea de server , dar poate fi folosit și pentru a scrie scripturi de linie de comandă sau aplicații independente cu o interfață grafică . Un exemplu de software - ul scris în PHP este MediaWiki , pe care Fundația Wikimedia wiki proiecte , cum ar fi Wikipedia se bazează .

fundal

Născut în 1994 de danezul Rasmus Lerdorf , PHP a fost inițial o colecție de scripturi CGI care permitea gestionarea ușoară a paginilor personale. Conform anunțului original al PHP 1.0 de autor pe comp.infosystems.www.authoring.cgi newsgroup sensul original al acronimul a fost P ersonal H ome P age. [3]

Pachetul inițial a fost ulterior extins și rescris de Lerdorf însuși în C , adăugarea de caracteristici , cum ar fi suportul pentru mSQL baza de date, și a început să fie numit PHP / FI, în cazul în care FI reprezintă F orm I nterpreter (formularul interpret), oferind posibilitatea de a integrați codul PHP în codul HTML pentru a simplifica crearea de pagini dinamice. În 1997, s- a estimat că aproximativ 50.000 de site-uri web erau bazate pe PHP. [4]

Limbajul a început să se bucure de o oarecare popularitate printre proiectele web open source și a fost astfel remarcat de Zeev Suraski și Andi Gutmans , doi tineri programatori. Cei doi au colaborat în 1998 cu Lerdorf la dezvoltarea celei de-a treia versiuni de PHP, al cărei acronim a căpătat semnificația actuală, rescriind motorul care a fost botezat Zend dintr-o contracție a numelor lor. Caracteristicile cheie ale versiunii PHP 3.0, rod al muncii lor, au fost extensibilitatea extraordinară, conectivitatea la baza de date și suportul inițial pentru paradigma obiectului [5] . Până la sfârșitul anului 1998, PHP 3.0 a fost instalat pe aproximativ 10% din serverele web de pe Internet.

PHP în acest moment a devenit suficient de matur pentru a concura cu limbaje de pe server, cum ar fi ASP , dezvoltat de Microsoft și a început să fie utilizat pe scară largă. Versiunea 4 a PHP a fost lansată în 2000 și a prezentat îmbunătățiri semnificative [6] .

Cea mai recentă versiune disponibilă este 8.0.8 [7] , dezvoltată de o echipă de programatori, care include din nou Lerdorf, Suraski și Gutmans. [8]

Popularitatea limbajului PHP este în continuă creștere datorită flexibilității sale: în iunie 2001 a depășit un milion de site-uri care îl folosesc. Din octombrie 2002, peste 45% din serverele Apache foloseau PHP [9] .

În 2004 a fost una dintre principalele limbi cu care a fost creat Facebook .

În ianuarie 2005, i s-a acordat titlul de „Limbaj de programare din 2004” de cătreIndexul comunității de programare TIOBE [10] , un clasament care evaluează popularitatea limbajelor de programare pe baza informațiilor colectate de motoarele de căutare .

În 2005, configurația LAMP ( Linux , Apache , MySQL , PHP) a depășit 50% din numărul total de servere din rețeaua mondială.

În 2008 PHP 5 a devenit singura versiune stabilă în curs de dezvoltare. Începând cu PHP 5.3.0, limbajul implementează o funcție numită „legare statică târzie” care poate fi utilizată pentru a se referi la clasa numită într-un context de moștenire statică.

Începând cu 5 februarie 2008, datorită inițiativei GoPHP5 susținută de un număr de dezvoltatori PHP, multe dintre proiectele open-source de profil înalt încetează să sprijine PHP 4 în noul cod și promovează tranziția de la PHP 4 la PHP 5. [ 11]

Versiunea PHP 5 a ajuns la versiunea 5.6 înainte de a fi abandonată din punct de vedere al dezvoltării și suportului în ianuarie 2019. Versiunea 7 a fost lansată pe 3 decembrie 2015 și este în prezent încă în curs de dezvoltare și este susținută activ [12] .

Versiunea 8 a fost lansată pe 27 noiembrie 2020.

Mulțumită în principal răspândirii Wordpress [13] (CMS scris în PHP), conform statisticilor, acesta este cel mai utilizat limbaj pe server din lume [14] [15] [16] .

Caracteristici

PHP preia în multe feluri sintaxa lui C , la fel ca multe limbaje moderne și a lui Perl . Este un limbaj slab tastat și de la versiunea 5 îmbunătățește suportul pentru paradigma de programare orientată pe obiecte . Anumite construcții derivate din C , cum ar fi operatorii între biți și gestionarea șirurilor ca matrice , permit în unele cazuri să acționeze la un nivel scăzut; cu toate acestea, este în esență un limbaj la nivel înalt , o caracteristică întărită de existența celor peste 3.000 de funcții API de bază.

PHP este capabil de interfață cu nenumărate DBMS, inclusiv MySQL , PostgreSQL , MariaDB , Oracle , Firebird , IBM DB2 , Microsoft SQL Server și chiar baze de date NoSql, cum ar fi MongoDB. Suportă numeroase tehnologii precum XML , SOAP , IMAP , FTP , CORBA . De asemenea, se integrează cu alte limbaje / platforme precum Java și .NET și există un wrapper pentru toate bibliotecile populare precum CURL , GD , Gettext , GMP, Ming, OpenSSL și multe altele.

Oferă un API specific pentru interacțiunea cu Apache , deși funcționează în mod natural cu numeroase alte servere web . De asemenea, este foarte bine integrat cu MySQL DBMS pentru care are mai multe API-uri (mysql, mysqli, PDO). Din acest motiv, există o cantitate imensă de scripturi și biblioteci PHP disponibile gratuit pe internet . Versiunea 5 integrează o mică bază de date încorporată, SQLite .

Are o arhivă numită PEAR care oferă un cadru de bibliotecă reutilizabil pentru dezvoltarea aplicațiilor PHP și PECL care colectează toate extensiile cunoscute scrise în C.

PHP nu are încă suport nativ pentru șiruri Unicode sau multibyte; Suportul Unicode este în curs de dezvoltare pentru o viitoare versiune de PHP și va permite ca caracterele non-ASCII să fie utilizate în șiruri și nume de funcții, clase și metode.

Siguranță

Procentul de software nesigur scris în PHP, din totalul tuturor găurilor de securitate din software-urile enumerate de Vulnerabilități și expuneri comune , sa ridicat la: 12% în 2003, 20% în 2004, 28% în 2005, 43% în 2006, 36% în 2007, 34,8% în 2008, 29,9% în 2009 și 27,2% în 2010 [17] . Aproape toate aceste vulnerabilități cunoscute provin din nerespectarea celor mai bune practici de către programatori și din abuzurile conexe ale anumitor caracteristici oferite de PHP, care în anumite utilizări dau naștere unor vulnerabilități grave. Un exemplu binecunoscut sunt problemele legate de abuzul de registri globali și citate Magic , caracteristici care, dacă sunt utilizate incorect, ar putea degenera în ușile din spate reale din cadrul programului dvs. PHP. Pentru a evita problemele de acest tip, multe dintre aceste caracteristici au fost treptat depreciate sau chiar eliminate, cum ar fi cele două menționate, în succesiunea versiunilor PHP [18] [19] .

Majoritatea software-urilor cu probleme de securitate (2006) pot fi asociate temporar cu versiunile vechi ale PHP, unde configurațiile implicite au lăsat loc pentru o simplitate relativă în scrierea software-ului cu probleme de securitate potențial grave.

Este întotdeauna o idee bună să revizuiți configurația PHP, de obicei conținută în fișierul php.ini, pentru a verifica ce caracteristici sunt activate. De obicei, în același fișier documentați 3 tipuri de configurații: configurație implicită PHP, configurație într- un mediu de dezvoltare care permite, de exemplu, să vedeți erori video și configurație într-un mediu de producție în care de obicei erorile sunt scrise într-un fișier jurnal.
Site-ul oficial conține arhiva istorică a versiunilor întrerupte, actualizată în mai 2019 [20] .

Atacurile hackerilor

PHP poate fi supus diferitelor atacuri ale hackerilor [21] :

  • Executarea codului la distanță (RCE) apare atunci când un atacator este capabil să încarce cod pe site-ul web și să îl execute.
  • SQL Injection sau SQLi: permite atacatorilor să falsifice identificarea , modificarea datelor existente, să provoace probleme de respingere, cum ar fi anularea tranzacțiilor sau modificarea situațiilor financiare, permite obținerea tuturor datelor din sistem, ștergerea sau transformarea datelor inaccesibile și crearea sau compromiterea utilizatorilor serverului de baze de date.
  • Cross-Site Scripting (XSS) apare atunci când un atacator determină încărcarea codului rău intenționat în browserul vizitatorului site-ului web și executarea acestuia. Acest cod poate efectua apoi acțiuni rău intenționate, cum ar fi furtul cookie-urilor utilizatorilor.
  • Cross-Site Request Forgery (CSRF): apare atunci când un atacator poate crea un link și un utilizator privilegiat face clic pe acesta pentru a crea (de exemplu) un nou utilizator „admin” cu o parolă pe care o cunosc.
  • Bypass de autentificare. Un mod în care această eroare se strecoară este printr-o eroare de dezvoltator atunci când se utilizează funcția numită „is_admin ()” pentru a valida un administrator. Această funcție este de fapt concepută pentru a arăta dacă cineva vizualizează o pagină de administrator și nu validează faptul că este. Dacă un dezvoltator face această greșeală, poate acorda utilizatorilor non-administratori acces la funcții la care au acces doar administratorii.
  • Injectarea obiectelor PHP. Apare atunci când o aplicație PHP preia intrarea utilizatorului și o transmite către o funcție numită „unserialize ()” care preia un obiect stocat și îl transformă într-un obiect în memorie.
  • Includere de fișiere la distanță și locală (RFI și LFI). Când o aplicație PHP acceptă introducerea utilizatorului și o transmite către o funcție concepută pentru a încărca un fișier. Dacă acest fișier este un URL, funcția poate încărca codul PHP de pe un alt site web specificat de un atacator, care va fi apoi executat pe site-ul atacat. Funcțiile care pot fi susceptibile la RFI și LFI în PHP sunt: include, include_once, fopen, file_get_contents, require, require_once .

Exemple de cod

Variabile

Numele variabilelor din PHP încep întotdeauna cu un semn de dolar ( $ ), iar următorul caracter nu trebuie să fie un număr, de exemplu $1 sau $2 nu sunt nume de variabile valide.

Numele variabilelor sunt sensibile la majuscule , adică $pippo și $PIPPO $pippo sunt două variabile distincte.

O variabilă poate conține toate caracterele AZ , az , 0-9 și _ . Odată definite, acestea sunt instanțiate fără a-și defini în mod explicit „tipul”:

 $ hello = "Hello world!" ;

Pentru a afișa conținutul lui $ciao , puteți utiliza declarația echo :

 ecou $ salut ;

afișând „ Ciao mondo! ". Cu toate acestea, dacă variabila $ciao nu ar exista, echo ar genera în general o eroare non-fatală ( Notice ).

Siruri de caractere

În PHP un șir de caractere alfanumerice este reprezentat în două moduri: prin încadrarea acestuia între ghilimele duble ( " ) sau simple ( ' ). Atunci când se utilizează ghilimele duble, se interpretează orice caractere speciale (de exemplu tabul, "col1 \t col2" sau caracterul newline, "riga1 \n riga2" ) și conținutul variabilelor sunt returnate, adică:

 ecou "Hello is: $ hello " ;

Apăsați: "Ciao vale: Ciao mondo!" . Cu ghilimele unice șirul este salvat și utilizat așa cum este.

Exemplu de compunere a propoziției „Wikipedia este minunată” în două moduri: folosind ghilimele simple și duble:

 $ one = 'Wikipedia' ;
$ doi = 'este' ;
$ trei = 'minunat' ;

ecou $ unu . '' . doi $ . '' . trei dolari ;
ecou  $ one doi $ trei dolari " ;

Array (și foreach)

PHP tratează matricele ca hărți asociative , adică ca o listă de chei asociate în mod unic cu o anumită valoare. Prin urmare, tablourile din PHP pot fi utilizate ca o matrice comună, cum ar fi o listă (vector), stivă, coadă sau altele. Mai mult, orice element al matricei poate conține la rândul său alte matrice, chiar multidimensionale [22], iar toate elementele matricei sau subarraii pot fi de diferite tipuri de variabile, oferind astfel posibilitatea de a crea structuri de date complexe.

Tablourile sunt dinamice, de fapt pot fi eliminate prin unset(); [23] .

Deoarece matricile din PHP sunt asociative, ele pot fi utilizate printr-o construcție numită foreach [24] care face viabil accesul la conținut prin obținerea tuturor legăturilor cheii individuale → valoarea matricei.

Exemplu de cod al unui tablou asociativ în care fiecare nume de oraș corespunde numărului de locuitori. Exemplul afișează fiecare oraș cu numărul său de locuitori și apoi suma tuturor locuitorilor.

 <? php
$ rezidenți = matrice (
	„Torino” => 908551 ,
	„Milano” => 1315791 ,
	„Roma” => 2753000
);

suma $ = 0 ;

foreach ( $ rezidenți ca $ oraș => $ nRezidenți ) {
	ecou „Oraș $ oraș are $ nRezidenți locuitori” ;
	$ sum + = $ nRezident ;
}

ecou „Sunt total de $ locuitori!” ;
?>

Rezultatul codului este: La città Torino ha 908551 abitanti. La città Milano ha 1315791 abitanti. La città Roma ha 2753000 abitanti. In tutto ci sono 4977342 abitanti

Pentru informații suplimentare, consultați documentația oficială online [22] .

Funcții

Funcțiile din PHP pot avea un set mixt de parametri opționali cu valori implicite și parametrii necesari. [25]

Exemplu de funcție cu un parametru necesar și una opțională cu o valoare implicită.

 <? php 
/ **
* Programul pe care îl executați
* suma a cel puțin 2 numere
* și maxim 3
* /
suma funcției ( $ n1 = 0 , $ n2 = 0 , $ n3 = 0 ) {
	returnează $ n1 + $ n2 + $ n3 ;
}

suma ecoului ( 1 , 5 ); // IEȘIRE: 6
suma ecoului ( 1 , 24 ); // IEȘIRE: 25
suma ecoului ( 3 , 4 , 2 ); // IEȘIRE: 9
suma ecoului ( n1 : 5 , n3 : 5 ); // IEȘIRE: 10 -> utilizabilă din versiunea 8

?>

Orice variabilă de orice tip creată în interiorul funcției este locală . Pentru a specifica variabilele globale din interiorul funcției, utilizați global $variabile [26]

Exemplu:

 <? php
experiment funcțional () {
	global $ a ;
	$ a = "trei" ;
	$ b = "patru" ;
	ecou "În timpul: $ a $ b " ;
}

$ a = "unul" ;
$ b = "doi" ;

ecou "Înainte: $ a $ b " ;
experiment ();
ecou "După: $ a $ b " ;
?>

Rezultatul va fi: Prima uno due Durante tre quattro Dopo tre due .

Incluziuni

Puteți include o pagină PHP în alta pentru a executa codul pentru a evita codul redundant și pentru a accesa variabile, funcții și clase definite în pagina inclusă.

Pentru a face acest lucru, utilizăm una dintre următoarele afirmații: include [27] , include_once [28] , require [29] și require_once [30] . Exemplu:

 <? php
include „header.php” ;
ecou „Bună ziua lume!” ;
include „footer.php” ;
?>

Tipuri de includere:

  • Se folosește include atunci când doriți să trimiteți doar un semnal de avertizare fără a întrerupe executarea programului dacă pagina de inclus nu există.
  • Folosim require atunci când dorim fie trimis un semnal de eroare fatal și programul să fie întrerupt dacă pagina de inclus nu există.
  • Utilizați include_once , require_once când comanda ar putea fi repetată de mai multe ori chiar și în fișiere diferite, creând astfel (potențial) o includere recursivă, dar nu doriți ca pagina să fie inclusă de mai multe ori. În cazul în care pagina de inclus nu există, acestea se comportă similar cu cele menționate mai sus.

Managementul parametrilor

PHP permite trecerea informațiilor de la o pagină la alta prin diferitele caracteristici acceptate de HTTP . Mai exact, solicitări GET (informații parametrizate în bara de adrese), POST (informații provenind dintr-o trimitere anterioară dintr-un formular web, în ​​general) și COOKIES (informații conținute în șiruri de text mici salvate fizic în memoria locală a unui browser), împreună cu suport pentru sesiune (funcționalitate bazată pe utilizarea cookie-urilor ). Aceste informații pot fi utilizate în PHP prin intermediul a patru matrici asociative numite intern: $ _GET, $ _POST, $ _COOKIE, $ _SESSION. Aceste tipuri de tablouri sunt numite superglobale [31], adică sunt vizibile la fiecare domeniu al programului.

Exemplu de gestionare a unui parametru GET. Solicitare de probă: http://example.org/esempio.php?pippo=Ciao . Conținutul laws.php (va afișa „Bună ziua”):

 <? php
/ *
* Verificați dacă parametrul „foo” a fost primit prin metoda GET.
* Dacă este detectat, îl afișez; dacă nu este detectat, îl avertizez pe utilizator.
* /

if ( isset ( $ _GET [ 'foo' ] ) )) {
	$ a = $ _GET [ 'foo' ]; // Salvați parametrul „foo” în variabila $ a

	$ a = htmlentities ( $ a ); // Acest lucru „dezactivează” orice conținut HTML conținut în $ a

	ecou $ a ; // Arăt pe ecran
} altceva {
	echo "Nu s-au găsit parametri numiți foo. Trebuie să-l trimiteți!" ;
}
?>

O funcție cu controlul parametrilor

 <? php
funcția get_hello_world ( $ valoare1 , $ valoare2 ) {
	$ result = " ;

	/ *
* În PHP controlul „if”, dacă conține o singură declarație,
* este posibil, de asemenea, să nu aibă aparate dentare de izolare
* dar este o idee bună să le folosiți întotdeauna, pentru lizibilitatea codului.
* /
	if ( $ value1 ! = '' ) {
        	$ rezultat . = $ valoare1 ; // Echivalent cu: $ result = $ result. $ valoare1;
	}

	if (( $ value1 ! = '' ) && ( $ value2 ! = '' )) {
		$ result . = "" ;
	}

	/ *
*! goal ($ value2) este echivalent cu: $ value2! = ""
* „Punctul de exclamare” este utilizat pentru a anula o valoare booleană
* /
	if ( ! goal ( $ value2 )) {
		$ rezultat . = $ valoare2 ; // Echivalent cu: $ result = $ result. $ valoare2;
	}

	returnează $ rezultat ;
}

echo get_hello_world ( „Bună ziua” , „lume” );
?>

Bucla for

 <? php
/ *
* În acest caz, variabila $ n este tipărită pe ecran, ulterior
* este incrementat cu 1, bucla se termină când $ n este egal cu 9 (bucla contează de la 0 la 9 deci de 10 ori).
* /

pentru ( $ n = 0 ; $ n <= 9 ; $ n ++ ) {
     echo $ n ;
}

// Ieșire -> 0123456789
?>

Bucla while

 <? php
/ *
* În acest caz, să vedem cum să imprimăm rezultatele extrase pe ecran
* dintr-o bază de date MySQL, executând o interogare SQL.
* Acest script este incomplet, întrucât este mai întâi necesar să îl efectuați
* conexiune la baza de date MySQL prin mysqli sau PDO.
* /

$ result = $ mysqli -> interogare ( "SELECT ID FROM people" );

while ( $ rând = $ rezultat -> fetch_assoc ()) {
	ecou $ rând [ 'id' ] . „<br />” ;
}

/ *
* În acest fel extragem date dintr-o bază de date MySQL
* sub forma unui tablou care va fi apoi tipărit printr-o buclă while
* /
?>

99 sticle de bere

Următorul exemplu imprimă versurile melodiei 99 Bottles of Beer .

 <? php
/ *
* Acesta este un comentariu. Alte modalități de a comenta sunt simbolurile // și #
* Acest tip de comentariu nu are nevoie de asteriscuri (*) la început
* din fiecare linie, dar acest lucru se face prin convenție. Simbolurile // și #
* comentează numai textul care este după ele și până la sfârșitul rândului;
* nu este necesar să încheiați comentariul cu caractere speciale.
* /

/ *
* Mai întâi definim o funcție numită „plural”.
* Returnează un „s” dacă argumentul trecut nu este 1.
* /
funcție plural ( $ număr ) {
	// Operatorul ternar (! =? :) este o structură condițională
	// similar cu if-else: (condiție? adevărat: fals)
	returnează ( numărul $ ! = 1 ) ? 's' : '' ;
}

// Definim o variabilă numită $ a_capo care conține o returnare HTML,
// o întoarcere și un caracter newline:
$ a_capo = "<br /> \ r \ n " ;

pentru ( $ i = 99 ; $ i > 0 ; $ i - ) {
	ecou  sticla $ i  . plural ( $ i ) . "de bere pe perete, $ a_capo " ;
	// Nu este nevoie să repetăm ​​comanda echo pentru fiecare linie:
	ecou  sticla $ i  . plural ( $ i ) . "de bere. $ a_capo
Luați unul jos, treceți-l, $ a_capo " .
	((( $ i - 1 ) ! = 0 ) ? $ i - 1 : „nu mai mult” ) .
	„sticlă” . plural ( $ i - 1 ) . "de bere pe perete. $ a_capo $ a_capo " ;
	/ *
* PHP vă permite să creați șiruri pe mai multe linii, atâta timp cât
* găsește un punct și virgulă (;) care termină declarația.
* O perioadă (.) Concatenează mai multe șiruri împreună.
* Variabilele, începând cu caracterul „$”, sunt interpretate
* și în ghilimele duble ("), dar nu și în ghilimele simple (').
* Funcțiile, precum pluralul (), nu sunt interpretate între ghilimele.
* /
}
ecou "Du-te la magazin, $ a_capo cumpără încă ceva, $ a_capo 99 sticle de bere pe perete!" ;
?>

Exemplu de conexiune cu baza de date MySQL utilizând extensia MySQLi

PHP permite prelucrarea datelor din bazele de date MySQL. Datele vor fi solicitate, inserate și modificate prin interogări adecvate folosind unele extensii, inclusiv MySQLi și PDO. [32]

Extensia MySQLi , unde „i” înseamnă „îmbunătățit”, a fost pusă la dispoziția PHP pentru a profita de unele caracteristici noi puse la dispoziție de versiunile MySQL versiunea 4.1.3 și ulterioare și este disponibilă pentru versiunile PHP 5 și versiuni superioare .

Exemplu de conectare la baza de date și cerere de date:

 <? php
// Conectați-vă la MySQL cu extensia MySQLi
$ mysqli = new mysqli ( 'localhost', 'nome_user_database', 'password_database', 'database_name');

/ *
* Acesta este modul oficial de a verifica dacă o conexiune MySQL a eșuat,
* DAR $ connect_error nu este acceptat până la PHP 5.2.9 și 5.3.0.
* /
if ( $ mysqli -> connect_error ) {
    die ( "Conexiunea a eșuat, motive:" . $ mysqli -> connect_error );
}

// Să încercăm o interogare presupunând că procesăm date dintr-o agendă similară:
$ SQLQuery = $ mysqli -> interogare ( "SELECT adresă, telefon DE la utilizatori WHERE nume = ' Frank '" );

// Din această interogare vom obține adresa și numărul de telefon al persoanei numite Francesca,
// presupunând că este prezent în tabelul utilizatorilor din baza de date în cauză.

// Acum să „transformăm” datele primite de la interogare într-un tablou asociativ care poate fi utilizat ulterior
$ rând = $ SQLQuery -> fetch_assoc ();

// Afișăm pe ecran de exemplu numărul de telefon din matrice
ecou „Numărul de telefon al Francesca este:” . $ rând [ 'telefon' ];

// Închiderea conexiunii la baza de date
$ mysqli -> close ();
?>

Pentru informații suplimentare, consultați manualul oficial MySQLi online. [33]

php.ini

Fișierul de configurare PHP, numit php3.ini în PHP 3, și apoi pur și simplu php.ini în versiunile ulterioare, este citit la pornirea interpretului de limbă și oferă setările diferitelor module cu care a fost compilat interpretul. În versiunea modulară a serverului PHP, acest lucru se întâmplă o singură dată, când este pornit serverul web . Cu toate acestea, pentru versiunile CGI și CLI , acesta este invocat la fiecare cerere.

Pentru a vizualiza toate opțiunile de configurare puteți utiliza funcția phpinfo() .

Versiuni

Versiune Data de lansare Suportat până la
1.0 8 iunie 1995
2.0 1 noiembrie 1997
3.0 6 iunie 1998 20 octombrie 2000
4.0 22 mai 2000 23 iunie 2001
4.1 10 decembrie 2001 12 martie 2002
4.2 22 aprilie 2002 6 septembrie 2002
4.3 27 decembrie 2002 31 martie 2005
4.4 11 iulie 2005 7 august 2008
5.0 13 iulie 2004 5 septembrie 2005
5.1 24 noiembrie 2005 24 august 2006
5.2 2 noiembrie 2006 6 ianuarie 2011
5.3 30 iunie 2009 14 august 2014
5.4 1 martie 2012 3 septembrie 2015
5.5 20 iunie 2013 10 iulie 2016
5.6 28 august 2014 31 decembrie 2018
6.x Nu a fost eliberat n / A
7.0 3 decembrie 2015 3 decembrie 2018
7.1 1 decembrie 2016 1 decembrie 2019
7.2 30 noiembrie 2017 30 noiembrie 2020
7.3 6 decembrie 2018 6 decembrie 2021
7.4 28 noiembrie 2019 28 noiembrie 2022
8.0 26 noiembrie 2020 26 noiembrie 2023
8.1 ?? Noiembrie 2021 ?? Noiembrie 2024

Comparație cu ASP.NET

PHP este un concurent direct al ASP.NET. Alegerea celor două limbi are argumente pro și contra în funcție de nevoile dvs. [34] [35] :

PRO ÎMPOTRIVA
PHP ASP.NET PHP ASP.NET
Este open-source, deci este gratuit și este îmbunătățit constant de un număr mare de oameni, mai degrabă decât de o singură companie Suportă toate limbajele de programare și funcționează bine cu aplicații sau C # Nu este potrivit pentru construirea de aplicații desktop Mai puțin ușor de învățat și de înțeles decât PHP
Există mai multe grupuri de asistență online pentru a ajuta la accelerarea procesului de învățare decât ASP.NET Anunțați dezvoltatorii dacă au făcut greșeli în codificare înainte de compilare Tratarea erorilor PHP este considerată slabă în comparație cu ASP.NET, deci poate dura mai mult timp pentru a descoperi o problemă Comunitate de sprijin mai mică
Mai ușor de învățat și de înțeles decât ASP.NET Acesta vine cu multe instrumente și caracteristici pentru a sprijini programatorii. Permite personalizarea care cauzează erori și codare slabă în comparație cu ASP.NET Funcționează doar pe un server Microsoft
Funcționează și pe servere Linux Crearea aplicației desktop. Fiind Open Source, codul este la îndemâna tuturor și, prin urmare, este mai expus atacurilor Mai scump datorită licenței Microsoft

Medii de dezvoltare

Notă

  1. ^ Grupul PHP, Istoria PHP și proiectele conexe , la it.php.net . Adus la 26 aprilie 2011 ( arhivat la 28 ianuarie 2021) .
  2. ^ PHP: Informații despre licență , la www.php.net . Adus pe 28 februarie 2020 .
  3. ^ Anunță: Instrumente personale pentru pagina principală (Instrumente PHP) , pe groups.google.ch , 8 iunie 1995. Accesat la 6 iulie 2011 .
  4. ^ (EN), și Marko Gargenta Ellie Quigley, PHP și MySQL prin exemplu , Prentice Hall Professional, 22 noiembrie 2006, ISBN 978-0-13-800602-0 . Adus pe 28 februarie 2020 .
  5. ^ PHP: Documentația PHP versiunea 3 , la www.php.net . Adus pe 28 februarie 2020 .
  6. ^ Servicii de găzduire web, servere VPS și nume de domenii de NTC Hosting , la www.ntchosting.com . Adus pe 28 februarie 2020 .
  7. ^ (EN) PHP: News Archive - 2021 , pe be2.php.net. Adus de 04 iulie 2021.
  8. ^ (EN) PHP: Credite , pe secure.php.net. URL consultato il 26 settembre 2017 .
  9. ^ Usage Statistics and Market Share of PHP for Websites, February 2020 , su w3techs.com . URL consultato il 28 febbraio 2020 .
  10. ^ TIOBE Software Award , su tiobe.com .
  11. ^ GOPHP5! , su pear.php.net . URL consultato il 26 settembre 2017 .
  12. ^ PHP: Releases , su www.php.net . URL consultato il 28 febbraio 2020 .
  13. ^ WordPress Usage Statistics , su trends.builtwith.com . URL consultato il 30 gennaio 2021 .
  14. ^ ( EN ) Most used languages among software developers globally 2020 , su Statista . URL consultato il 30 gennaio 2021 .
  15. ^ Usage Statistics and Market Share of Server-side Programming Languages for Websites, January 2021 , su w3techs.com . URL consultato il 30 gennaio 2021 .
  16. ^ Confronto tra CMS nel 2021: i sistemi più popolari per la gestione dei contenuti , su IONOS Digitalguide . URL consultato il 30 gennaio 2021 .
  17. ^ PHP-related vulnerabilities on the National Vulnerability Database , su coelho.net . URL consultato il 6 luglio 2011 .
  18. ^ Register Globals deprecato e rimosso da PHP 5.4.0
  19. ^ Magic Quotes deprecato e rimosso da PHP 5.4.0
  20. ^ ( EN ) Archivio storico delle versioni non più supportate , su php.net . URL consultato il 15 maggio 2019 ( archiviato il 12 novembre 2006) .
  21. ^ ( EN ) What are PHP Vulnerabilities & How Do They Originate? , su Wordfence . URL consultato il 28 gennaio 2021 ( archiviato il 29 gennaio 2021) .
  22. ^ a b Manuale PHP - array , su it2.php.net . URL consultato il 14 marzo 2018 (archiviato dall' url originale il 15 marzo 2018) .
  23. ^ PHP: unset - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
  24. ^ PHP: foreach - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
  25. ^ Default Function Parameters In PHP | #! code , su www.hashbangcode.com . URL consultato il 17 ottobre 2020 .
  26. ^ PHP: Variable scope - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
  27. ^ Manuale PHP - include
  28. ^ Manuale PHP - include_once , su it2.php.net . URL consultato il 31 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
  29. ^ Manuale PHP - require , su it2.php.net . URL consultato il 31 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
  30. ^ Manuale PHP - require_once , su it2.php.net . URL consultato il 31 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
  31. ^ PHP: Superglobals - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
  32. ^ PHP: Database Extensions - Manual , su www.php.net . URL consultato il 17 ottobre 2020 .
  33. ^ MySQLi:query , su it2.php.net . URL consultato il 29 gennaio 2014 (archiviato dall' url originale il 1º febbraio 2014) .
  34. ^ ( EN ) PHP vs ASP.NET: Top Differences for Beginners' Understanding , su Appinventiv , 28 settembre 2018. URL consultato il 30 gennaio 2021 .
  35. ^ ( EN ) Varun Bhagat, ASP.Net vs PHP: Which is Better? , su PixelCrayons , 8 ottobre 2019. URL consultato il 30 gennaio 2021 .

Bibliografia

  • Zak Greant, Graeme Merrall, Torben Wilson, Brett Michlitsch (2002): PHP Functions Essential Reference , Sams, ISBN 0-7357-0970-X
  • Luke Welling, Laura Thomson (2004): PHP and MySQL Web Development , 3rd ed., SAMS, ISBN 0-672-32672-8
  • Matt Zandstra (2004): PHP 5 Objects, Patterns, and Practice , Apress, ISBN 1-59059-380-4
  • Eric Rosebrock, Eric Filson (2004): Setting Up LAMP: Getting Linux, Apache, MySQL, and PHP Working Together , SYBEX, ISBN 0-7821-4337-7
  • Cristian Darie, Mihai Bucica (2004): Beginning PHP 5 and MySQL E-Commerce: From Novice to Professional , Apress, ISBN 1-59059-392-8
  • David Powers (2005): Foundation PHP 5 for Flash , Friends of ED, ISBN 1-59059-466-5
  • Elizabeth Naramore, (2005): Beginning PHP5, Apache, and MySQL Web Development , Wrox, ISBN 0-7645-7966-5
  • Thomas Myer (2005): No Nonsense XML Web Development With PHP , SitePoint , ISBN 0-9752402-0-X
  • Marc Wandschneider (2005): Core Web Application Development with PHP and MySQL , Prentice-Hall, ISBN 0-13-186716-4
  • Steven Holzner (2005): Spring Into PHP 5 , Addison-Wesley, ISBN 0-13-149862-2
  • (2005): Building Online Communities with phpBB 2 , Packt Publishing, ISBN 1-904811-13-2
  • (2005): Web Standards Programmer's Reference: HTML, CSS, JavaScript, Perl, Python, and PHP , Wrox, ISBN 0-7645-8820-6
  • Chris Newman (2005): Sams Teach Yourself PHP in 10 Minutes , ISBN 0-672-32762-7
  • Paul Hudson (2005): PHP in a Nutshell , O'Reilly, ISBN 0-596-10067-1
  • Andi Gutmans, Stig S. Bakken, Derick Rethans (2005): PHP 5: Guida completa , Apogeo, ISBN 88-503-2304-2
  • Jack Herrington (2006), PHP Trucchi e segreti , Tecniche Nuove Hops, ISBN 88-481-1951-4
  • Rasmus Lerdorf (2003), PHP Pocket Reference , Tecniche Nuove Hops, ISBN 88-8378-070-1
  • Peter B. MacIntyre (2010), PHP – Le tecniche per scrivere il codice migliore , Tecniche Nuove, ISBN 978-88-481-2505-5

Voci correlate

Altri progetti

Collegamenti esterni

Controllo di autorità LCCN ( EN ) sh99002710 · GND ( DE ) 4546126-0 · BNF ( FR ) cb135584386 (data) · BNE ( ES ) XX548742 (data)