SlideShare ist ein Scribd-Unternehmen logo
1 von 15
PHP CONCETTI CHIAVE DI BASE
Ing. Walter Liguori
walter.liguori@mwsistemi.it
SESSIONI E AUTENTICAZIONE
• PHP ostaggio di HTTP?
In parte si..
• PHP dipende ancora oggi dalle funzionalità CGI (common
gateway interfacce) offerte dal protocollo HTTP (FAST-CGI).
• HTTP è ancora senza stato (protocollo STATE-LESS, senza
memoria)
• Il server una volta risposto al client, non ricorda nulla del client
SESSIONI E AUTENTICAZIONE
• PHP risolve il problema della memoria del protocollo con un
piccolo trucchetto, l‟uso delle sessioni.
• Questa tecnica consente di conservare certe informazioni tra
una richiesta dell‟utente e la successiva.
SESSIONI E AUTENTICAZIONE
• I dati tra client e server si possono scambiare usando due
modalità: GET o POST
• GET: permette di scambiare dati usando l‟url come mezzo di
trasporto delle informazioni
• Es: www.baubau-miciomicio.it?nome=enzo&cognomen=iacchetti
• POST: permette di scambiare i dati incapsulando le
informazioni all‟interno dei pacchetti inviati, in particolare
dopo l‟HTTP Header ed una linea blank
POST /PATH/SCRIPT.CGI HTTP/1.0
FROM: XYZ@ADLAJDL.COM
USER-AGENT: HTTPTOOL/1.0
CONTENT-TYPE: APPLICATION/X-WWW-FORM-
URLENCODED
CONTENT-LENGTH: 32
NOME=ENZO&COGNOME=IACCHETTI
SESSIONI E AUTENTICAZIONE
• La prima richiesta fatta al Server genera una nuova sessione
• Una sessione è una serie di richieste HTTP consecutive fatte dal
client al server da un singolo utente (verso una sola
applicazione)
• Timeout della sessione
• Una nuova sessione mi genera un nuovo ID di sessione
SESSIONI E AUTENTICAZIONE
• Riscrittura dell’URL: Posso prolungare una sessione
semplicemente aggiungendo l‟ID della sessione come
parametro GET o POST della richiesta HTTP ()
GET <a href=“www.ciao.it?session-id=abxcqw3q342423sfsdf”>”
POST <form action=“” method=“POST”>
<input type=“hidden” name=“session-id”
value=“abxcqw3q342423sfsdf” />
E poi devo aggiornare JS link etc…. SCOMODA come soluzione
SESSIONI E AUTENTICAZIONE: COOKIE
• Alternativi alle sessioni c‟è il cookie
• Il cookie è semplicemente un file generato dal server che il
client dopo la prima richieste può accettare o meno di
depositare nel proprio archivio di cookie del browser.
• Come I biscotti della fortuna cinesi contengono al loro interno
solo un piccolo quantitative di informazioni.
• Di regola solo Id della sessione e sconsigliato usare come appoggio per
dati utili alla sessione o all‟applicazione specifica (questo perchè I dati
utili alla sessione molto probabilmente sono dati sensibili e di proprietà
esclusiva del server)
SESSIONI E AUTENTICAZIONE: SESSION
• Per iniziare una nuova sessione
• session_start(); //all‟inizio della pagina PHP
• var_dump($_SESSION); //visualizzare I dati di session
• $_SESSION array globale da popolare;
• Esempio in classe…
• Test.php
SESSIONI E AUTENTICAZIONE: ARRAY
GLOBALI
• GET: array associativo globale contenente I parametri gestiti in
GET
• POST: array associativo globale contenente i parametri gesti in
POST
• $_REQUEST: array associativo globale contiene entrambi Get e
Post, attenzione al nome delle chiavi se sovrapposte tra i due
array get e post, potrebbe estrarre uno dei due valori
casualmente
INTERAZIONE CON I DATABASE: MYSQLI
• Interfaccia ad oggetti MySQLi è incorporata in PHP;
• Abilitare interfaccia in php.ini;
• Istanziare le classi con
oggetto = new mysqli(server DB,user, password, db);
• Query con metodo query()
risultato = oggetto->query(stringa contenente query)
• Chiusura connessione al db con metodo close()
oggetto->close() [boolean];
INTERAZIONE CON I DATABASE: MYSQLI
• Prelevare i dati con fetch_assoc():
while($tupla=risultato->fetch_assoc()){
echo $tuple[„field_1‟].” campo 2 “. $tuple[„field_2‟].”<br />”;}
FULL-TEXT SEARCH WITH MYSQL DB
• Un database permette di recuperare agevolmente i dati
conservati al suo interno partendo da una chiave o un valore
presente in un campo
• Non offre grandi quando vogliamo cercare testo libero
• Soluzione possibile con l‟uso di istruzioni come LIKE
• ES: SELECT * FROM LIBRI WHERE NOME LIKE „Il codice%‟ LIMIT 5;
• Soluzione efficace ma non efficiente
FULL-TEXT SEARCH WITH MYSQL DB
• Mancano meccanismi per valutare in base alla richiesta un
ranking di risultati in base all‟attinenza.
• Velocità di ricerca specialmente se campo non è indicizzato
• MySql mette a disposizione da pochi anni una sintassi utile per
effettuare query di ricerca simili ai motori di ricerca tradizionali
presenti nel web (google, bing).
• Si deve costruire un indice nuovo per ogni campo di interesse
per la ricerca (solo campi di testo VARCHAR, CHAR etc..)
• Sfruttando tale indice si ottiene un incremento di un fattore 10
in velocità di esecuzione della query rispetto ad una like
FULL-TEXT SEARCH WITH MYSQL DB
• Il motore delle tabelle in cui effettuare una ricerca di tipo FULL-
TEXT deve essere di tipo MyIsam;
• ALTER TABLE nomeTabella ADD FULLTEXT(nome,autore,genere,
...);
SELECT * FROM LIBRI WHERE MATCH(nome,autore,genere) AGAINST(„Il codice');
• Per ordinare i risultati in base all‟attinenza:
SELECT *, MATCH(nome,autore,genere) AGAINST(„Il codice') as ranking FROM LIBRI
WHERE MATCH(nome,autore,genere) AGAINST(„Il codice') ORDER BY ranking DESC;
• Provate anche la versione con Boolean mode

Weitere ähnliche Inhalte

Ähnlich wie Php concetti chiave di base

ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheAndrea Dottor
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseMarco Pozzan
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Codemotion
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech LabUgo Landini
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...azuredayit
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleMarco Breveglieri
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioniguestbe916c
 
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Fulvio Corno
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBDavide Benvegnù
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...MariaDB plc
 
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...Fulvio Corno
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL ServerGianluca Hotz
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteGiuseppe Toto
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisGianluca Sartori
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15Andrea Cardinali
 

Ähnlich wie Php concetti chiave di base (20)

ASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cacheASP.NET, ottimizziamo con la cache
ASP.NET, ottimizziamo con la cache
 
Quanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless SynapseQuanto mi costa SQL Pool Serverless Synapse
Quanto mi costa SQL Pool Serverless Synapse
 
Net core base
Net core baseNet core base
Net core base
 
Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015Infinispan codemotion - Codemotion Rome 2015
Infinispan codemotion - Codemotion Rome 2015
 
JBoss Data Grid Tech Lab
JBoss Data Grid Tech LabJBoss Data Grid Tech Lab
JBoss Data Grid Tech Lab
 
Data grid
Data gridData grid
Data grid
 
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
Azure Day Rome Reloaded 2019 - Ingestion nel datalake passando tramite API Ma...
 
REST API fantastiche e dove trovarle
REST API fantastiche e dove trovarleREST API fantastiche e dove trovarle
REST API fantastiche e dove trovarle
 
Web api 2.0
Web api 2.0Web api 2.0
Web api 2.0
 
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
Laboratorio Di  Basi Di  Dati 10  P H P    Cookie E SessioniLaboratorio Di  Basi Di  Dati 10  P H P    Cookie E Sessioni
Laboratorio Di Basi Di Dati 10 P H P Cookie E Sessioni
 
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
Componenti dello stack LAMP - PHP, il linguaggio, l'installazione - MySQL, in...
 
Azure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDBAzure No-Sql approach: DocumentDB
Azure No-Sql approach: DocumentDB
 
Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...Come l’Open Source può essere alla base di un business di successo: il caso H...
Come l’Open Source può essere alla base di un business di successo: il caso H...
 
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...
 
Best Practices on SQL Server
Best Practices on SQL ServerBest Practices on SQL Server
Best Practices on SQL Server
 
Presentazione bd2
Presentazione bd2Presentazione bd2
Presentazione bd2
 
Asp.Net MVC 5
Asp.Net MVC 5Asp.Net MVC 5
Asp.Net MVC 5
 
Sencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parteSencha touch: Sviluppare un'app - 4° parte
Sencha touch: Sviluppare un'app - 4° parte
 
SQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload AnalysisSQL Server Benchmarking, Baselining and Workload Analysis
SQL Server Benchmarking, Baselining and Workload Analysis
 
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15WordPress, migrazioni e re-branding: don't try this at home. #wmf15
WordPress, migrazioni e re-branding: don't try this at home. #wmf15
 

Php concetti chiave di base

  • 1. PHP CONCETTI CHIAVE DI BASE Ing. Walter Liguori walter.liguori@mwsistemi.it
  • 2. SESSIONI E AUTENTICAZIONE • PHP ostaggio di HTTP? In parte si.. • PHP dipende ancora oggi dalle funzionalità CGI (common gateway interfacce) offerte dal protocollo HTTP (FAST-CGI). • HTTP è ancora senza stato (protocollo STATE-LESS, senza memoria) • Il server una volta risposto al client, non ricorda nulla del client
  • 3. SESSIONI E AUTENTICAZIONE • PHP risolve il problema della memoria del protocollo con un piccolo trucchetto, l‟uso delle sessioni. • Questa tecnica consente di conservare certe informazioni tra una richiesta dell‟utente e la successiva.
  • 4. SESSIONI E AUTENTICAZIONE • I dati tra client e server si possono scambiare usando due modalità: GET o POST • GET: permette di scambiare dati usando l‟url come mezzo di trasporto delle informazioni • Es: www.baubau-miciomicio.it?nome=enzo&cognomen=iacchetti • POST: permette di scambiare i dati incapsulando le informazioni all‟interno dei pacchetti inviati, in particolare dopo l‟HTTP Header ed una linea blank
  • 5. POST /PATH/SCRIPT.CGI HTTP/1.0 FROM: XYZ@ADLAJDL.COM USER-AGENT: HTTPTOOL/1.0 CONTENT-TYPE: APPLICATION/X-WWW-FORM- URLENCODED CONTENT-LENGTH: 32 NOME=ENZO&COGNOME=IACCHETTI
  • 6. SESSIONI E AUTENTICAZIONE • La prima richiesta fatta al Server genera una nuova sessione • Una sessione è una serie di richieste HTTP consecutive fatte dal client al server da un singolo utente (verso una sola applicazione) • Timeout della sessione • Una nuova sessione mi genera un nuovo ID di sessione
  • 7. SESSIONI E AUTENTICAZIONE • Riscrittura dell’URL: Posso prolungare una sessione semplicemente aggiungendo l‟ID della sessione come parametro GET o POST della richiesta HTTP () GET <a href=“www.ciao.it?session-id=abxcqw3q342423sfsdf”>” POST <form action=“” method=“POST”> <input type=“hidden” name=“session-id” value=“abxcqw3q342423sfsdf” /> E poi devo aggiornare JS link etc…. SCOMODA come soluzione
  • 8. SESSIONI E AUTENTICAZIONE: COOKIE • Alternativi alle sessioni c‟è il cookie • Il cookie è semplicemente un file generato dal server che il client dopo la prima richieste può accettare o meno di depositare nel proprio archivio di cookie del browser. • Come I biscotti della fortuna cinesi contengono al loro interno solo un piccolo quantitative di informazioni. • Di regola solo Id della sessione e sconsigliato usare come appoggio per dati utili alla sessione o all‟applicazione specifica (questo perchè I dati utili alla sessione molto probabilmente sono dati sensibili e di proprietà esclusiva del server)
  • 9. SESSIONI E AUTENTICAZIONE: SESSION • Per iniziare una nuova sessione • session_start(); //all‟inizio della pagina PHP • var_dump($_SESSION); //visualizzare I dati di session • $_SESSION array globale da popolare; • Esempio in classe… • Test.php
  • 10. SESSIONI E AUTENTICAZIONE: ARRAY GLOBALI • GET: array associativo globale contenente I parametri gestiti in GET • POST: array associativo globale contenente i parametri gesti in POST • $_REQUEST: array associativo globale contiene entrambi Get e Post, attenzione al nome delle chiavi se sovrapposte tra i due array get e post, potrebbe estrarre uno dei due valori casualmente
  • 11. INTERAZIONE CON I DATABASE: MYSQLI • Interfaccia ad oggetti MySQLi è incorporata in PHP; • Abilitare interfaccia in php.ini; • Istanziare le classi con oggetto = new mysqli(server DB,user, password, db); • Query con metodo query() risultato = oggetto->query(stringa contenente query) • Chiusura connessione al db con metodo close() oggetto->close() [boolean];
  • 12. INTERAZIONE CON I DATABASE: MYSQLI • Prelevare i dati con fetch_assoc(): while($tupla=risultato->fetch_assoc()){ echo $tuple[„field_1‟].” campo 2 “. $tuple[„field_2‟].”<br />”;}
  • 13. FULL-TEXT SEARCH WITH MYSQL DB • Un database permette di recuperare agevolmente i dati conservati al suo interno partendo da una chiave o un valore presente in un campo • Non offre grandi quando vogliamo cercare testo libero • Soluzione possibile con l‟uso di istruzioni come LIKE • ES: SELECT * FROM LIBRI WHERE NOME LIKE „Il codice%‟ LIMIT 5; • Soluzione efficace ma non efficiente
  • 14. FULL-TEXT SEARCH WITH MYSQL DB • Mancano meccanismi per valutare in base alla richiesta un ranking di risultati in base all‟attinenza. • Velocità di ricerca specialmente se campo non è indicizzato • MySql mette a disposizione da pochi anni una sintassi utile per effettuare query di ricerca simili ai motori di ricerca tradizionali presenti nel web (google, bing). • Si deve costruire un indice nuovo per ogni campo di interesse per la ricerca (solo campi di testo VARCHAR, CHAR etc..) • Sfruttando tale indice si ottiene un incremento di un fattore 10 in velocità di esecuzione della query rispetto ad una like
  • 15. FULL-TEXT SEARCH WITH MYSQL DB • Il motore delle tabelle in cui effettuare una ricerca di tipo FULL- TEXT deve essere di tipo MyIsam; • ALTER TABLE nomeTabella ADD FULLTEXT(nome,autore,genere, ...); SELECT * FROM LIBRI WHERE MATCH(nome,autore,genere) AGAINST(„Il codice'); • Per ordinare i risultati in base all‟attinenza: SELECT *, MATCH(nome,autore,genere) AGAINST(„Il codice') as ranking FROM LIBRI WHERE MATCH(nome,autore,genere) AGAINST(„Il codice') ORDER BY ranking DESC; • Provate anche la versione con Boolean mode

Hinweis der Redaktion

  1. In informatica Common Gateway Interface (acronimo CGI, in italiano: interfaccia comune, nel senso di standard, per gateway), è una tecnologia standard usata dai web server per interfacciarsi con applicazioni esterne generando contenuti web dinamici.Ogni volta che un client richiede al web server un URL corrispondente ad un documento in puro HTML gli viene restituito un documento statico (come un file di testo); se l&apos;URL corrisponde invece ad un programma CGI, il server lo esegue in tempo reale, generando dinamicamente informazioni per l&apos;utente.Utilizzo [modifica]Il CGI è la prima forma di elaborazione lato server implementata: quando ad un web server arriva la richiesta di un documento CGI (solitamente con estensione .cgi, .exe o .pl) il server esegue ilprogramma richiesto e al termine invia al web browser l&apos;output del programma. Il file CGI è un semplice programma già compilato (codice oggetto) e la risposta viene acquisita attraverso standard output. L&apos;acquisizione delle variabili d&apos;ambiente avviene attraverso passaggio di parametri sulla riga di comando e attraverso apposite librerie.CGI è attualmente usato solo con il protocollo HTTP anche se in futuro potrebbe essere esteso ad altri protocolli. La cartella predefinita degli script CGI è /cgi-bin/ su sistemi IIS, anche se a volte è preferibile modificarla, per evitare i frequenti attacchi dai bot sui file in quella cartella.Linguaggi [modifica]I linguaggi di programmazione usati sono generalmente C/C++ e Perl. Alcuni applicativi utilizzano la tecnologia FastCGI per introdurre nuovi linguaggi di scripting, interpretati e non compilati, come ad esempio PHP. L&apos;altra possibilità è utilizzare librerie, ma variano in base al server web e al sistema operativo utilizzato, diminuendo così la portabilità del software.