SlideShare ist ein Scribd-Unternehmen logo
1 von 41
Downloaden Sie, um offline zu lesen
www.php.net 
Percorso 7 
PHP e MySQL 
3
PHP 
•Installazione 
–E’ un modulo di Apache 
–Installare: libapache2-mod-php5 
–$ sudo a2enmod php5 
•Configurazione 
–/etc/php5/apache2/php.ini 
–Configurazioni «disponibili» (da copiare o linkare) 
•/usr/share/php5/php.ini-development 
•/usr/share/php5/php.ini-production 
Percorso 7 
PHP e MySQL 
4
Test 
•Creare una pagina con estensione .php 
–phpinfo.php 
•Contenente l’istruzione 
– <?php phpinfo() ; ?> 
•Caricare la pagina con un client web e controllare il risultato 
Percorso 7 
PHP e MySQL 
5
Test 
Percorso 7 
PHP e MySQL 
6
Esercizio 
•Creare una pagina php che richiami la funzione phpinfo() 
•Richiamare la pagina e verificare il contenuto con un browser 
Percorso 7 
PHP e MySQL 
7
PHP come linguaggio 
<!-- esempio.php --> 
<html> 
<head><title>Ciao mondo !</title></head> 
<body> 
<?php 
// Questo è codice PHP 
echo "<h1> Ciao Mondo !</h1>"; 
?> 
</body> 
</html> 
Percorso 7 
PHP e MySQL 
8
Today is… 
•Visualizzare la scritta: 
–“Today is ...” 
•Staticamente: 
–<html><body> Today is 13/05/2003 </body></html> 
•E domani? 
Percorso 7 
PHP e MySQL 
9
Today is… 
•Dinamicamente 
–<html><body>Today is <?php // formato GG/MM/AAAA $today = date("j/m/Y"); echo $today; ?> <body></html> 
•Si aggiorna in tempo reale 
Percorso 7 
PHP e MySQL 
10
Pagine dinamiche… come? 
•Una pagina php è un software, che genera lo stesso output a parità di input 
•La pagina può generare output diversi solo in funzione delle variazioni dei suoi input 
Percorso 7 
PHP e MySQL 
11 
Quali sono gli input che possono variare, nell’esecuzione di una pagina web dinamica?
Pagine dinamiche… come? 
•Una pagina php è un software, che genera lo stesso output a parità di input 
•La pagina può generare output diversi solo in funzione delle variazioni dei suoi input 
Percorso 7 
PHP e MySQL 
12 
Quali sono gli input che possono variare, nell’esecuzione di una pagina web dinamica? 
Tempo (data/ora) di sistema 
Informazioni fornite dall’utente (FORM POST o GET) 
Informazioni presenti in un database 
Informazioni fornite dall’utente (Ajax) 
Informazioni contenute in file sul server 
Informazioni fornite da servizi esterni
php.ini 
•File di testo, composto da coppie 
–direttiva = valore 
•Sezioni definite con [sezione], ma praticamente ignorate (sono usate solo in modalità CGI) 
Percorso 7 
PHP e MySQL 
13
Direttive php.ini principali (1) 
•engine = On 
–Attiva l’interprete PHP 
•short_open_tag = Off 
–Non abilita tag abbreviati <? ... ?>, obbliga alla forma completa <?php ... ?> 
•asp_tags = Off 
–Idem per tag <% ... %> 
Percorso 7 
PHP e MySQL 
14
Direttive php.ini principali (2) 
•output_buffering = Off 
•output_buffering = 4096 
–Ritarda l’invio della risposta al web server, memorizzandola in un buffer 
–Quando la risposta arriva al server web, esso deve inviarla al client, e quindi dovrà generare tutti gli header HTTP 
–Finché la risposta è nel buffer, è ancora possibile modificare gli header 
Percorso 7 
PHP e MySQL 
15
Direttive php.ini sugli errori 
•error_reporting = E_ALL|E_STRICT 
•error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT 
•error_reporting = E_ALL 
–Quali messaggi di errore mostrare (gli altri sono ignorati) 
•display_errors = Off 
–Mostra errori nella risposta HTML 
•log_errors = On 
–Invia errori al log di sistema 
•error_log = "/var/log/php_errors.log" 
•error_log = syslog 
Percorso 7 
PHP e MySQL 
16
Tipi di errore 
Percorso 7 
PHP e MySQL 
17
Direttive php.ini sui limiti di risorse 
•date.timezone = "US/Central" 
–Fuso orario del server 
•max_execution_time = 30 
•max_input_time = 60 
•memory_limit = 128M 
•post_max_size = 8M 
•upload_max_filesize = 2M 
Percorso 7 
PHP e MySQL 
18
Direttive php.ini sulle sessioni 
•session.use_cookies = 1 
•session.name = PHPSESSID 
•session.cookie_lifetime = 0 
–Durata sessione fino al riavvio del browser 
•session.cookie_path = / 
–Eventuali limitazioni a porzioni del sito 
Percorso 7 
PHP e MySQL 
19
MySQL 
•Installazione 
–mysql-server 
–php5-mysql 
•Configurazione 
–my.cnf (in /etc/mysql) 
–sudo service mysql start / stop / restart 
Percorso 7 
PHP e MySQL 
21
Configurazione server (my.cnf) 
[mysqld] 
user = mysql 
pid-file = /var/run/mysqld/mysqld.pid 
socket = /var/run/mysqld/mysqld.sock 
port = 3306 
basedir = /usr 
datadir = /var/lib/mysql 
tmpdir = /tmp 
bind-address = 127.0.0.1 
Percorso 7 
PHP e MySQL 
22
Porte di rete 
•Porta di default mysql: 3306 
•Solitamente rimane in ascolto (“bind”) solamente sull’interfaccia di loopback (localhost) 
•Sconsigliato fornire accesso SQL ad altri client sulla LAN 
–Eventualmente solo al web server, se risiede su una macchina diversa da mysql 
Percorso 7 
PHP e MySQL 
23
Data directory 
•Contiene i database 
•File binari, non toccare  
–Ma backuppare (!) 
Percorso 7 
PHP e MySQL 
24
Amministrazione server 
•Comandi SQL via command line 
–mysql 
•Tool di configurazione da linea di comando 
–mysqladmin 
•Tool di configurazione web-based 
–Webmin 
–PhpMyAdmin 
•Altri client SQL 
Percorso 7 
PHP e MySQL 
25
Utente root mysql 
•Non c’entra nulla con l’utente root di Linux 
•Utente privilegiato per l’accesso al database 
•Nell’installazione di default, non ha password (!) 
Percorso 7 
PHP e MySQL 
26
Connessione diretta 
•mysql -u root (no password) 
•mysql -u root -p (ask password) 
•Inserire comandi SQL 
•Uscire con q 
Percorso 7 
PHP e MySQL 
27
Esercizio 
•Installare MySQL (se necessario) 
•Collegarsi al database con il tool mysql, come utente root 
•Visualizzare i database esistenti 
•Visualizzare le tabelle nei database 
•Settare una password per l’utente root (come prova, possiamo usare “toor” come password) 
•Uscire da MySQL 
Percorso 7 
PHP e MySQL 
28
Mysqladmin 
•mysqladmin [options] command [command-arg] [command [command- arg]] ... 
–--user=user_name 
–--password[=password] 
–create db_name 
–password "new-password" 
–status 
–processlist 
Percorso 7 
PHP e MySQL 
29
Webmin per MySQL 
Percorso 7 
PHP e MySQL 
30
phpMyAdmin 
•Client/frontend SQL molto potente e user friendly 
•Scritto completamente in PHP 
•www.phpmyadmin.net/ 
Percorso 7 
PHP e MySQL 
31
Installazione phpMyAdmin 
•sudo apt-get install phpmyadmin 
•Necessari i repository “universe” di Ubuntu 
•Rispondere alle domande poste durante l’installazione 
•Accedere con: http://192.168.56.xxx/phpmyadmin/ 
Percorso 7 
PHP e MySQL 
32
phpMyAdmin 
Percorso 7 
PHP e MySQL 
33 
Server 
Databases 
Tables 
Data
Esercizio 
•Installare phpMyAdmin 
•Collegarsi al database ed esplorare le tabelle 
•Creare un nuovo database “Rubrica” 
•Creare una tabella “People” nel database “rubrica”, avente i campi: id, cognome, nome, telefono 
•Popolare la tabella “People” con alcuni dati di prova 
Percorso 7 
PHP e MySQL 
34
Accedere a MySQL dagli script PHP 
•Alcuni moduli di PHP permettono di accedere a MySQL, eseguire query, e recuperare i risultati 
–mysql – libreria “storica” (deprecata) 
–mysqli – versione “aggiornata” (i=improved) 
–PDO (PHP Data Objects), API object-oriented e database-independent (quasi...) 
–PEAR MDB2 <http://pear.php.net/>
Concetti base 
•Connection 
•Query Statement 
•Result Set 
•Column value(s) 
Percorso 7 
PHP e MySQL 
37
<?php /* Connecting, selecting database */ $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Could not connect : " . mysql_error()); echo "Connected successfully"; mysql_select_db("my_database") or die("Could not select database"); /* Performing SQL query */ $query = "SELECT a, b, c FROM my_table"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); /* Printing results in HTML */ echo "<table>n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "t<tr>n"; echo "tt<td>" . $line["a"] . "</td>n"; echo "tt<td>" . $line["b"] . "</td>n"; echo "tt<td>" . $line["c"] . "</td>n"; echo "t</tr>n"; } echo "</table>n"; /* Free resultset */ mysql_free_result($result); /* Closing connection */ mysql_close($link); ?> 
Connessione 
Scelta DB 
Query 
Disconnessione 
Prepara 
Esegui 
Estrai riga 
Estrai colonne 
Fine 
Percorso 7 
PHP e MySQL 
38
Esercizio 
•Scrivere una pagina PHP che estragga i valori della tabella People nel database Rubrica, e li visualizzi sul browser 
•Non utilizzare l’utente “root” per la connessione, ma creare uno specifico utente “web” con i privilegi sul solo database Rubrica 
Percorso 7 
PHP e MySQL 
39
Riferimenti 
•https://help.ubuntu.com/community/ApacheMySQLPHP 
•http://php.net/manual/ 
•http://dev.mysql.com/doc/refman/5.6/en/index.html 
Percorso 7 
PHP e MySQL 
40
These slides are licensed under a Creative Commons 
Attribution Non Commercial Share Alike 4.0 International 
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ 
Versione in Italiano: 
https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it

