Corso di Php (base) - Home Page del Laboratorio di Informatica dell

Corso di Php (base)
Massimo Di Paolo
[email protected]
Indice delle lezioni
Php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Introduzione
I concetti di base
Le variabili, i tipi di dato
Operatori di confronto e logici. Espressioni
Struttura di controllo e i cicli
Array
Le Funzioni
Accesso ai file
I Form
Le variabili $_GET, $_POST, $_COOKIES e $_SESSION
Php e MySql
Progetto di sito con le seguenti funzionalità
1.
2.
3.
4.
Upload di file
Paginazione dei risultati
Inviare mail
Criptare i dati con le funzioni md5 e/o sha1
1.1 Php – Un po’ di storia
 Nasce nel 1994, ad opera di Rasmus Lerdorf, come una serie di macro la cui
funzione era quella di facilitare ai programmatori l’amministrazione delle
homepage personali: da questo uso ha origine il suo primo nome  Personal
Home Page.
 È un prodotto Open Source (Codice Aperto) perfettamente integrato con altri due
prodotti simili per filosofia  Apache (Web Server) e MySql (database
relazionale)
 La versione "stabile" attuale è la 5.4.14, rilasciata ad aprile 2013
 Oggi PhP è conosciuto con il nome Pre Hypertext Processor oppure, più
semplicemente, Hypertext PreProcessor
 è un linguaggio completo di scripting;
 può girare praticamente su qualsiasi server Web  Apache, Microsoft IIS, …;
 su qualsiasi sistema operativo  Windows o Unix/Linux, ma anche Mac,
AS/400, Novell, OS/2, …;
 consente di interagire praticamente con qualsiasi tipo di database  SQLite,
MySQL, PostgreSQL, Microsoft Access/SQL Server, Oracle, SyBase, …
1.2 Php – Un po’ di storia
 Php non è l'unico linguaggio di programmazione per il Web
 La sua scelta rispetto ad altri è di tipo soggettivo
 Però vogliamo ricordare che:
1. È il più vecchio (ed ancora usato) linguaggio di programmazione per il Web;
2. È gratis;
3. Ha moltissime librerie di funzioni ormai testate al 100%;
4. Ha la più vasta comunità di sviluppatori che aggiorna continuamente tali
librerie;
5. Tutti i CMS più usati nelle aziende sono scitti in Php e producono file in Php
(vedi Wordpress, Joomla, …)

Microsoft ha intrapreso da qualche anno la stessa politica dei prodotti Open
Source attraverso le versioni Express dei suoi tools di sviluppo ma, come al solito,
non fornisce tutto e soprattutto "le cose in più" (librerie, plugin, …) molto spesso
sono a pagamento.
1.3 Php – Introduzione
 Risorse sul Web
 www.php.net  sito ufficiale della comunità Php (in inglese)
 www.mysql.com  sito ufficiale della comunità MySql (esiste anche una
sezione in lingua italiana in questo sito, ma non è del tutto tradotta)
 www.w3schools.com/php  sito legato al consorzio W3C (in inglese) … c'è
tutto di tutto !!!!
 WAMP e LAMP ?????
 E per il MAC  XAMPP (X= per ogni S.O. – A=Apache – M=MySql – P=PhP –
P=Perl)  ha dei problemi su Windows, conviene usare EasyPhP
 Sistema di sviluppo in locale
 EasyPhp  www.easyph.org
 Editor
 Adobe Dreamweaver  quello che useremo (breve spiegazione)
 NetBeans (scritto in Java per Java e poi esteso anche ad altri linguaggi)
 Visual Studio IDE 2008/2010/2012 con particolari plugin di terze parti (a
pagamento !!!!!)
 Framework
 Zend, CodeIgniter, Yii, …  raccolta di classi e funzioni soprattutto per
interfacce grafiche evolute e accesso ai dati
1.4 Php – Introduzione
 Php: lato server e lato client
 Pagine statiche (Html) e pagine dinamiche (PhP, Asp.net, Jsp, …)
 le pagine dinamiche (Php) sono elaborate dal server web e restituite
all'utente come pagine statiche (Html); al massimo possono contenere
"script" che funzionano lato client (ad esempio in javascript)
 le pagine in Php hanno estensione .php
1.5 Php – Introduzione
 PhP  la sua funzione fondamentale è quella di produrre codice HTML.
 PhP  è però un linguaggio di programmazione lato server
 quindi  abbiamo la possibilità di analizzare cosa è stato richiesto al server
Web
 e  possiamo produrre come risposta codice Html condizionato ai risultati
della richiesta
 In definitiva  abbiamo realizzato il Web dinamico
1.6 Php – Introduzione
 Istallare EasyPhp  il file è nella cartella C:\Temp
 Shortcut sul desktop della cartella /www
 Copia del file index.php da C:\Temp  /www
 Lanciare EasyPhp 
 Click con il pulsante destro sull'icona 
 Dal menù selezionare Configuration  EasyPhp
 Impostare la lingua su Italiano;
 Lasciare la spunta solo sulla terza, quinta e sesta voce
 Premere OK
 Il menù di EasyPhp passa in lingua italiana
 Fare click sulla voce Sito locale  notare indirizzo del sito (127.0.0.1 = localhost)
uguale per tutti e la porta (8080, 8887, …) che può essere diversa da computer a
computer per motivi, prevalentemente, di software istallato.
 Cosa succede se il file index.php lo rinominiamo default.php
2 Php – I concetti di base: la sintassi del linguaggio
 Come fa il Server Web a capire che gli stiamo spedendo codice scritto in PhP ?
 guardando l'estensione del file (.php)  non basta, perché se rinomino un file
.html con .php il Server Web me lo rimanda indietro così come è
 inserendo dei TAG opportuni all'interno della pagina per distinguerlo dal
codice Html:
TAG di apertura  <?php … ?> TAG di chiusura
 nelle versioni precedenti alla 5 si usavano anche:
TAG di apertura  <script language="php" …</script> TAG di chiusura
i cosiddetti TAG BREVI
TAG di apertura  <? … ?> TAG di chiusura
TAG di apertura  <% … %> TAG di chiusura (stile Microsoft Asp)
Sono disabilitati dalla versione 5 ma attivabili nel file php.ini per motivi di
retrocompatibilità.
Usate sempre i primi per i nuovi progetti !!!
2.1 Php – I concetti di base: istruzioni e commenti
 Istruzione (token)  blocco di codice;
 ;  separatore di istruzioni;
 () e/o {}  raggruppamento di istruzioni.
