• Like
Php concetti chiave di base
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Php concetti chiave di base

  • 656 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
656
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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'URL corrisponde invece ad un programma CGI, il server lo esegue in tempo reale, generando dinamicamente informazioni per l'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'output del programma. Il file CGI è un semplice programma già compilato (codice oggetto) e la risposta viene acquisita attraverso standard output. L'acquisizione delle variabili d'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'altra possibilità è utilizzare librerie, ma variano in base al server web e al sistema operativo utilizzato, diminuendo così la portabilità del software.

Transcript

  • 1. PHP CONCETTI CHIAVE DI BASEIng. Walter Liguoriwalter.liguori@mwsistemi.it
  • 2. SESSIONI E AUTENTICAZIONE• PHP ostaggio di HTTP?In parte si..• PHP dipende ancora oggi dalle funzionalità CGI (commongateway interfacce) offerte dal protocollo HTTP (FAST-CGI).• HTTP è ancora senza stato (protocollo STATE-LESS, senzamemoria)• 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 unpiccolo trucchetto, l‟uso delle sessioni.• Questa tecnica consente di conservare certe informazioni trauna richiesta dell‟utente e la successiva.
  • 4. SESSIONI E AUTENTICAZIONE• I dati tra client e server si possono scambiare usando duemodalità: GET o POST• GET: permette di scambiare dati usando l‟url come mezzo ditrasporto delle informazioni• Es: www.baubau-miciomicio.it?nome=enzo&cognomen=iacchetti• POST: permette di scambiare i dati incapsulando leinformazioni all‟interno dei pacchetti inviati, in particolaredopo l‟HTTP Header ed una linea blank
  • 5. POST /PATH/SCRIPT.CGI HTTP/1.0FROM: XYZ@ADLAJDL.COMUSER-AGENT: HTTPTOOL/1.0CONTENT-TYPE: APPLICATION/X-WWW-FORM-URLENCODEDCONTENT-LENGTH: 32NOME=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 dalclient al server da un singolo utente (verso una solaapplicazione)• Timeout della sessione• Una nuova sessione mi genera un nuovo ID di sessione
  • 7. SESSIONI E AUTENTICAZIONE• Riscrittura dell’URL: Posso prolungare una sessionesemplicemente aggiungendo l‟ID della sessione comeparametro 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 ilclient dopo la prima richieste può accettare o meno didepositare nel proprio archivio di cookie del browser.• Come I biscotti della fortuna cinesi contengono al loro internosolo un piccolo quantitative di informazioni.• Di regola solo Id della sessione e sconsigliato usare come appoggio perdati utili alla sessione o all‟applicazione specifica (questo perchè I datiutili 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: ARRAYGLOBALI• GET: array associativo globale contenente I parametri gestiti inGET• POST: array associativo globale contenente i parametri gesti inPOST• $_REQUEST: array associativo globale contiene entrambi Get ePost, attenzione al nome delle chiavi se sovrapposte tra i duearray get e post, potrebbe estrarre uno dei due valoricasualmente
  • 11. INTERAZIONE CON I DATABASE: MYSQLI• Interfaccia ad oggetti MySQLi è incorporata in PHP;• Abilitare interfaccia in php.ini;• Istanziare le classi conoggetto = 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 daticonservati al suo interno partendo da una chiave o un valorepresente 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 unranking di risultati in base all‟attinenza.• Velocità di ricerca specialmente se campo non è indicizzato• MySql mette a disposizione da pochi anni una sintassi utile pereffettuare query di ricerca simili ai motori di ricerca tradizionalipresenti nel web (google, bing).• Si deve costruire un indice nuovo per ogni campo di interesseper la ricerca (solo campi di testo VARCHAR, CHAR etc..)• Sfruttando tale indice si ottiene un incremento di un fattore 10in 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 LIBRIWHERE MATCH(nome,autore,genere) AGAINST(„Il codice) ORDER BY ranking DESC;• Provate anche la versione con Boolean mode