Weitere ähnliche Inhalte

Was ist angesagt?

Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
KohaGruppoItaliano
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
guestbe916c
 

Was ist angesagt? (7)

Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
Biblioteca Generale della Custodia di Terra Santa a Gerusalemme : Specifiche ...
 
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
Laboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato ServerLaboratorio Di  Basi Di  Dati 07  Programmazione  Web Lato Server
Laboratorio Di Basi Di Dati 07 Programmazione Web Lato Server
 
SSH base - Configurazione di sistema da terminale
 SSH base - Configurazione di sistema da terminale SSH base - Configurazione di sistema da terminale
SSH base - Configurazione di sistema da terminale
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
 
Installing Apache tomcat with Netbeans
Installing Apache tomcat with NetbeansInstalling Apache tomcat with Netbeans
Installing Apache tomcat with Netbeans
 
php: back to basics
php: back to basicsphp: back to basics
php: back to basics
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 

Andere mochten auch

Andere mochten auch (17)

Una casa a misura di disabile: la domotica al servizio della persona
Una casa a misura di disabile: la domotica al servizio della personaUna casa a misura di disabile: la domotica al servizio della persona
Una casa a misura di disabile: la domotica al servizio della persona
 
Edifici intelligenti: innovazione tecnologica e convergenza degli impianti
Edifici intelligenti: innovazione tecnologica e convergenza degli impiantiEdifici intelligenti: innovazione tecnologica e convergenza degli impianti
Edifici intelligenti: innovazione tecnologica e convergenza degli impianti
 
