PHP

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search
Nota disambigua.svg Disambiguazione – Se stai cercando altri significati, vedi PHP (disambigua).
PHP
linguaggio di programmazione
PHP-logo.svg
AutorePHP Group
Data di origine8 giugno 1995
Ultima versione7.4.12 (29 ottobre 2020) e 8.0.0 RC3 (29 ottobre 2020)
UtilizzoApplicazioni web lato server
ParadigmiImperativo, funzionale, orientato agli oggetti, procedurale, riflessione
TipizzazioneDebole
Estensioni comuniphp
Influenzato daC++, Perl, C, Java e Tcl
Implementazione di riferimento
ImplementazioneInterprete
Sistema operativoMultipiattaforma
LicenzaLicenza PHP
Sito webwww.php.net

PHP (acronimo ricorsivo di "PHP: Hypertext Preprocessor", preprocessore di ipertesti; originariamente acronimo di "Personal Home Page"[1]) è un linguaggio di scripting interpretato, originariamente concepito per la programmazione di pagine web dinamiche. L'interprete PHP è un software libero distribuito sotto la PHP License[2].

Attualmente è principalmente utilizzato per sviluppare applicazioni web lato server, ma può essere usato anche per scrivere script a riga di comando o applicazioni stand-alone con interfaccia grafica. Un esempio di software scritto in PHP è MediaWiki, su cui si basano i progetti wiki della Wikimedia Foundation come Wikipedia.

Cenni storici[modifica | modifica wikitesto]

Nato nel 1994 ad opera del danese Rasmus Lerdorf, PHP era in origine una raccolta di script CGI che permettevano una facile gestione delle pagine personali. Secondo l'annuncio originale di PHP 1.0 da parte dell'autore sul newsgroup comp.infosystems.www.authoring.cgi il significato originario dell'acronimo era Personal Home Page.[3]

Il pacchetto originario venne in seguito esteso e riscritto dallo stesso Lerdorf in C, aggiungendo funzionalità quali il supporto alla base di dati mSQL, e iniziò a chiamarsi PHP/FI, dove FI sta per Form Interpreter (interprete di form), prevedendo la possibilità di integrare il codice PHP nel codice HTML in modo da semplificare la realizzazione di pagine dinamiche.Nel 1997 si stimava che circa 50mila siti Web erano basati su PHP. [4]

Il linguaggio cominciò a godere di una certa popolarità tra i progetti open source del web e venne così notato da Zeev Suraski e Andi Gutmans, due giovani programmatori. I due collaborarono nel 1998 con Lerdorf allo sviluppo della terza versione di PHP, il cui acronimo assunse il significato attuale, riscrivendone il motore che fu battezzato Zend da una contrazione dei loro nomi. Le caratteristiche chiave della versione PHP 3.0, frutto del loro lavoro, erano la straordinaria estensibilità, la connettività alla base di dati e il supporto iniziale per il paradigma a oggetti[5]. Verso la fine del 1998 PHP 3.0 era installato su circa il 10% dei server Web in Internet.

PHP diventò a questo punto sufficientemente maturo da competere con i linguaggi lato server come ASP, sviluppato da Microsoft, e cominciò ad essere usato su larga scala. La versione 4 di PHP venne lanciata nel 2000 e prevedeva notevoli migliorie[6].

L'ultima versione in corso di sviluppo è la settima[7], sviluppata da un team di programmatori, che comprende ancora Lerdorf, Suraski e Gutmans.[8]

La popolarità del linguaggio PHP è in costante crescita grazie alla sua flessibilità: nel giugno 2001 ha superato il milione di siti che lo utilizzano. Nell'ottobre 2002 più del 45% dei server Apache usava PHP[9].

Nel gennaio 2005 è stato insignito del titolo di "Programming Language of 2004" dal TIOBE Programming Community Index[10], classifica che valuta la popolarità dei linguaggi di programmazione sulla base di informazioni raccolte dai motori di ricerca.

Nel 2005 la configurazione LAMP (Linux, Apache, MySQL, PHP) ha superato il 50% del totale dei server sulla rete mondiale.

Nel 2008 PHP 5 è diventata l'unica versione stabile in fase di sviluppo. A partire da PHP 5.3.0 il linguaggio implementa una funzione chiamata "late static binding" che può essere utilizzata per fare riferimento alla classe chiamata in un contesto di eredità statica.