Tutte le istruzioni in Php terminano con il punto e virgola, solo alcune fanno
eccezione: i commenti, le espressioni dentro i cicli condizionali, …, altre che
scopriremo nel corso delle lezioni
2 tipi di commenti in Php
 //  commento su una linea;
 /* … */  commento su più linee.
2.2 Php – I concetti di base: ouptut dei dati
 Echo  output a video
 Print  output a video
 Attenzione alla leggibilità del codice  non basta che gli script php siano scritti
ben formattati, con i commenti, et altro: occorre che anche l'HTML della pagina
risulti ben leggibile perché molti errori si capiscono subito guardando il codice
sorgente della pagina prodotta  carattere di escape \n usato opportunamente
3 Php – Variabili e tipi di dato
 Variabili
 contenitori di informazioni
 iniziano sempre con il carattere $
 Per definirle si possono utilizzare tutti i caratteri dalla a alla z (minuscolo o
maiuscolo), i numeri da 0 a 9 e il carattere speciale _ (underscore);
 sono vietati gli spazi e qualunque altro carattere;
 $a è diversa da $A  le variabili sono di tipo case sensitive;
 le variabili possono essere valorizzate con qualsiasi dato  testo, numeri,
date, valori vero/falso, valori complessi;
 in Php una variabile può essere utilizzata senza dichiararne il tipo prima 
Php è un linguaggio di programmazione fortemente tipizzato (tipizzazione
dinamica): possiamo quindi riferirci ad una variabile direttamente con la sua
valorizzazione;
3.1 Php – Variabili e tipi di dato
 Errori con le Variabili
 Errori di tipo E_NOTICE  sono gli errori meno gravi, la cui visualizzazione
dipende dalle impostazioni nel il file di configurazione php.ini (per default
sono abilitati). Un errore di questo tipo non compromette il buon
funzionamento dello script, che infatti viene eseguito regolarmente.
3.2 Php – Variabili e tipi di dato
 Tipizzazione del linguaggio
 PhP è un linguaggio debolmente tipizzato  al contrario di altri linguaggi di
programmazione (Asp.Net, Jsp, …) non serve indicare di che tipo di dato è la
variabile, basta solo definirla e assegnargli un valore  Php, da questo
valore capisce e assegna il tipo di dato giusto alla variabile
 Questa operazione si chiama CAST ;
 Questo facilita la programmazione … ma è rigoroso dal punto di vista della
logica di programmazione ? La risposta è No.
3.3 Php – Variabili e tipi di dato
 PhP, come accennato in precedenza, è un linguaggio fortemente tipizzato:
 non assegna il Tipo di dato alla variabile ma lo deduce dal valore associato;
 Php gestisce i seguenti tipi di dato,
 String;
 Number;
 Boolean;
 Array;
 Constant;
 Date e Time;
3.4 Php – Variabili e tipi di dato
 String  sequenza di caratteri alfanumerici
 Due sistemi per specificare una stringa  virgolette semplici, virgolette doppie Per
un carattere di base occorrono 8 bit = 1 byte, quindi la dimensione dipende dal
numero di caratteri.
 Per stringhe contenenti già "doppie virgolette" o "virgolette singole"  escape
character (\, \n, \t, \\, \$)
 Per concatenare 2 stringhe usare il "punto"  $stringa 1 . $stringa2 (lo spazio
serve solo a migliorare la leggibilità)
3.5 Php – Variabili e tipi di dato
 Stringhe: espansione delle variabili
 Le stringhe delimitate da doppie possono contenere delle variabili perché
l’interprete Php sa come trattarle. La tecnica si chiama Espansione della
variabile
3.6 Php – Variabili e tipi di dato
 Number  due diversi tipi di numeri: intero e in virgola mobile
 Intero (int)  dipende dal sistema operativo ma, tipicamente, è a 32 bit
possono assumere valori con segno da -2.147.483.648 a +2.147.483.647
zero compreso (da -232 a 232).
 In virgola mobile (float)  su piattaforme a 32 bit si estende da 1.7E-308 a
1.7E+308 (da -264 a 264) con una precisione fino a 14 cifre decimali.
 Per compatibilità supporta anche la parola double.
 Per i numeri interi, quando superano il loro limite vengono, automaticamente
convertiti in virgola mobile
 Funzione var_dump(); per ritornare il tipo di dato numerico;
3.7 Php – Variabili e tipi di dato
 Variabili booleane  come tutti i linguaggi di programmazione, Php utilizza
particolari variabili per mostrare condizioni del tipo vero/falso.
 Se una variabile è TRUE  mostra 1
 Se una varibile è FALSE  mostra niente (blank)
3.8 Php – Variabili e tipi di dato
 COSTANTI  variabile che mantiene immutato il suo valore durante tutta
l'esecuzione dello script in cui è richiamata
 Non hanno il prefisso $ davanti;
 Distinguono tra maiuscole e minuscole ma per convenzione si richiede che
siano scritte solo in maiuscolo;
 Non possiedono operatore di assegnazione (=) ma si utilizza l’istruzione
define
 Se chiamate 2 volte nello stesso script, generano errore
3.9 Php – Variabili e tipi di dato
 Array  è un tipo di dato che contiene una serie di valori, anche diversi nel
tipo.
 Possono essere semplici o di tipo associativo;
 Per vedere come è fatto un array dal punto di vista della struttura basta usare
la funzione print_r(nome_array);
 per vedere il tipo di dati presenti in un array basta usare la funzione
var_dump(nome_array)  utile per array misti;
 ritorneremo a parlare di array dopo i cicli  si esaminano tramite un
particolare ciclo noto come foreach.
3.10 Php – Variabili e tipi di dato
 Conversioni tra tipi di dato
 Diverse funzioni e operazioni necessitano che le variabili siano dello stesso tipo
per ottenere il risultato voluto
 Conversione implicita  effettuato direttamente dal motore di Php
3.11 Php – Variabili e tipi di dato
 Conversioni tra tipi di dato
 Esistono delle funzioni interne a Php (funzioni di sistema) che indicano se una
variabile è di un determinato tipo:

Is_type  richiede un argomento e restituisce un valore booleano;

Settype  richiede due argomenti, la variabile da convertire e il tipo in cui deve essere
convertita, e restituisce una variabile nel tipo richiesto.
3.12 Php – Variabili e tipi di dato
 DATE e TIME altro dato di tipo complesso
 Php è nato su SO Unix, quindi utilizza il timestamp dello stesso per rappresentare