Progetto FreeAble (Handimatica 2008)
Progetto FreeAble (Handimatica 2008)Progetto FreeAble (Handimatica 2008)
Progetto FreeAble (Handimatica 2008)
 
Attivare facilmente il Prompt dei comandi in Code::Blocks
Attivare facilmente il Prompt dei comandi in Code::BlocksAttivare facilmente il Prompt dei comandi in Code::Blocks
Attivare facilmente il Prompt dei comandi in Code::Blocks
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
 
Representing and visiting graphs
Representing and visiting graphsRepresenting and visiting graphs
Representing and visiting graphs
 
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
 Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti... Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
 
Riusabilità dei contenuti ditattici
 Riusabilità dei contenuti ditattici Riusabilità dei contenuti ditattici
Riusabilità dei contenuti ditattici
 
La domotica al servizio della persona
La domotica al servizio della personaLa domotica al servizio della persona
La domotica al servizio della persona
 
Introduzione alla disabilità
Introduzione alla disabilitàIntroduzione alla disabilità
Introduzione alla disabilità
 
Intelligenza ambientale applicata alla casa
Intelligenza ambientale applicata alla casaIntelligenza ambientale applicata alla casa
Intelligenza ambientale applicata alla casa
 
La percezione sensoriale
La percezione sensorialeLa percezione sensoriale
La percezione sensoriale
 