A partire dal 5 febbraio 2008, a causa dell'iniziativa GoPHP5 sostenuta da una serie di sviluppatori PHP, molti dei progetti open-source di alto profilo cessano di supportare PHP 4 nel nuovo codice e promuovono il passaggio da PHP 4 a PHP 5.[11]

La versione 5 di PHP ha raggiunto la release 5.6 prima di essere abbandonata dal punto di vista dello sviluppo e supporto nel gennaio 2019. Il 3 dicembre 2015 è stata rilasciata la versione 7, attualmente ancora in fase di sviluppo e attivamente supportata[12].

Caratteristiche[modifica | modifica wikitesto]

PHP riprende per molti versi la sintassi del C, come peraltro fanno molti linguaggi moderni, e del Perl. È un linguaggio a tipizzazione debole e dalla versione 5 migliora il supporto al paradigma di programmazione ad oggetti. Certi costrutti derivati dal C, come gli operatori fra bit e la gestione di stringhe come array, permettono in alcuni casi di agire a basso livello; tuttavia è fondamentalmente un linguaggio di alto livello, caratteristica questa rafforzata dall'esistenza delle sue oltre 3.000 funzioni API del nucleo base.

PHP è in grado di interfacciarsi a innumerevoli DBMS tra cui MySQL, PostgreSQL, MariaDB, Oracle, Firebird, IBM DB2, Microsoft SQL Server e anche basi di dati NoSql come MongoDB. Supporta numerose tecnologie come XML, SOAP, IMAP, FTP, CORBA. Si integra anche con altri linguaggi/piattaforme quali Java e .NET ed esiste un wrapper per tutte le librerie più diffuse come CURL, GD, Gettext, GMP, Ming, OpenSSL ed altro.

Fornisce un'API specifica per interagire con Apache, sebbene funzioni naturalmente con numerosi altri server web. È anche ottimamente integrato con il DBMS MySQL per il quale possiede più di una API (mysql, mysqli, PDO). Per questo motivo esiste un'enorme quantità di script e librerie in PHP disponibili liberamente su Internet. La versione 5 integra al suo interno una piccola base di dati embedded, SQLite.

Dispone di un archivio chiamato PEAR che mette a disposizione un framework di librerie riusabili per lo sviluppo di applicazioni PHP e di PECL che raccoglie tutte le estensioni conosciute scritte in C.

PHP non ha ancora un supporto nativo per le stringhe Unicode o multibyte; il supporto Unicode è in fase di sviluppo per una futura versione di PHP e consentirà di usare caratteri non ASCII in stringhe e nomi di funzioni, classi e metodi.

Sicurezza[modifica | modifica wikitesto]

La percentuale di software non sicuro scritto in PHP, sul totale di tutte le falle di sicurezza nei software elencate dal Common Vulnerabilities and Exposures, ammontava al: 12% nel 2003, 20% nel 2004, 28% nel 2005, 43% nel 2006, 36% nel 2007, 34.8% nel 2008, 29.9% nel 2009 e 27.2% nel 2010[13]. La quasi totalità di queste vulnerabilità note ha origine da mancati adempimenti delle best practice da parte dei programmatori e dai relativi abusi di particolari funzionalità offerte dal PHP che in determinati utilizzi danno origine a gravi vulnerabilità. Un esempio noto sono i problemi legati agli abusi di Register globals e Magic quotes, funzionalità che se usate in modo errato potevano degenerare in vere e proprie backdoor all'interno del proprio programma PHP. Per evitare problemi di questo tipo molte di queste funzionalità sono state via via deprecate se non addirittura rimosse, come le due citate, nel susseguirsi delle versioni di PHP[14][15].

La maggior parte del software con problemi di sicurezza (2006) è associabile temporalmente con vecchie versioni di PHP in cui le configurazioni di default lasciavano spazio a una relativa semplicità nello scrivere software con potenziali problemi di sicurezza anche gravi.

È sempre buona norma rivedere la propria configurazione di PHP, contenuta generalmente nel file php.ini, per controllare le funzionalità attivate. Di solito nel file stesso si documentano 3 tipi di configurazioni: Configurazione di PHP di default, configurazione in un ambiente di sviluppo che consente per esempio di vedere a video gli errori e configurazione in un ambiente di produzione in cui tipicamente gli errori vengono scritti in un file di log.
Nel sito ufficiale è presente l'archivio storico delle versioni dismesse, aggiornato a maggio del 2019[16].