date e ore  una particolare data-ora è misurata in secondi a partire dal
01/01/1970 ed è quindi rappresentata da un numero (le date precedenti sono
rappresentate da numeri negativi.
 I codici di formattazione sono moltissimi, li trovate sul sito ufficiale di Php. Sono
riassunti nella slide successiva.
3.13 Php – Variabilie tipi di dato
Date
Codice
Descrizione
Y
anno su 4 cifre
y
anno su 2 cifre
n
mese numerico (1-12)
m
mese numerico su 2 cifre (01-12)
F
mese testuale ('January' - 'December')
M
mese testuale su 3 lettere ('Jan' - 'Dec')
d
giorno del mese su due cifre (01-31)
j
giorno del mese (1-31)
w
giorno della settimana, numerico (0=dom, 6=sab)
l
giorno della settimana, testuale ('Sunday' - 'Saturday' )
D
giorno della settimana su 3 lettere ('Sun' - 'Sat')
H
ora su due cifre (00-23)
G
ora (0-23)
i
minuti su due cifre (00-59)
s
secondi su due cifre (00-59)
 mySql usa il proprio formato Datatime oltre al Timestamp, quindi salvare le date in
esso è una questione distinta che và verificata con le regole del database.
4 Php – Operatori aritmetici, di confronto e logici
 Operatori aritmetici  sono quelli classici e lavorano con numeri interi e in virgola
mobile. Gli operandi che non sono di questo tipo vengono convertiti in uno di
questi tipi e valutati.
 Operatori confronto  ci permettono, effettuando dei confronti fra valori, di
prendere delle decisioni, cioè di far svolgere al nostro codice determinate
operazioni invece di altre.
 Operatori logici  confrontano i risultati di due espressioni
4.1 Php – Operatori aritmetici
 +  addizione
 -  sottrazione
 *  moltiplicazione
 /  divisione
 %  modulo (resto della divisione)
 Possiedono anche una versione di assegnazione in cui l’operando sinistro è anche
la variabile in cui collocare il risultato:
 +=
 -=
 *=
 /=
 %=
4.2 Php – Operatori di confronto
 Gli operatori confronto sono 7 e sono riportati nella tabella seguente:
==
uguale
!=
Diverso (<>)
=== identico (cioè uguale e dello stesso tipo: ad es. per due variabili di tipo intero)
>
maggiore
>=
maggiore o uguale
<
minore
<=
minore o uguale
4.3 Php – Operatori di confronto
Esempio di confronto tra numeri
 Nel confronto tra numeri non c'è nulla da spiegare a parte il terzo:
 Il risultato è falso perché nonostante le due variabili siano entrambe
valorizzate con il valore 7, una è identificata di tipo INTERO e l'altra di tipo
VIRGOLA MOBILE
$a = 7; $b = 7.0; $c = 4; //assegniamo valori a tre variabili
$a == $b; // vero
$a == $c; // falso
$a === $b; // falso, perché $a è intero mentre $b è float
$a > $c; // vero
$c >= $a; // falso
$c < $a; // vero
$c <= $b; // vero:
4.4 Php – Operatori di confronto
Esempio di confronto tra stringhe
 In questo caso il confronto viene fatto basandosi sull’ordine alfabetico dei caratteri
vale a dire che vengono considerati ‘minori’ i caratteri che ‘vengono prima’
nell’ordine alfabetico:
 ‘a’ è minore di ‘b’, ‘b’ è minore di ‘c’, …
 tutte le lettere minuscole sono ‘maggiori’ delle lettere maiuscole;
 tutte le lettere, maiuscole e minuscole, sono ‘maggiori’ delle cifre da 0 a 9.
$a = 'Mario'; $b = 'Giorgio'; $c = 'Giovanni'; $d = 'antonio'; $e = '4 gatti';
$a < $b; // falso, la 'G' precede la 'M'
$b < $c; // vero, la 'r' ('Gior') precede la 'v' ('Giov')
$d > $a; // vero, la 'a' minuscola è 'maggiore' di qualsiasi lettera maiuscola
$c > $e; // vero, ogni lettera è 'maggiore' di qualsiasi cifra
4.5 Php – Operatori logici
 Gli operatori logici sono 3 e sono riportati nella seguente tabella:
Operatore
Descrizione
Or oppure ||
Se almeno una delle due espressioni è true, ritorna true
altrimenti ritorna false
And oppure &&
Se entrambe le espressioni sono vere, ritorna true
altrimenti ritorna false
Not oppure !
È l’operatore di negazione. Ritorna true quando
l’espressione è falsa e false quando l'espressione è vera
 Ordine di applicazione degli operatori logici:
 Operatore logico 'And'
 Operatore logico 'Or'
 Not (!) può andare dovunque
4.6 Php – Operatori logici
Esempi di uso degli operatori logici
10 > 8 And 7 < 6; // falso, perché la prima condizione è vera ma la seconda è falsa;
10 > 8 && 7 < 6
10 > 8 Or 7 < 6; // vero;
10 > 8 || / < 6
9 > 5 And 5 == 5.0; // vero, entrambe le condizioni sono vere;
9 > 5 And 5 === 5.0; // falso
!9 > 5 // falso
5 Php – Strutture di controllo e cicli
Strutture di controllo
 Strutture di controllo  altro aspetto fondamentale della programmazione
 Rappresenta la possibilità di eseguire operazioni diverse, una o più volte,
valutando determinate condizioni.
5.1 Php – Strutture di controllo e cicli
Strutture di controllo
 L'istruzione If è una di questa e ci permette di eseguire o non eseguire certe
porzioni di codice. La sua struttura completa è:
If (<condizione>) {
<codice>
}
[elseIf {
}
La presenza di parentesi [ … ] indica che il
codice è opzionale
…
else {
}]
Appena è verificata una delle condizioni, se ne esiste più di una, esce dall'If
5.2 Php – Strutture di controllo e cicli
Strutture di controllo
 Operatore ternario  è una forma sintetica di If … else, permette di risparmiare
codice
 $risultato = (condizione da verificare) ? ‘valore per true’ : ‘valore per false’;
5.3 Php – Strutture di controllo e cicli
Strutture di controllo
 L'istruzione switch può essere utilizzata come alternativa alla if per selezionare
opzioni da un elenco di possibilità quando sono molte  rende il codice più
compatto
switch (<condizione>) {
case (<valore 1>):
<codice>
[break; o exit / die;]
case (<valore 2>):
<codice>
[break; o exit / die;]
......................
default:
<codice>;
[break; o exit / die;]
}
5.4 Php – Strutture di controllo e cicli
Strutture di controllo
 L’istruzione switch nel linguaggio Php, al contrario di altri linguaggi, può
esaminare anche etichette non numeriche
 Con switch il codice prosegue anche dopo che la condizione è verificata  per
uscire dal ciclo usare l’istruzione break che interrompe il ciclo e prosegue
nell’esecuzione di ciò che è scritto nella pagina .php
 Nel caso si presentasse una condizione in cui si deve ignorare tutto il codice
scritto dopo switch , usare le istruzioni exit oppure die che interrompono
completamente l’esecuzione della pagina, qualunque cosa scritta dopo il ciclo.
5.5 Php – Strutture di controllo e cicli
Cicli
 Presenti in tutti i linguaggi di programmazione, ci permettono di eseguire più volte
la stessa operazione su i dati con condizioni ben precise.
 Sono di 3 tipi:
 Ciclo WHILE
 Ciclo DO WHILE (variante del precedente)
 Ciclo FOR
5.6 Php – Strutture di controllo e cicli
Cicli  WHILE
 WHILE  Nella sua forma generale è:
$variabile=inizializzazione_valore_variabile;
While ($variabile "operatore_di_confronto" valore) {
<codice>
incremento_valore_variabile
}
 È una specie di If ripetuto più volte
 Il ciclo non ci permette di definire l'intervallo di validità della variabile quindi 
 Il valore viene inizializzato prima del ciclo;
 Il valore viene incrementato durante il ciclo.
 Il ciclo termina quando la condizione fra parentesi () diventa false
 Il ciclo potrebbe non essere mai eseguito se la condizione è false fin
dall'inizio
5.7 Php – Strutture di controllo e cicli
Cicli  DO … WHILE
 DO … WHILE  Nella sua forma generale è:
$variabile=inizializzazione_valore_variabile;
do {
<codice>
}
while ($variabile "operatore_di_confronto" valore)
 Si differenzia dal precedente perché, anche se non è mai verificata la
condizione tra parentesi, mi fa vedere il valore che assume la variabile al
termine del ciclo.
5.0 Php – Strutture di controllo e cicli
Cicli  FOR
 È quello più usato e la sua forma generica è la seguente:
codice ….
for (valore_iniziale; valore_finale; incremento/decremento) {
risultato
}
codice …
For  parola chiave
( …. )  istruzioni per definire il ciclo (step)
 la prima è eseguita una sola volta;
 la terza ad ogni step
 la seconda è valutata prima di ogni step. Quando risulta false, il ciclo termina
e il controllo passa all'istruzione immediatamente dopo il ciclo for
{ …. }  istruzioni ripetute per ogni step
5.9 Php – Strutture di controllo e cicli
Cicli  FOR
 Attenzione a non generare un ciclo infinito (loop), in cui il ciclo non raggiunge mai
una via d’uscita. In questo caso, infatti, lo script rieseguirebbe il nostro ciclo
all’infinito.
 In alcuni casi, un errore di questo genere potrebbe costringerci a forzare la
chiusura del programma o addirittura a eseguire il restart del Server Web anche se
in PhP, questo di solito non succede, in quanto gli script PHP hanno un limite di
tempo per la loro esecuzione, oltre il quale si arrestano (30 sec) e che si imposta
nel file php.ini.
6 Php – Array
Array
 Abbiamo già introdotto gli array come "tipo di dato complesso che contiene più
valori di un'unica variabile"
 Gli array sono di 2 tipi:
 Numerico  si accede al valore (elemento) attraverso l'indice o posizione (da
0 a N-1 se N è il numero di elementi dell'array) dell'elemento stesso ;
 associativi.  oltre che attraverso l'indice, si può accedere al valore
(elemento) attraverso una "chiave" associata all'elemento stesso.
 Possiamo esaminare il contenuto dei dati in diversi modi come esposto
nell'esempio citato. In particolare introduciamo un nuovo tipo di ciclo ideato
apposta per gli array: FOREACH
Foreach (array as nome_variabile) {
codice
}
7 Php – Funzioni
Definizione
 Una funzione è un insieme di istruzioni che hanno lo scopo di eseguire
determinate operazioni.
 La praticità delle funzioni sta nel fatto che ci consentono di non dover
riscrivere tutto il codice ogni volta che abbiamo la necessità di eseguire
quelle operazioni comuni: ci basta infatti richiamare l'apposita funzione,
fornendole eventuali parametri per la sua esecuzione.
 Le funzioni possono essere interne a Php oppure definite dall'utente. In
entrambi i casi, il modo di definirle e utilizzarle è lo stesso:
function nome_funzione([p1,p2,…,pN]) {
<codice>
return $risultato
}
nome_funzione ([p1,p2,…,pN])  se non ritorna alcun valore
$variabile = nome_funzione([p1,p2,…,pN])  se ritorna un valore;
dove p1,…, pN sono i parametri. Il fatto che siano presentati tra
parentesi indica che sono opzionali
7.1 Php – Funzioni
Funzioni definite dall'utente
 I parametri scritti fra "parentesi tonde" sono le variabili passate alla funzione:
 possono essere passati per valore (non possono essere cambiati) o per
riferimento (possono essere cambiati)
 È possibile assegnare un valore predefinito ad un parametro di modo che, in
assenza di valore, venga utilizzato questo.
 È possibile passare anche un array come parametro.
 Le funzioni possono eseguire solo delle operazioni oppure restituire un valore  in
questo caso bisogna inserire l’istruzione return;
7.2 Php – Funzioni
Funzioni definite dall'utente
 Porzioni di codice scritte dall'utente per:
 utilizzarle in più punti del programma;
 per rendere il codice più leggibile e quindi manutenibile
 il modo migliore è usare l'istruzione include
 Possono essere chiamate con una qualsiasi combinazione di caratteri alfanumerici
e l’undescore ma non con un numero;
 È sconsigliato l’uso di caratteri speciali perché creano problemi con alcuni S.O.
7.3 Php – Funzioni
Funzioni definite dall'utente
 È possibile realizzare funzioni che non mostrano solo il risultato a video a seconda
dell'input ma eseguono una o più azioni e ne mostrano il risultato.
 Esempio di funzione (a 2 parametri) che ritorna un risultato:
function nome_funzione(parametro1, parametro2)
{
<codice>
return $variabile;
}
 Per richiamarla scrivo:
$parametro1=valore1;
$parametro2=valore2;
$risultato=nome_funzione (parametro1,parametro2);
echo $risultato;
7.4 Php – Funzioni
Include e Require
 Sono 2 istruzioni che permettono di includere file esterni, ovvero copiare il loro
contenuto completo dentro il file che lo richiede
 Sintassi:
include “percorso_file/nome_file“; oppure include (‘‘percorso_file/nome_file“);
require “percorso_file/nome_file“; oppure require (‘‘percorso_file/nome_file“);
 I due comandi producono il medesimo risultato. Unica differenza consiste nella
gestione di eventuali errori: nel caso in cui il file da includere non si
esiste, include() genererà un errore di tipo warning (non blocca l’esecuzione dello
script) mentre require() genererà un errore di tipo fatal error (blocca di fatto
l'esecuzione dello script).
 E' da segnalare l'esistenza di due varianti, include_once e require_once. La loro
funzione e sintassi è identica alle precedenti con l'unica differenza che prima di
includere il file verificano che questo non sia già stato precedentemente incluso
nella pagina: in questo caso non fanno nulla.
7.5 Php – Funzioni
Funzioni interne generiche
 Sono funzioni che agiscono sulle variabili in generale per verificarne un
particolare attributo (tipicamente tipo, stato e valore) ritornando True o
False a seconda del caso
 Is_numeric($valore)
 Is_bool($valore)
 Is_null($valore)
Meritano una menzione particolare
 empty ($valore)
 Isset($valore)
 Per settare un tipo
 Settype($valore,tipo) dove tipo è passato come stringa tra apici o
doppie virgolette
7.6 Php – Funzioni
Funzioni interne per stringhe – parte 1
 Sono la classe di funzioni più numerose interne a PhP ed altre ancora possono
essere costruite dall'utente con una loro combinazione. Vediamo le più usate,
rimandando alla documentazione in linea (www.php.net) per tutte le altre

strlen()  restituisce la lunghezza di una stringa, spazi compresi;

trim(), ltrim(), rtrim()  rispettivamente eliminano spazi vuoti a destra e sinistra, solo
sinistra e solo a destra; strlen() applicata prima o dopo di essa produce risultati diversi;

strtolower(), strtoupper()  trasforma una stringa rispettivamente tutto in minuscolo o
tutto in maiuscolo;

substr()  estrae una stringa da un'altra stringa;

strpos()  trova la posizione di una stringa all'interno di un'altra  ritorna un numero

str_replace()  sostituisce una stringa dentro un'altra o anche un carattere dentro un
altro
7.7 Php – Funzioni
Funzioni interne per stringhe – parte 2

htmlspecialchars ()  converte caratteri speciali <,>,& e " nell'equivalente HTML;

addslashes/stripslashes  sostituiscono rispettivamente "l'apostrofo" con "\'" e
viceversa. Molto utile nel caso delle query quando sono presneti stringhe di testo con
apostrofi all’interno (esempio L’Aquila);

explode()  trasforma una stringa in un array. Accetta due parametri obbligatori:

il carattere separatore nella stringa;

la stringa;
Possiede la sua inversa, implode(), come funzione degli array.
7.8 Php – Funzioni
Funzioni interne per i Numeri – parte 1
Per manipolare i numeri occorre anzitutto assicurarci che questi siano tali. tre sono le
funzioni di controllo (ritornano true o false):

is_numeric(): accetta come parametro una variabile di qualsiasi tipo e verifica se è un numero
(intero, decimale o negativo). può essere utilizzata anche con stringhe contenenti solo numeri;

is_int(): accetta come parametro una variabile di qualsiasi tipo e verifica se è un numero intero.
può essere utilizzata anche con stringhe contenenti solo numeri;

is_float(): accetta come parametro una variabile di qualsiasi tipo e verifica se è un numero con
decimali. Nel caso di un numero interno, tale funzione ritorna false.
7.9 Php – Funzioni
Funzioni interne per i Numeri – parte 2

intval(): fondamentale soprattutto nell'interazione con i database, trasforma qualsiasi tipo di
variabile in un intero 

se si tratta di un numero decimale lo arrotonda a intero;

se si tratta di un numero negativo lo trasforma in positivo;

se si tratta di altro lo trasforma in 0 (zero).
È utilizzata soprattutto nell'ambito delle query su MySql  se occorre eseguire una query su
un campo numerico e di tipo intero di MySql, tale funzione ci garantisce che il parametro
immesso nella query sarà effettivamente un intero.

max() e min(): restituiscono un massimo e un minimo di una serie di valori numerici contenuti
dentro variabili singole o array. Le stringhe coinvolte in tale funzioni assumeranno come valore
0 (zero).
7.10 Php – Funzioni
Funzioni interne per i Numeri – parte 3

rand(): genera numeri casuali tra val1 e val2;

ceil(), floor(), round(): arrotondamento dei numeri in virgola mobili in interi.

ceil()  arrotonda per eccesso;

floor()  arrotonda per difetto;

round()  per difetto o per eccesso a seconda delle cifre scartate. Possiede 3 parametri
di cui:

il primo è obbligatorio e rappresenta il numero da arrotondare;

il secondo è facoltativo e rappresenta il numero di cifre da mantenere dopo la
virgola (default = 0);

il terzo è facoltativo e gestisce l'arrotondamento dell'ultima cifra nel caso questa sia
pari a 5  il valore è espresso tramite delle costanti (PHP_ROUND_HALF_UP e
PHP_ROUND_HALF_DOWN)
7.11 Php – Funzioni
Funzioni interne per i Numeri – parte 4

number_format() formatta un numero e restituisce una stringa che non è più utile per
operazioni matematiche  in pratica il suo uso è solo estetico, di stampa a video.
Accetta 4 parametri ma solo a coppie di due (2):

La prima coppia indica il numero da formattare e i numero di decimali (omesso corrisponde
a nessun decimale e la stringa risultante rappresenta un numero intero);

Il terzo indica il separatore tra parte intera e decimale (default = il punto);

Il quarto il separatore delle migliaia (default = la virgola)
7.12 Php – Funzioni
Funzioni interne per Array
 Visto che abbiamo appena parlato di Array, cominciamo con esse.

count(array)  ritorna il numero di elementi di un array;

array_reverse(array)  inverte gli elementi di un array. Ha un secondo parametro di tipo
booleano: se vogliamo mantenere l'associazione originale chiave-valore dobbiamo
impostarlo su true

sort()  ordina in maniera crescente (array semplici);

rsort()  ordina in maniera decrescente (array semplici);

ksort()  come sort() ma secondo le chiavi (array associativi);

krsort()  come rsort() ma secondo le chiavi (array associativi);

asort()  come sort() ma secondo i valori (array associativi);

arsort()  come rsort() ma secondo i valori (array associativi);

array_search()  cerca un valore in un array, se lo trova mostra la chiave altrimenti
ritorna False;

in_array()  cerca un valore in un array, se lo trova ritorna True altrimenti False

end()  punta all'ultimo elemento dell'array

implode()  trasforma un array in un stringa
7.13 Php – Funzioni
Funzioni interne per Date
 time()  restituisce la data in formato unix timestamp. È un numero intero
rappresentante i secondi intercorsi dal 1 gennaio 1970 al momento attuale. Valori
precedenti sono espressi come numeri negativi.
 date()  restituisce la data nel formato desiderato e, quindi, è impiegata,
prevalentemente, solo ai fini di visualizzazione della data. Accetta due parametri: il
primo è una stringa (il formato di visualizzazione); il secondo, opzionale, è il
timestamp (default = timestamp attuale  la data attuale);
 mktime(par1,par2,par3,par4,par5,par6)
(dove
da
par1
a
par6
sono
rispettivamente ore, minuti, secondi, giorno, mese e anno. L'assenza di uno di questi
genera errore)  serve ad impostare il timestamp di una data passata o futura.
8 Php – Accesso ai file (parte 1)
 Php, dalla versione 5, offre la possibilità di accedere ai file esterni.
 Il primo gruppo di istruzioni permette la manipolazione dei file

file_exists(nome_file)  verifica se il file esiste  ritorna True/False

file_get_contents(nome_file)  carica un file in una stringa e ne fa l’output a video.

file(nome_file)  legge rigo per rigo di un file restituendo un array composto da tanti
elementi quante sono le righe del file in oggetto;

filesize(nome_file)  ritorna il numero di caratteri del file;

copy(file_origine,file_destinazione)  copia un file in un altro file  ritorna True/False;

rename(file_origine, file_destinazione)  rinomina un file  ritorna True/False;

unlink(nome_file)  cancella il file  ritorna True/False.
8.1 Php – Accesso ai file (parte 2)
Il secondo gruppo di istruzioni permette la scrittura/lettura dei file

fopen ($filename, $mode, [,]) apre un file con diverse modalità. Se l’apertura riesce
restituisce l’handle del file (un numero intero > 0 diverso per ogni file che si apre) altrimenti
restituisce False:

r  apre il file in sola lettura. Se il file non esiste, dà un errore di tipo Warning;

r+  apre il file in lettura e scrittura . Se il file non esiste, dà un errore di tipo Warning;

w  apre il file in sola scrittura cancellandone il contenuto. Se il file non esiste, tenta di crearlo;

w+  apre il lettura e scrittura cancellandone il contenuto esistente. Se il file non esiste, tenta di
crearlo.


a  apre il file modalità scrittura di tipo append . Se il file non esiste tenta di crearlo;

a+  apre il file in modalità lettura e scrittura di tipo append . Se il file non esiste tenta di crearlo
fwrite ($filename, $testo_da_scrivere [, $lunghezza_testo_da_scrivere)  scrive una stringa in
un file. Restituisce il numero di byte scritti oppure False generando un errore di tipo Warning.

fclose($file)  chiude il file  chiudere sempre i file per non lasciarli appesi in memoria
9 Php – I FORM
 Sono presenti in tutti i siti Web
 In genere interagiscono con l'utente attraverso l'uso di controlli caricati
dinamicamente da codice Php che attinge i dati da un qualsiasi contenitore (ad
esempio un database).
 Tre cose dobbiamo vedere: i controlli, il loro caricamento dinamico e l'invio dei dati
immessi all'utente o sotto forma di pagina di riepilogo oppure via mail
 Sono delimitati dal TAG <form> … </form> che possiede 2 attributi fondamentali
che ne caratterizzano il comportamento:
 Action  una volta riempito il form con i dati, quale pagina li dovrà elaborare
e farne l'uso per cui il form è stato progettato ?
 Method  con quale metodo devono essere spediti i dati da una pagina
all'altra ?
10 Php – Le variabili $_GET, $_POST
Php fornisce 4 variabili globali di sistema per il passaggio dei dati da una pagina
all'altra oppure per memorizzare informazioni importanti per l'utente:
 $_GET  spedisce in chiaro le informazioni e queste si possono leggere nella URL
della pagina. È consigliato solo nel caso di informazioni non sensibili. Questa
tecnica è usata nei link per inviare informazioni anche complesse da una pagina
all'altra: si chiama querystring..

Le informazioni viaggiano associate ad una variabile nella forma var1=val1;

Più coppie di informazioni sono separate dal simbolo &  var1=val1&var2=val2&….
 $_POST  è quella più usata con i FORM Html. È più discreta, i valori viaggiano
nascosti alla vista degli utenti.
 Il ciclo di vita di queste variabili è limitato alla pagina .php: se si passa in una
pagina dove non sono richiamate, vanno perse.
10.1 Php – Le variabili $_COOKIE e $_SESSION

$_COOKIE  scrive le informazioni in un file. Il ciclo di vita di questa variabile è stabilito da chi
scrive il codice, ma l'utente può anche ridurlo a 0 cancellando periodicamente i cookies tramite
qualche opzione del browser .

setcookie(nome_cookie,
valore_assegnato_cookie,
durata_cookie) 
l’ultimo
parametro
rappresenta un caso di utilizzo del timestamp tramite la funzione time().

Per i cookies in Firefox guardare in Strumenti  Opzioni  Privacy  sezione Cronologia

$_SESSION  a differenza dei cookie, le sessioni non scrivono nulla sul computer del utente,
ma operano sul server web creando degli specifici files dove vengono salvati alcuni dati
importanti relativamente alla sessione di navigazione del nostro utente;

una volta che la sessione è terminata il file con i dati della sessione stessa verrà eliminato;

una sessione termina nel momento in cui l'utente chiude il browser (o in un diverso
momento eventualmente specificato nelle impostazioni del server o nel codice
dell'applicazione).

session_star();  inizializza la sessione (va richiamata in tutte le pagine)

$_SESSION[‘nome_variabile_di_sessione’];  definisco la variabile di sessione

unset($_SESSION[‘nome_variabile_di_sessione’);  cancello la variabile di sessione

session_unset();  cancello tutte le variabili di sessione

session_destroy();  distruggo tutte le sessioni rimaste appese, se esistono
11 Php e MySql
 In questa sezione conclusiva vedremo insieme come è possibile far interagire le
nostre pagine PHP con i database MySql.
 Ricordiamo che PHP è in grado di connettersi a quasi tutti database server
presenti sul mercato (PostgreSql, Oracle, Microsoft Access & Microsoft Sql Server,
Sybase, ...) anche se MySql è quello con cui interagisce nativamente.
 Tre librerie sono a disposizione:

mysql_based  la prima realizzata, utilizzata nella programmazione procedurale
(utilizzabile solo con MySql)

mysqli_based  la seconda uscita, utilizzata nella programmazione ad oggetti ma, per
alcune sue funzionalità, anche in quella procedurale (utilizzabile solo con MySql)

PDO (Php Data Object) l’ultima uscita (dalla versione di Php 5.1 in poi) e utilizzabile solo
con la programmazione orientata agli oggetti ma con tutti i database.
 Nel corso base vedremo solo quella mysql_based
11.1 Php e MySql
 Le istruzioni per far lavorare Php con MySql sono in tutto 4:
 mysql_connect  per connettersi al server di database
 mysql_select _db  per connettersi al database prescelto
 mysql_query  per eseguire query di selezione, di inserimento, di
aggiornamento e di cancellazione.

mysql_query possiede dei metodi (azioni) per gestire le query di selezione
 mysql_close  per chiudere la connessione al server. È importante acquisire
una prima regola fondamentale: non lasciare mai connessioni aperte. Una
connessione si apre (idealmente) in testa alla pagina e si chiude (idealmente)
in fondo alla pagina, quando non serve più.
 Le prime due istruzioni, dato il loro ripetersi in ogni pagina .php del sito, conviene
inserirle in un file esterno da richiamare tramite l’istruzione
include (‘nome_file’);
11.2 Php e MySql: mysql_connect
 Sintassi
$variabile = mysql_connect(server, utente, password);
 server  nome o indirizzo IP del server di database. In locale è ‘localhost’ oppure
127.0.0.1
 utente  nome dell’utente abilitato nel server di database. Il default è ‘stringa
vuota’ o root;
 password  password dell’utente. Il default è ‘stringa vuota’
 Esempio di connessione:
$con_db = mysql_connect(‘127.0.0.1’, ‘root’, ‘’) or die (‘Errore nella connessione al server’);
11.3 Php e MySql: mysql_select_db
 Sintassi
$variabile = mysql_select_db(database, server);
 database  nome del database a cui connettersi;
 server  nome della connessione al server.
 Esempio di selezione (connessione) ad un database:
$con_db = mysql_connect(‘127.0.0.1’, ‘root’, ‘’) or die (‘Errore nella connessione al server’);
$sel_db = mysql_select_db(‘videoteca’, $con_db);
11.4 Php e MySql: esempio di file da includere
 Nome del file  connessione.php
 Listato:
<?php
$a_capo = ‘<br />\n’;
$host=‘254.197.31.44';
$database=‘prova';
$username=‘pippo';
$password=‘pluto';
// Connessione al server
$con_db = mysql_connect($host,$username,$password) or die ("Server $host non trovato $a_capo");
// Seleziono il DB
$sel_db = mysql_select_db($database,$con_db) or die ("Impossibile accedere al database $database $a_capo");
?>
11.5 Php e MySql: mysql_close
 Sintassi
mysql_close(server);
 server  nome della connessione al server.
 Esempio di sconnessione ad un server di database:
mysql_close($con_db);
11.6 Php e MySql: esecuzione di query (parte 1)
 Sintassi
$variabile = mysql_query("sintassi Sql", "server");
 Sintassi Sql  SELECT … FROM … INNER JOIN oppure
INSERT INTO tabella …. Oppure
UPDATE tabella SET ……
 server  nome della connessione al server.
 Esempio di query di selezione:
$mio_sql = "SELECT * FROM nome_tabella WHERE campoX = valoreX";
$ris = mysql_query($mio_sql, con_db) or die ("Errore nella query");
 A questo punto mysql_query possiede dei metodi (azioni) per esaminare il risultato
della query e mostrare i dati a video
11.7 Php e MySql: query di selezione
 Esempio di query di selezione:
$mio_sql = "SELECT * FROM nome_tabella […];
$ris = mysql_query($mio_sql, con_db) or die ("Errore nella query");
 4 metodi per esaminare il risultato della query:

mysql_num_rows($risultato_query);  ritorna il numero di record della query;

mysql_fetch_row()  recupera il contenuto dei records trovati restituendo una array
semplice contenente i valori di ogni campo che possiamo poi richiamare specificando il
relativo indice nella matrice dell’array;

mysql_fetch_assoc()  alternativo al precedente restituisce una array contenente i valori
di ogni campo riscontrato nel recordset che potremo poi richiamare specificando il
relativo nome del campo nella matrice dell’array

mysql_fetch_array()  alternativo ai due precedenti, supporta indistintamente entrambe
le tecniche di chiamata  è quello più usato per la sua flessibilità

Per richiamare i dati si usa il ciclo While { «condizione»} dove mysql_fetch_X
include già l’incremento della variabile.
11.8 Php e MySql: query di inserimento, modifica e cancellazione
 Conosciute anche con il nome di QUERY DI COMANDO
 Sintassi:
$variabile = mysql_query("sintassi Sql", "server");
 sintassi Sql  INSERT INTO … oppure UPDATE … oppure DELETE
 server  nome della connessione al server.
 Esempio di query di comando:
$mio_sql = "UPDATE nome_tabella SET campo1 = valore1 ";
$ris = mysql_query($mio_sql, con_db) or die ("Errore nella query");
12.1 Php – Upload di file (parte 1)
 Altra operazione molto comune è l'upload dei file. È bene tenere presente alcuni
valori:

upload_max_filesize  2Mb (è un parametro di php.ini);

impostare nel TAG <form> l'attributo enctype = “multipart/form-data”

tramite la variabile globale $_FILES, sono accessibili informazioni sul file inviato:

$_FILES["userfile"]["name"]: nome del file caricato;

$_FILES[" userfile "]["type"]:  tipo di file caricato (in formato MIME type);

$_FILES[" userfile "]["size"]:  dimensione del file caricato;

$_FILES[" userfile "]["tmp_name"]:  percorso e il nome del file temporaneo sul
server;

$_FILES[" userfile "]["error"]:  un codice numerico compreso fra 0 e 8 indicante il
tipo di errore che si è verificato, pari a 0 in assenza di errore.
dove « userfile » è il nome del controllo che esegue l’upload.
 Nota: il file transita prima dentro la cartella temporanea del server (nel nostro caso
www/tmp e poi spostato dove decidiamo noi)
12.1 Php – Upload di file (parte 2)
 Il controllo sull’upload nella cartella www/tmp viene fatto dalla funzione
is_uploaded_file  ritorna un valore booleano a seconda dell’esito dell’operazione
 Infine il file viene spostato dalla cartella www/tmp in quella finale usando la
funzione move_uploaded_file(tmp_name, final_name)  ritorna un valore
booleano a seconda dell’esito dell’upload
 Errori possibili

Possiamo e dobbiamo inoltre controllare che la cartella dove vogliamo fare l'upload
esiste (is_dir) e possieda i diritti di scrittura (is_writable)

su Windows Xp, in locale,
da un errore del tipo Strict Standars mentre funziona
perfettamente online.

su Windows 7 funziona perfettamente sia in locale che online.
12.1 Php – Upload di file (parte 3)
 È possibile utilizzare direttamente le proprietà dell’Ftp (File Transfert Protocol) per
effettuare l’upload di un file con le funzioni:

ftp_connect(host[,port,timeout])  dove host è il nome del dominio (www.miodominio.ext)
oppure l’IP del dominio (aaa.bbb.ccc.ddd), port è la porta usata (default = 21) e timeout è il
tempo massimo per eseguire l’operazione (default = 90 secondi)  ritorna un valore True o
False

viene
associato
ad
una
variabile
(ad
esempio
$my_connection
=
ftp_connect(…,…,…);)

ftp_login(ftp_connect, username, password)  dove ftp_connect è il parametro precedente,
username e password forniscono l’account di accesso  ritorna un valore True o False 
viene associato ad una variabile (ad esempio $my_login = ftp_login(…,…,…);)

ftp_put(ftp_connect,remote_file,local_file,mode[,startpos])  dove ftp_connect è il paramentro
precedente, renote_file indica cartella e nome del file in remoto, local_file indica il file che
voglio caricare, mode indica se il file è binario o ascii e startpos, opzionale, indica da che
punto (byte o carattere) iniziare il caricamento (0 = default)  ritorna True o False  viene
associata ad una variabile (ad esempio $upload = ftp_put(…)):
12.2 Php – Paginazione dei risultati (1)
 Due approcci possibili: usando l’istruzione Limit offset, record presente nel
linguaggio SQL oppure non usandola.
 La prima prevede 2 query sul database 
 la prima per calcolare il totale dei record senza il Limit
 la seconda per estrarre i record interessati
 ovviamente, a parte il Limit, le due query devono essere identiche anche nelle
condizioni.
12.2 Php – Paginazione dei risultati (2)
 Prima query  mi dà il totale dei record ($tot_rec)
SELECT COUNT(campoX) FROM tabella [condizione1, condizione2, .., condizioneN ]

Numero totale di record  $tot_rec

Record per pagina  $pag_rec = 10 (il secondo parametro di Limit)

Totale pagine  $tot_pag = ceil ($tot_rec / $pag_rec)  mi interessano solo numeri interi

Pagina corrente  $current_pag. Presupponendo che mi sto muovendo tra le pagine usando
funzione di sistema $_GET[‘nome_variabile’]
If ($_GET[‘pag’]) {$current_pag = $_GET[‘pag’];}
else {$current_pag = 1;}
oppure con l’operatore ternario
$current_pag = ($_GET[‘pag’]) ? $_GET[‘pag’] : 1;
 Il primo parametro di LIMIT (offset = il record da cui partire) è
$primo = ($current_pag – 1) * $pag_rec;
12.2 Php – Paginazione dei risultati (3)
 Seconda query  estraggo i record da $primo a $pag_rec
$mio_sql = SELECT * FROM tabella [condizione1, condizione2, …, condizioneN ]
LIMIT $primo, $pag_rec
// ciclo
While { $ris = mysql_fetch_assoc($mio_sql, $mia_connessione);
echo … record 1
echo … record 2
…
echo … record 10
}
12.2 Php – Paginazione dei risultati (4)
// paginazione dei record
$paginazione = "["
for($i = 1; $i <= $tot_pag; $i++) {
if ($i == $current_pag) {
$paginazione = $paginazione . $i . " ";
}
else {
$paginazione .= "<a href=pippo.php"?page=$i">$i</a>";
}
}
$paginazione = $paginazione . "]"
12.3 Php – Inviare mail
 PHP mette a disposizione la funzione mail().
 È possibile la codifica MIME quindi permette quindi l'invio di messaggi anche
molto complessi, con allegati, immagini ecc...
 È una funzione di tipo booleano  se l'invio ha successo ritorna true altrimenti
ritorna false
 Sintassi della funzione:
mail (string $to, string $subject, string $message [, string $additional_headers, string $additional_parameters])

nei $to, utenti multipli sono separati da virgola;

negli $additional_headers sono contenuti From, CC e BCC, MIME, TIPO, CODIFICA e SET
CARATTERI separati dal CRLF (in Php è \r\n);

negli $additional_parameters sono contenuti altri parametri meno importanti
Esempi nella cartella Email

prova-mail.php  invio mail in forma semplice

mail-testo.php  invio mail in tramite un form
12.4 Php – Criptare i dati
 PHP mette a disposizione due funzioni per criptare i dati
 md5 (string, raw)

string è la stringa di testo da criptare

raw è il modo di criptare  valore booleano  default = False cripta in 32 caratteri
formato esadecimale mentre True cripta in 16 caratteri formato binario

INSERT INTO tabella (campo_da_criptare) VALUES (md5(stringa_da_criptare));

SELECT
campo1,
…,
campoN
FROM
tabella
WHERE
campo_criptato
=
md5(stringa_da_criptare)
 sha1

string è la stringa di testo da criptare

raw è il modo di criptare  valore booleano  default = False cripta in 40 caratteri
formato esadecimale mentre True cripta in 20 caratteri formato binario

INSERT INTO tabella (campo_da_criptare) VALUES (md5(stringa_da_criptare));

SELECT
campo1,
…,
md5(stringa_da_criptare)
campoN
FROM
tabella
WHERE
campo_criptato
=