RDF - Resource Description Framework and RDF Schema
RDF - Resource Description Framework and RDF SchemaRDF - Resource Description Framework and RDF Schema
RDF - Resource Description Framework and RDF Schema
 
Multimedialità ed e-learning
 Multimedialità ed e-learning Multimedialità ed e-learning
Multimedialità ed e-learning
 
Tecnologie per la disabilità: presentazione del corso
Tecnologie per la disabilità: presentazione del corsoTecnologie per la disabilità: presentazione del corso
Tecnologie per la disabilità: presentazione del corso
 
Il Web Semantico applicato agli edifici intelligenti
Il Web Semantico applicato agli edifici intelligentiIl Web Semantico applicato agli edifici intelligenti
Il Web Semantico applicato agli edifici intelligenti
 
Introduction to Servlets
Introduction to ServletsIntroduction to Servlets
Introduction to Servlets
 

Ähnlich wie Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, installazione, configurazione - phpMyAdmin - Interazione tra PHP e MySQL

Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
Laboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q LLaboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q L
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
guestbe916c
 
Php concetti chiave di base
Php concetti chiave di basePhp concetti chiave di base
Php concetti chiave di base
Walter Liguori
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
Gianfranco Fedele
 

Ähnlich wie Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, installazione, configurazione - phpMyAdmin - Interazione tra PHP e MySQL (20)

Back to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizioBack to Basics, webinar 6: Messa in esercizio
Back to Basics, webinar 6: Messa in esercizio
 
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
Laboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q LLaboratorio Di  Basi Di  Dati 02  Il  D B M S  My S Q L
Laboratorio Di Basi Di Dati 02 Il D B M S My S Q L
 
Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9Powerful asp.net 4 e ie9
Powerful asp.net 4 e ie9
 
Php concetti chiave di base
Php concetti chiave di basePhp concetti chiave di base
Php concetti chiave di base
 
Gianfrasoft Corso Di Php Parte 1
Gianfrasoft   Corso Di Php   Parte 1Gianfrasoft   Corso Di Php   Parte 1
Gianfrasoft Corso Di Php Parte 1
 
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
Sicurezza Php (giugno 2010) Stefano Bianchini presso Ce.Se.N.A.
 
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e AjaxProgettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
Progettazione e sviluppo di applicazioni web 2.0 con PHP e Ajax
 
Apache HTTP Server
Apache HTTP ServerApache HTTP Server
Apache HTTP Server
 
Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...Architetture web - Linguaggi e standard - Web server, application server, dat...
Architetture web - Linguaggi e standard - Web server, application server, dat...
 
Accelera lo sviluppo con il web framework! Componenti a supporto dello svilup...
Accelera lo sviluppo con il web framework! Componenti a supporto dello svilup...Accelera lo sviluppo con il web framework! Componenti a supporto dello svilup...
Accelera lo sviluppo con il web framework! Componenti a supporto dello svilup...
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Presentazione django reminiscence
Presentazione django reminiscencePresentazione django reminiscence
Presentazione django reminiscence
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
breve introduzione a node.js
breve introduzione a node.jsbreve introduzione a node.js
breve introduzione a node.js
 