Esempi di codice[modifica | modifica wikitesto]

Variabili[modifica | modifica wikitesto]

I nomi di variabili in PHP iniziano sempre con il simbolo del dollaro ($) e il carattere successivo non deve essere un numero, ad esempio $1 o $2 non sono nomi di variabili valide.

I nomi delle variabili sono case-sensitive, ovvero $pippo e $PIPPO sono due variabili distinte.

Una variabile può contenere tutti i caratteri A-Z , a-z , 0-9 e _. Una volta definite esse vengono istanziate senza definirne esplicitamente il "tipo":

$ciao = "Ciao mondo!";

Per mostrare il contenuto di $hello, è possibile usare l'istruzione echo:

echo $ciao;

che visualizza “Ciao mondo!”. Se invece la variabile $ciao non esistesse generalmente echo genererebbe un errore non fatale (Notice).

Stringhe[modifica | modifica wikitesto]

In PHP una stringa di caratteri alfanumerici si rappresenta in due modi: racchiudendola tra apici doppi (") o singoli ('). Quando si usano gli apici doppi vengono interpretati eventuali caratteri speciali (per esempio la tabulazione, "col1\tcol2" o il carattere di fine riga, "riga1\nriga2") e viene restituito il contenuto delle variabili, ovvero:

echo "Ciao vale: $ciao";

Stampa: "Ciao vale: Ciao mondo!". Con gli apici singoli la stringa è salvata e utilizzata così com'è.

Esempio di composizione della frase "Wikipedia è meravigliosa" in due modi: usando gli apici singoli e doppi:

$uno = 'Wikipedia';
$due = 'è';
$tre = 'meravigliosa';

echo $uno . ' ' . $due . ' ' . $tree;
echo "$uno $due $tre";

Array (e foreach)[modifica | modifica wikitesto]

PHP gestisce gli array come delle mappe associative, ossia come un elenco di chiavi associate univocamente a un certo valore. Gli array in PHP possono perciò essere usati come una comune matrice, come una lista (vettore), uno stack, una coda o altro. Inoltre un qualsiasi elemento dell'array può a sua volta contenere altri array, anche multidimensionali[17] e tutti gli elementi dell'array o dei sotto-array possono essere fra loro di tipi di variabile diversi, dando così la possibilità di creare strutture dati complesse.

Gli array sono dinamici, infatti possono essere rimossi tramite unset();[18].

Dato che gli array in PHP sono associativi, possono essere usati tramite un costrutto chiamato foreach[19] che rende praticabile l'l'accesso ai contenuti ricavando tutte le singole associazioni di chiave => valore dell'array.

Codice d'esempio di un array associativo in cui ad ogni nome di città corrisponde il numero di abitanti. L'esempio visualizza a video ogni città con il suo numero di abitanti e poi la somma di tutti gli abitanti.

<?php
$residenti = array(
	'Torino' => 908551,
	'Milano' => 1315791,
	'Roma' => 2753000
);

$somma = 0;

foreach($residenti as $città=>$nResidenti) {
	echo "La città $città ha $nResidenti abitanti";
	$somma += $nResidenti;
}

echo "In tutto ci sono $somma abitanti!";
?>

L'output del codice è: La città Torino ha 908551 abitanti. La città Milano ha 1315791 abitanti. La città Roma ha 2753000 abitanti. In tutto ci sono 4977342 abitanti


Per approfondimenti vedere la documentazione ufficiale online[17].

Funzioni[modifica | modifica wikitesto]

Le funzioni in PHP possono avere un insieme misto di parametri opzionali con valori predefiniti e parametri obbligatori.[20]

Esempio di funzione con un parametro obbligatorio e uno opzionale con valore predefinito.

<?php 
/**
* Programma che effettui
* la somma di minimo 2 numeri
* e massimo 3
*/
function somma($n1,$n2,$n3=0) {
	return $n1+$n2+$n3;
}

echo somma(1,5); //OUTPUT: 6
echo somma(1,24); //OUTPUT: 25
echo somma(3,4,2); //OUTPUT: 9

?>

Qualunque variabile di qualunque tipo creata dentro alla funzione è locale. Per specificare variabili globali dentro alla funzione si usa global $variabile[21]

Esempio:

<?php
function esperimento() {
	global $a;
	$a = "tre";
	$b = "quattro";
	echo "Durante: $a $b";
}

$a = "uno";
$b = "due";

echo "Prima: $a $b";
esperimento();
echo "Dopo: $a $b";
?>

Il risultato sarà: Prima uno due Durante tre quattro Dopo tre due.

Inclusioni[modifica | modifica wikitesto]

È possibile includere una pagina PHP all'interno di un'altra per eseguirne il codice per evitare codice ridondante e per accedere a variabili, funzioni e classi definite nella pagina inclusa.

Per farlo si utilizza una delle seguenti istruzioni: include[22], include_once[23], require[24] e require_once[25]. Esempio:

<?php
include 'header.php';
echo "Ciao mondo!";
include 'footer.php';
?>

Tipi di inclusione:

  • Si usa include quando si vuole che venga inviato soltanto un segnale di avviso senza interrompere l'esecuzione del programma qualora la pagina da includere non esista.
  • Si usa require quando si vuole che venga inviato un segnale di errore fatale e il programma venga interrotto se la pagina da includere non esiste.
  • Si usa include_once, require_once quando il comando potrebbe essere ripetuto più volte anche in file diversi, creando così (potenzialmente) una inclusione ricorsiva, ma si vuole che la pagina non venga inclusa più di una volta. Se la pagina da includere non esiste si comportano analogamente ai rispettivi sopra citati.

Gestione dei parametri[modifica | modifica wikitesto]

Il PHP permette il passaggio di informazioni da una pagina all'altra attraverso le diverse funzionalità supportate dall'HTTP. Nello specifico, richieste di tipo GET (informazioni parametrizzate nella barra degli indirizzi), POST (informazioni con origine da un precedente submit da un web-form, generalmente) e dei COOKIE (informazioni contenute in piccole stringhe di testo salvate fisicamente nella memoria locale di un browser), insieme al supporto alle sessioni (funzionalità basata sull'utilizzo dei cookie). Queste informazioni sono utilizzabili in PHP tramite quattro array di tipo associativo chiamati internamente: $_GET, $_POST, $_COOKIE, $_SESSION. Questi tipi di array vengono chiamati superglobali[26] ovvero che sono visibili ad ogni scope del programma.

Esempio di gestione di un parametro GET. Richiesta d'esempio: http://example.org/esempio.php?pippo=Ciao. Contenuto di leggi.php (Mostrerà "Ciao"):

<?php
/*
 * Controllo se è stato ricevuto il parametro "pippo" tramite metodo GET.
 * Se è rilevato lo visualizzo; se non è rilevato avverto l'utente.
 */

if( isset( $_GET['pippo'] ) ) {
	$a = $_GET['pippo']; // Salvo nella variabile $a il parametro "pippo"

	$a = htmlentities( $a ); // Questo "disinnesca" eventuali contenuti HTML contenuti in $a

	echo $a; // Mostro a video
} else {
	echo "Nessun parametro di nome pippo trovato. Devi inviarlo!";
}
?>

Una funzione con controllo sui parametri[modifica | modifica wikitesto]

<?php
function get_hello_world($value1, $value2){
	$result = '';

	/*
	 * In PHP il controllo "if", se contiene una sola istruzione,
	 * può anche non avere le parentesi graffe di contenimento
	 * ma è buona norma usarle sempre, per leggibilità del codice.
	 */
	if($value1 != '') {
        	$result .= $value1;	// Equivale a: $result = $result . $value1;
	}

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

	/*
	 * !empty($value2) equivale a: $value2 != ""
	 * Il "punto esclamativo" serve per negare un valore booleano
	 */
	if(!empty($value2)) {
		$result .= $value2;	// Equivale a: $result = $result . $value2;
	}

	return $result;
}

echo get_hello_world('Hello', 'world');
?>

Il ciclo for[modifica | modifica wikitesto]

<?php
/*
 * In questo caso la variabile $n viene stampata a video, successivamente
 * viene incrementata di 1, il ciclo termina quando $n è uguale a 9 (il ciclo conta da 0 fino a 9 quindi 10 volte).
*/

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

// Output -> 0123456789
?>

Il ciclo while[modifica | modifica wikitesto]

<?php
/*
 * In questo caso vediamo come stampare a video dei risultati estratti
 * da una base di dati MySQL, eseguendo una query SQL.
 * Questo script è incompleto, in quanto prima è necessario effettuare
 * il collegamento alla base di dati MySQL tramite mysqli o PDO.
*/

$result = $mysqli->query("SELECT id FROM persone");

while($row = $result->fetch_assoc()) {
	echo $row['id'] . "<br />";
}

/*
 * In questo modo estraiamo dei dati da una base di dati MySQL
 * sotto forma di array che verrà poi stampato tramite un ciclo while
*/
?>

99 Bottles of Beer[modifica | modifica wikitesto]

Il seguente esempio stampa il testo della canzone 99 Bottles of Beer.

<?php
/*
 * Questo è un commento. Altri modi per commentare sono i simboli // e #
 * Questo tipo di commenti non ha bisogno degli asterischi (*) all'inizio
 * di ogni riga, ma lo si fa per convenzione. I simboli // e #
 * commentano solo il testo che si trova dopo di essi e fino alla fine della riga;
 * non c'è bisogno di finire il commento con qualche carattere speciale.
 */

/*
 * Prima definiamo una funzione chiamata "plural".
 * Restituisce una "s" se l'argomento passato non è 1.
 */
function plural($number) {
	// L'operatore ternario (!= ? :) è una struttura condizionale 
	// simile a if-else: (condizione ? true : false)
	return ($number != 1 ) ? 's' : '';
}

// Definiamo una variabile chiamata $a_capo che contiene un a capo HTML,
// un carattere di ritorno e uno di nuova riga:
$a_capo = "<br />\r\n";

for($i=99; $i>0; $i--) {
	echo "$i bottle" . plural($i) . " of beer on the wall,$a_capo";
	// Non abbiamo bisogno di ripetere il comando echo per ogni riga:
	echo "$i bottle" . plural($i) . " of beer . $a_capo
	Take one down, pass it around,$a_capo" .
	((($i - 1) != 0) ? $i - 1 : 'no more') .
	' bottle' . plural($i - 1) . " of beer on the wall.$a_capo$a_capo";
	/*
	 * PHP permette di creare stringhe su più righe, finché
	 * trova un punto e virgola (;) che termina l'istruzione.
	 * Un punto (.) concatena insieme più stringhe.
	 * Le variabili, che iniziano con il carattere "$", sono interpretate
	 * anche dentro i doppi apici ("), ma non dentro gli apici singoli (').
	 * Le funzioni, come plural(), non sono interpretate fra gli apici.
	 */
}
echo "Go to the store, $a_capo buy some more, $a_capo 99 bottles of beer on the wall!";
?>

Esempio connessione con base di dati MySQL usando l'estensione MySQLi[modifica | modifica wikitesto]

Il PHP permette l'elaborazione di dati da base di dati MySQL. I dati verranno richiesti, inseriti e modificati attraverso opportune query usando alcune estensioni tra cui MySQLi e PDO.[27]

L'estensione MySQLi, dove la "i" sta per "improved", è stata messa a disposizione di PHP per sfruttare alcune nuove funzionalità messe a disposizione dalle versioni di MySQL versione 4.1.3 e successive ed è disponibile per PHP 5 e release superiori.

Esempio di connessione a base di dati e richiesta di un dato:

<?php
// Connessione a MySQL con l'estensione MySQLi
$mysqli = new mysqli('localhost', 'nome_utente_database', 'password_database', 'nome_database');

/*
 * Questo è il modo ufficiale di controllare se una connessione MySQL è fallita,
 * MA $connect_error non è supportato fino a PHP 5.2.9 e 5.3.0.
 */
if ($mysqli->connect_error) {
    die("Connessione fallita, motivi: " . $mysqli->connect_error);
}

// Proviamo una query ipotizzando che stiamo elaborando dati provenienti da una simil-rubrica:
$SQLQuery = $mysqli->query("SELECT indirizzo, telefono FROM utenti WHERE nome = 'Francesca' ");

// Da questa query otterremo l'indirizzo e il telefono della persona di nome Francesca, 
// ipotizzando sia presente nella tabella utenti della base di dati in questione.

// Ora "trasformiamo" i dati ricevuti dalla query in un array associativo utilizzabile successivamente
$row = $SQLQuery->fetch_assoc();

// Mostriamo a video per esempio il numero di telefono dall'array
echo "Il numero di telefono di Francesca è: " . $row['telefono'];

// Chiusura della connessione alla base di dati
$mysqli->close();
?>

Per approfondimenti vedere il manuale online ufficiale MySQLi.[28]

php.ini[modifica | modifica wikitesto]

Il file di configurazione di PHP, chiamato php3.ini in PHP 3, e poi semplicemente php.ini nelle versioni successive, è letto all'avvio dell'interprete del linguaggio e fornisce le impostazioni dei vari moduli con cui l'interprete è stato compilato. Nella versione server modulare di PHP, questo avviene solo una volta, all'avvio del server web. Per le versioni CGI e CLI, invece, è invocato ad ogni richiesta.

Per visualizzare tutte le opzioni di configurazione è possibile utilizzare la funzione phpinfo().

Ambienti di sviluppo[modifica | modifica wikitesto]

Note[modifica | modifica wikitesto]

  1. ^ The PHP Group, History of PHP and related projects, su it.php.net. URL consultato il 26 aprile 2011.
  2. ^ PHP: License Information, su www.php.net. URL consultato il 28 febbraio 2020.
  3. ^ Announce: Personal Home Page Tools (PHP Tools), su groups.google.ch, 8 giugno 1995. URL consultato il 6 luglio 2011.
  4. ^ (EN) Ellie Quigley e Marko Gargenta, PHP and MySQL by Example, Prentice Hall Professional, 22 novembre 2006, ISBN 978-0-13-800602-0. URL consultato il 28 febbraio 2020.
  5. ^ PHP: PHP Version 3 Documentation, su www.php.net. URL consultato il 28 febbraio 2020.
  6. ^ Web Hosting Services, VPS Servers and Domain Names by NTC Hosting, su www.ntchosting.com. URL consultato il 28 febbraio 2020.
  7. ^ (EN) PHP: News Archive - 2017, su be2.php.net. URL consultato il 26 settembre 2017.
  8. ^ (EN) PHP: Credits, su 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. ^ PHP-related vulnerabilities on the National Vulnerability Database, su coelho.net. URL consultato il 6 luglio 2011.
  14. ^ Register Globals deprecato e rimosso da PHP 5.4.0
  15. ^ Magic Quotes deprecato e rimosso da PHP 5.4.0
  16. ^ (EN) Archivio storico delle versioni non più supportate, su php.net. URL consultato il 15 maggio 2019 (archiviato il 12 novembre 2006).
  17. ^ a b Manuale PHP - array, su it2.php.net. URL consultato il 14 marzo 2018 (archiviato dall'url originale il 15 marzo 2018).
  18. ^ PHP: unset - Manual, su www.php.net. URL consultato il 17 ottobre 2020.
  19. ^ PHP: foreach - Manual, su www.php.net. URL consultato il 17 ottobre 2020.
  20. ^ Default Function Parameters In PHP | #! code, su www.hashbangcode.com. URL consultato il 17 ottobre 2020.
  21. ^ PHP: Variable scope - Manual, su www.php.net. URL consultato il 17 ottobre 2020.
  22. ^ Manuale PHP - include
  23. ^ Manuale PHP - include_once, su it2.php.net. URL consultato il 31 gennaio 2014 (archiviato dall'url originale il 1º febbraio 2014).
  24. ^ Manuale PHP - require, su it2.php.net. URL consultato il 31 gennaio 2014 (archiviato dall'url originale il 1º febbraio 2014).
  25. ^ Manuale PHP - require_once, su it2.php.net. URL consultato il 31 gennaio 2014 (archiviato dall'url originale il 1º febbraio 2014).
  26. ^ PHP: Superglobals - Manual, su www.php.net. URL consultato il 17 ottobre 2020.
  27. ^ PHP: Database Extensions - Manual, su www.php.net. URL consultato il 17 ottobre 2020.
  28. ^ MySQLi:query, su it2.php.net. URL consultato il 29 gennaio 2014 (archiviato dall'url originale il 1º febbraio 2014).

Bibliografia[modifica | modifica wikitesto]

  • 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[modifica | modifica wikitesto]

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Controllo di autoritàLCCN (ENsh99002710 · GND (DE4546126-0 · BNF (FRcb135584386 (data) · BNE (ESXX548742 (data)