The road to php7
The road to php7The road to php7
The road to php7
 
Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013Introduzione a Drupal 7 - 14/03/2013
Introduzione a Drupal 7 - 14/03/2013
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
Drupal 7 : theming avanzato
Drupal 7 : theming avanzatoDrupal 7 : theming avanzato
Drupal 7 : theming avanzato
 
WeWantWeb - WCF Data Services
WeWantWeb - WCF Data ServicesWeWantWeb - WCF Data Services
WeWantWeb - WCF Data Services
 
Java lezione 17
Java lezione 17Java lezione 17
Java lezione 17
 

Kürzlich hochgeladen

case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
giorgiadeascaniis59
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
lorenzodemidio01
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
lorenzodemidio01
 

Kürzlich hochgeladen (19)

case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....case passive_GiorgiaDeAscaniis.pptx.....
case passive_GiorgiaDeAscaniis.pptx.....
 
Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................Oppressi_oppressori.pptx................
Oppressi_oppressori.pptx................
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptxProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
ProgettoDiEducazioneCivicaDefinitivo_Christian Tosone.pptx
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................LE ALGHE.pptx ..........................
LE ALGHE.pptx ..........................
 
discorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptxdiscorso generale sulla fisica e le discipline.pptx
discorso generale sulla fisica e le discipline.pptx
 
Quadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceoQuadrilateri e isometrie studente di liceo
Quadrilateri e isometrie studente di liceo
 
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptxNicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
Nicola pisano aaaaaaaaaaaaaaaaaa(1).pptx
 
Presentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione CivicaPresentazioni Efficaci e lezioni di Educazione Civica
Presentazioni Efficaci e lezioni di Educazione Civica
 
Descrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptxDescrizione Piccolo teorema di Talete.pptx
Descrizione Piccolo teorema di Talete.pptx
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.Vuoi girare il mondo? educazione civica.
Vuoi girare il mondo? educazione civica.
 
descrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptxdescrizioni della antica civiltà dei sumeri.pptx
descrizioni della antica civiltà dei sumeri.pptx
 
Aristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptxAristotele, vita e opere e fisica...pptx
Aristotele, vita e opere e fisica...pptx
 
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptxScienza Potere Puntoaaaaaaaaaaaaaaa.pptx
Scienza Potere Puntoaaaaaaaaaaaaaaa.pptx
 
Scrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibileScrittura seo e scrittura accessibile
Scrittura seo e scrittura accessibile
 
Tosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptxTosone Christian_Steve Jobsaaaaaaaa.pptx
Tosone Christian_Steve Jobsaaaaaaaa.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 

Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, installazione, configurazione - phpMyAdmin - Interazione tra PHP e MySQL

  • 1.
  • 2.
  • 3. www.php.net Percorso 7 PHP e MySQL 3
  • 4. PHP •Installazione –E’ un modulo di Apache –Installare: libapache2-mod-php5 –$ sudo a2enmod php5 •Configurazione –/etc/php5/apache2/php.ini –Configurazioni «disponibili» (da copiare o linkare) •/usr/share/php5/php.ini-development •/usr/share/php5/php.ini-production Percorso 7 PHP e MySQL 4
  • 5. Test •Creare una pagina con estensione .php –phpinfo.php •Contenente l’istruzione – <?php phpinfo() ; ?> •Caricare la pagina con un client web e controllare il risultato Percorso 7 PHP e MySQL 5
  • 6. Test Percorso 7 PHP e MySQL 6
  • 7. Esercizio •Creare una pagina php che richiami la funzione phpinfo() •Richiamare la pagina e verificare il contenuto con un browser Percorso 7 PHP e MySQL 7
  • 8. PHP come linguaggio <!-- esempio.php --> <html> <head><title>Ciao mondo !</title></head> <body> <?php // Questo è codice PHP echo "<h1> Ciao Mondo !</h1>"; ?> </body> </html> Percorso 7 PHP e MySQL 8
  • 9. Today is… •Visualizzare la scritta: –“Today is ...” •Staticamente: –<html><body> Today is 13/05/2003 </body></html> •E domani? Percorso 7 PHP e MySQL 9
  • 10. Today is… •Dinamicamente –<html><body>Today is <?php // formato GG/MM/AAAA $today = date("j/m/Y"); echo $today; ?> <body></html> •Si aggiorna in tempo reale Percorso 7 PHP e MySQL 10
  • 11. Pagine dinamiche… come? •Una pagina php è un software, che genera lo stesso output a parità di input •La pagina può generare output diversi solo in funzione delle variazioni dei suoi input Percorso 7 PHP e MySQL 11 Quali sono gli input che possono variare, nell’esecuzione di una pagina web dinamica?
  • 12. Pagine dinamiche… come? •Una pagina php è un software, che genera lo stesso output a parità di input •La pagina può generare output diversi solo in funzione delle variazioni dei suoi input Percorso 7 PHP e MySQL 12 Quali sono gli input che possono variare, nell’esecuzione di una pagina web dinamica? Tempo (data/ora) di sistema Informazioni fornite dall’utente (FORM POST o GET) Informazioni presenti in un database Informazioni fornite dall’utente (Ajax) Informazioni contenute in file sul server Informazioni fornite da servizi esterni
  • 13. php.ini •File di testo, composto da coppie –direttiva = valore •Sezioni definite con [sezione], ma praticamente ignorate (sono usate solo in modalità CGI) Percorso 7 PHP e MySQL 13
  • 14. Direttive php.ini principali (1) •engine = On –Attiva l’interprete PHP •short_open_tag = Off –Non abilita tag abbreviati <? ... ?>, obbliga alla forma completa <?php ... ?> •asp_tags = Off –Idem per tag <% ... %> Percorso 7 PHP e MySQL 14
  • 15. Direttive php.ini principali (2) •output_buffering = Off •output_buffering = 4096 –Ritarda l’invio della risposta al web server, memorizzandola in un buffer –Quando la risposta arriva al server web, esso deve inviarla al client, e quindi dovrà generare tutti gli header HTTP –Finché la risposta è nel buffer, è ancora possibile modificare gli header Percorso 7 PHP e MySQL 15
  • 16. Direttive php.ini sugli errori •error_reporting = E_ALL|E_STRICT •error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT •error_reporting = E_ALL –Quali messaggi di errore mostrare (gli altri sono ignorati) •display_errors = Off –Mostra errori nella risposta HTML •log_errors = On –Invia errori al log di sistema •error_log = "/var/log/php_errors.log" •error_log = syslog Percorso 7 PHP e MySQL 16
  • 17. Tipi di errore Percorso 7 PHP e MySQL 17
  • 18. Direttive php.ini sui limiti di risorse •date.timezone = "US/Central" –Fuso orario del server •max_execution_time = 30 •max_input_time = 60 •memory_limit = 128M •post_max_size = 8M •upload_max_filesize = 2M Percorso 7 PHP e MySQL 18
  • 19. Direttive php.ini sulle sessioni •session.use_cookies = 1 •session.name = PHPSESSID •session.cookie_lifetime = 0 –Durata sessione fino al riavvio del browser •session.cookie_path = / –Eventuali limitazioni a porzioni del sito Percorso 7 PHP e MySQL 19
  • 20.
  • 21. MySQL •Installazione –mysql-server –php5-mysql •Configurazione –my.cnf (in /etc/mysql) –sudo service mysql start / stop / restart Percorso 7 PHP e MySQL 21
  • 22. Configurazione server (my.cnf) [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp bind-address = 127.0.0.1 Percorso 7 PHP e MySQL 22
  • 23. Porte di rete •Porta di default mysql: 3306 •Solitamente rimane in ascolto (“bind”) solamente sull’interfaccia di loopback (localhost) •Sconsigliato fornire accesso SQL ad altri client sulla LAN –Eventualmente solo al web server, se risiede su una macchina diversa da mysql Percorso 7 PHP e MySQL 23
  • 24. Data directory •Contiene i database •File binari, non toccare  –Ma backuppare (!) Percorso 7 PHP e MySQL 24
  • 25. Amministrazione server •Comandi SQL via command line –mysql •Tool di configurazione da linea di comando –mysqladmin •Tool di configurazione web-based –Webmin –PhpMyAdmin •Altri client SQL Percorso 7 PHP e MySQL 25
  • 26. Utente root mysql •Non c’entra nulla con l’utente root di Linux •Utente privilegiato per l’accesso al database •Nell’installazione di default, non ha password (!) Percorso 7 PHP e MySQL 26
  • 27. Connessione diretta •mysql -u root (no password) •mysql -u root -p (ask password) •Inserire comandi SQL •Uscire con q Percorso 7 PHP e MySQL 27
  • 28. Esercizio •Installare MySQL (se necessario) •Collegarsi al database con il tool mysql, come utente root •Visualizzare i database esistenti •Visualizzare le tabelle nei database •Settare una password per l’utente root (come prova, possiamo usare “toor” come password) •Uscire da MySQL Percorso 7 PHP e MySQL 28
  • 29. Mysqladmin •mysqladmin [options] command [command-arg] [command [command- arg]] ... –--user=user_name –--password[=password] –create db_name –password "new-password" –status –processlist Percorso 7 PHP e MySQL 29
  • 30. Webmin per MySQL Percorso 7 PHP e MySQL 30
  • 31. phpMyAdmin •Client/frontend SQL molto potente e user friendly •Scritto completamente in PHP •www.phpmyadmin.net/ Percorso 7 PHP e MySQL 31
  • 32. Installazione phpMyAdmin •sudo apt-get install phpmyadmin •Necessari i repository “universe” di Ubuntu •Rispondere alle domande poste durante l’installazione •Accedere con: http://192.168.56.xxx/phpmyadmin/ Percorso 7 PHP e MySQL 32
  • 33. phpMyAdmin Percorso 7 PHP e MySQL 33 Server Databases Tables Data
  • 34. Esercizio •Installare phpMyAdmin •Collegarsi al database ed esplorare le tabelle •Creare un nuovo database “Rubrica” •Creare una tabella “People” nel database “rubrica”, avente i campi: id, cognome, nome, telefono •Popolare la tabella “People” con alcuni dati di prova Percorso 7 PHP e MySQL 34
  • 35.
  • 36. Accedere a MySQL dagli script PHP •Alcuni moduli di PHP permettono di accedere a MySQL, eseguire query, e recuperare i risultati –mysql – libreria “storica” (deprecata) –mysqli – versione “aggiornata” (i=improved) –PDO (PHP Data Objects), API object-oriented e database-independent (quasi...) –PEAR MDB2 <http://pear.php.net/>
  • 37. Concetti base •Connection •Query Statement •Result Set •Column value(s) Percorso 7 PHP e MySQL 37
  • 38. <?php /* Connecting, selecting database */ $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Could not connect : " . mysql_error()); echo "Connected successfully"; mysql_select_db("my_database") or die("Could not select database"); /* Performing SQL query */ $query = "SELECT a, b, c FROM my_table"; $result = mysql_query($query) or die("Query failed : " . mysql_error()); /* Printing results in HTML */ echo "<table>n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "t<tr>n"; echo "tt<td>" . $line["a"] . "</td>n"; echo "tt<td>" . $line["b"] . "</td>n"; echo "tt<td>" . $line["c"] . "</td>n"; echo "t</tr>n"; } echo "</table>n"; /* Free resultset */ mysql_free_result($result); /* Closing connection */ mysql_close($link); ?> Connessione Scelta DB Query Disconnessione Prepara Esegui Estrai riga Estrai colonne Fine Percorso 7 PHP e MySQL 38
  • 39. Esercizio •Scrivere una pagina PHP che estragga i valori della tabella People nel database Rubrica, e li visualizzi sul browser •Non utilizzare l’utente “root” per la connessione, ma creare uno specifico utente “web” con i privilegi sul solo database Rubrica Percorso 7 PHP e MySQL 39
  • 40. Riferimenti •https://help.ubuntu.com/community/ApacheMySQLPHP •http://php.net/manual/ •http://dev.mysql.com/doc/refman/5.6/en/index.html Percorso 7 PHP e MySQL 40
  • 41. These slides are licensed under a Creative Commons Attribution Non Commercial Share Alike 4.0 International To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ Versione in Italiano: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it