PHP – Lavorare con i files

Se si vuole lavorare con applicazioni professionali, l’accesso in lettura e scrittura a file sarà quasi inevitabile.

PHP mette a disposizione due funzioni per includere del codice in altri file, quali una libreria di funzioni, una serie di definizioni di variabili, del codice HMTL che può fungere da header o da footer delle pagine etc. etc.

Ad esempio, queste semplici righe di codice includono nel file php tutte le istruzioni html per la normale pagina html.

A questo punto chiarisco un concetto che fino a qui era vago: come devono essere salvate le pagine scritte in php? E’ buona abitudine tenere separato il codice php con il codice html. Poi nel codice php includo con il seguente comando il codice html.

Questo codice mostra come è possibile includere del codice html e lasciare il codice php “pulito”, senza contaminarlo con del codice html. In questo modo, i designers ed i redattori di contenuti possono dedicarsi a scrivere le pagine html, senza dover modificare gli script php.

Questo esempio verifica l’esistenza di un file e tutte le sue caratteristiche: data di creazione, se è modificabile o meno, dimensione e l’ultima modifica.

Da notare che le funzioni filectime() e filemtime() restituiscono le date in formato TIMESTAMP di Unix.

Questo è l’output del precedente comando:

Lettura e scrittura di un file

fgets()

La funzione fgets() legge un file riga per riga

La funzione fopen() permette di aprire un file in tre diverse modalità : lettura (r), scrittura (w) e append (a), (per scrivere in fondo al file, aggiungendo nuovi dati).

bisogna stare attenti che la variabile text deve essere prima inizializzata.

fread()

Legge il file ma a righe invece che tutto in blocco

in questo caso legge per riga ma comunque poi in fase di visualizzazione tutto il file viene letto.

file_get_contents()

Sicuramente il metodo più veloce per leggere un file è il seguente. Ricordiamoci che php non nasce per leggere i file ma questi comandi servono per leggere piccoli file.

In questo caso ogni elemento del vettore è una riga del file.

Non esiste il metodo migliore o peggiore alla fine basta conoscere un metodo per leggere un file.

fwrite()

Si deve introdurre la funzione flock(), a cui bisogna ricorrere ogni volta che la scrittura di un file si può verificare in multiutenza. In pratica, lo scopo di questa funzione è bloccare il file ad un singolo utente, in modo che gli altri utenti che tentano di scrivere nel file trovano la risorsa occupata, aspettando che venga rilasciata per poter poi operare.
Sintassi:
flock(file_pointer,x)
dove x può essere :
1 Condiviso (tutti possono leggere ma nessuno può scrivervi)
2 Esclusivo (nessuno può leggere o scrivere, tranne chi ha ottenuto il privilegio)
3 Rilascio (Rilascio del file)

Copia di un file

Eccone un esempio:

Notate come avviene la chiamata ad fputs(). Come secondo parametro, cioè come dati da
scrivere nel file DOLLAROdest, si sfrutta ciò che ritorna la funzione fread operante sul file DOLLAROsrc.

Pubblicato in Senza categoria | Lascia un commento

PHP – Le espressioni regolari – regular expressions

Le regular expressions (espressioni regolari) servono per descrivere dei modelli di stringa. E’ possibile verificare, ad esempio, se un codice fiscale o un indirizzo email sono stati inseriti correttamente.

Un’espressione regolare è una stringa, definita pattern, che contiene al suo interno una serie di simboli attraverso i quali è possibile identificare gruppi di stringhe.

Con il rilascio della versione 5.3 di PHP le funzioni ereg per le espressioni regolari POSIX sono state dichiarate deprecate e verranno rimosse dalla release 6 del linguaggio; utilizzarle non è quindi più una buona pratica, chi desidera impiegare un’alternativa potrà farlo grazie alle funzioni PCRE.

Un’applicazione immediata è quella di controllare i caratteri inseriti in una form che poi verrà usata per fare una query in un database. Il controllo della lunghezza e del tipo di caratteri immessi è fondamentale affinché la query successiva possa aver esito positivo.

Questo controllo è alla base delle pagine dinamiche.

Eccone un esempio:

preg_match()

controllo che lo username sia corretto ossia che contenga solo caratteri minuscoli e lettere, inoltre che abbia lunghezza minima 3 e massima 15.

Inoltre il comando deve essere sempre compreso tra //

Un altro esempio è il seguente:

Che fornisce come output:

340

8652066

quindi estrae il prefisso ed il numero di telefono. Si è usato il comando \d per identificare i numeri e \d* per prendere tutta la sequenza di numeri.

Proviamo solo a pensare quali controlli si devono fare in C++ per la coerenza del dato ed invece la potenza di tale comando.

Adesso unisco i due esempi precedenti supponendo di aver creato una form in cui ho richiesto il numero di telefono e devo controllare il campo e successivamente prendere il prefisso ed il numero di telefono:

Questa tabella mostra tutti i parametri che possono essere inseriti

Meta carattereDescrizione
\Carattere generico di escape
^Delimitatore di inizio della stringa
DOLLARODelimitatore di fine della stringa
.Definisce ogni carattere eccetto il carattere di invio
[Carattere di inizio della definizione di classe
]Carattere di fine della definizione di classe
|Inizio di un ramo alternativo
(Inizio subpattern
)Fine subpattern
?Indica 0 o 1 occorrenze
*0 o più occorrenze
+1 o più occorrenze
{Inizio intervallo minimo/massimo di occorrenze
}Fine intervallo minimo/massimo di occorrenze
Indica un range di caratteri all’interno di parentesi []
.Indica un singolo carattere
\sUn carattere di spaziatura (space, tab, newline)
\STutto eccetto un carattere di spaziatura
\dUn carattere numerico (0-9)
\DTutto eccetto un carattere numerico
\wUna lettera (a-z, A-Z, 0-9, _)
\WTutto eccetto una lettera
[aeiou]Uno dei caratteri compresi nella parentesi
[^aeiou]Tutto eccetto i caratteri compresi nella parentesi
(foo|bar|baz)Una delle alternative tra parentesi

preg_match_all()

E’ un comando simile al precedente solo che estrae tutte le occorrenze presente nel criterio di ricerca, ad esempio il seguente estratto di codice:

che cerca i codici numerici all’interno della stringa e fornisce come output i tre numeri.

preg_replace()

Si può sostituire un’espressione con un’altra.

ParametroDescrizione
DOLLAROpatternPattern di ricerca.
DOLLAROreplacementLa stringa che verrà sostituita.
DOLLAROsubjectStringa da sostituire.
DOLLAROlimitLimite delle sostituzioni da effettuare (opzionale).

in questo esempio sostituisco i numeri di telefono con degli asterischi, si pensi ad esempio ad una password immessa che deve essere sostituita con degli asterischi o viceversa.

Pubblicato in Senza categoria | Lascia un commento

PHP – Manipolare le stringhe

printf

Il risultato nel browser sarà semplicemente la stampa del numero in formato decimale.

Al posto della d posso inserire le seguenti codifiche:

TipoFormato
bbinario
cascii
ffloating point
oottale
sstringa
xesadecimale minuscolo
Xesadecimale maiuscolo

Se si vogliono visualizzare solo due cifre dopo la virgola si usa la seguente sintassi:

printf può contenere le seguenti specifiche:

Nome specificaDescrizioneEsempio
Specifica di tipoDetermina il formato ed il tipo
dei dati da visualizzare.
d
Specifica di precisioneNumero di cifre decimali a cui
arrotondare un numero non
intero
.2
Specifica di riempimentoDetermina caratteri di
riempimento e larghezza
minima dell’output
04d
Specifica di larghezza di
campo
Larghezza del campo in cui si
vuole visualizzare l’output
20

Specifica di riempimento

con questo comando ho come output 000250

se invece voglio un carattere diverso devo mettere un apice prima del carattere di riempimento.


sprintf()

questo comando copia il comando print in una variabile:

strlen()

lunghezza di una stringa

una sua tipica applicazione è il controllo della lunghezza di una stringa di caratteri che poi deve essere utilizzata ad esempio per una query sul DB.

substr()

Tale comando estrae una sottostringa di caratteri.

l’output sarà:

ting
tin
ing

quindi la stringa viene considerata come un vettore che parte dalla posizione 0. Il primo comando deve partire dall’indice alla posizione 3 fino alla fine. Il secondo sempre dalla stessa pozione ma solo 3 caratteri. Il terzo parte dalla fine della parola per tre posizioni.

N.B. Per andare a capo ho usato ‘<br>’

strstr()

Ricerca una sottostringa all’interno di una stringa. Il tipico caso è quello della richiesta di un’email, essa sarà valida solo se sarà presente il carattere @.

strstr() è case-sensitive

stristr(), è case-insensitive.

strtoupper()

Tutto maiuscolo

strtolower()

Tutto minuscolo

ucwords()

Solo la prima lettera delle parole componenti una frase sono maiuscole

trim()

Rimuove gli spazi all’inizio e alla fine della stringa

ltrim()

Rimuove gli spazi soltanto all’inizio della stringa

rtrim() o chop()

Rimuove gli spazi alla fine

str_replace()

effettua una sostituzione di testo facendo al ricerca di quel testo ad esempio:

in pratica ricerca la parola $vowels nella frase “Hello word of PHP” e la sostituisce con “” ossia in pratica vengono eliminate le vocali.

Pubblicato in Senza categoria | Lascia un commento

PHP – Array

Gli array o vettori necessitano di un capitolo a parte proprio per il loro continuo utilizzo all’interno della programmazione; inoltre il php fornisce degli strumenti quali

  • la ricerca di un elemento,
  • l’ordinamento crescente o decrescente,
  • la grandezza di un array
  • array associativi che permettono di indicizzare un array mediante non più un indice ma un frase che caratterizza il contenuto dell’array
  • il passaggio da stringa a vettore
  • inserimento di un elemento di un vettore con un semplice comando

Esempio di inserimento degli elementi di un vettore confrontando la tecnica tradizionale con quella suggerita da php

Tecnica tradizionale (utilizzo spesso echo nl2br per andare a capo)

Creazione con []

Tecnica nuova, si noti come non viene usato il comando array ma direttamente [] con l’inserimento del nuovo elemento del vettore


Utilizzo di explode()

Si può anche trasformare una stringa in un vettore con il comando explode()

Si nota che ho definito una variabile DOLLAROnomi che non è altro che una stringa. Il comando explode suddivide la stringa cercando il carattere separatore, che in questo caso è una stringa, per creare il vettore.

Array associativi

Invece che accedere con un indice numerico si accede con un’etichetta e si associa l contenuto del vettore con => ossia uguale e maggiore:

si noti che ho utilizzato l’indice programmatore per stampare il contenuto del vettore con quel nome dell’indice.

Count()

conta il numero di elementi di un vettore

foreach()

Scorre un vettore finchè trova dei valori senza occuparsi dell’indice e senza creare un indice per scorrerlo, molto pratico. Si noti come il valore del contenuto del vettore viene appoggiato su una variabile d’appoggio:

unset()

questo comando serve per cancellare un elemento del vettore che è presente in una particolare posizione (immaginiamo solo quanto può essere oneroso farlo in C++: si devono spostare tutti gli elementi per coprire il buco che si è creato e quindi ridimensionare i vettore)

Come si nota preferisco sempre prima vedere il vettore e poi usare il comando. SI noti pure come ho preferito usare invece del classico ciclo per la visualizzazione del vettore, quello di usare il comando foreach()

in_array(elemento,array)

Altro comando veramente molto utile è quello di cercare un elemento all’interno del vettore. Esso restituisce il valore vero o falso se l’elemento è presente o meno.

sort()

Ordina il vettore in modo crescente

rsort()

Ordina il vettore in modo decrescente

asort()

ordina il vettore associativo in modo crescente (dal più piccolo al più grande) per valore

ksort()

ordina il vettore associativo in modo crescente per chiave

Pubblicato in Senza categoria | Lascia un commento

PHP – IF -Switch – while – for

In PHP i costrutti if, switch, while, for seguono esattamente la sintassi del C++.

In questo programma se ne dà un esempio:

Pubblicato in Senza categoria | Lascia un commento

PHP – Gli operatori

Gli operatori sono gli stessi che vengono comunemente usati in C++


==Uguale a
!=Diverso da
>Maggiore di
> = Maggiore o uguale a
<Minore
<=Minore Uguale
&&and
||or

Pubblicato in Senza categoria | Lascia un commento

PHP – Le variabili

Il comando echo nl2br serve per andare a capo (sto salvando il file con estensione html):

In PHP le variabili sono riconoscibili perché iniziano con il simbolo DOLLARO

DOLLAROquantita=15; contiene un valore numerico

In PHP, una variabile può cambiare il suo valore (compreso il tipo) in qualsiasi momento.

Le variabili PHP possono contenere dati del tipo :

numero intero (integer) 15

numero reale (double) 3.14

stringa (string) ‘Sono un insieme di caratteri!’

valore booleano (boolean) true (oppure false)

Array

DOLLAROamici=array(‘Aldo’,’Alfonso’,’Biagio’,’Carlo’);

Per poi stamparlo:

print DOLLAROamici[1];

Variabili dinamiche

DOLLAROidentificativo=”codice”;

DOLLARODOLLAROidentificativo=”1452”;

Queste due righe equivalgono a “DOLLAROcodice=”1452””

print “DOLLARO DOLLAROidentificativo\n\n”;

questo comando stampa DOLLAROcodice

print “DOLLARO{DOLLAROidentificativo}”;

Per informare PHP del fatto che si vuole stampare una variabile dinamica, è necessario inserirla fra parentesi graffe. Infatti, la seconda riga di codice stampa 1452.

Le costanti

define(“PI_GRECO”,3.141);

in questo programma, si nota come poter andare a capo, l’uso della variabile statica e della variabile dinamica.

Pubblicato in Senza categoria | Lascia un commento

PHP – Echo

Il primo programma in assoluto è il classico Benvenuto:

il file verrà salvato con estensione php nella cartella ad esempio HTML\www che è stata impostata nel file di configurazione di apache.

I commenti possono essere /* o */ per racchiudere più righe di commento oppure se in una sola riga //

Si poteva scrivere la stessa cosa con il comando:

Pubblicato in Senza categoria | Lascia un commento

PHP – Installazione PHP

Per prima cosa vai sul sito ufficiale di PHP nella pagina di download e cerca l’ultima versione stabile, successivamente clicca sul link windows downloads che ti porterà nella pagina dalla quale potrai scaricare i files binari della versione 7 di PHP per windows.

Nel mio caso ho bisogno dei files binari compilati con Visual Studio 2017 (VC15) e della versione “Thread Safe” di PHP perché possa funzionare correttamente con il web server Apache, infine seleziono la versione a 32 o 64 bit in base al mio sistema.

Dopo aver scaricato il file zip che contiene i binari del PHP per windows, scompatta l’archivio e decomprimi il tutto in C:/PHP.

A questo punto rinomina il file php.ini-development in php.ini.

Apri il file e cerca la linea Extension_dir = “ext”, decommentala eliminando il punto e virgola prima del comando e sostituisci “ext” con “C:\PHP\ext”.

Modificare il file httpd.conf di Apache.

Vai nella cartella di installazione di Apache (solitamente C:\Apache24\conf) apri httpd.conf come un semplice file di testo e inserisci i seguenti comandi ricorda che le righe che seguono vanno inserite all’inizio del file:

LoadModule php7_module “C:/PHP/php7apache2_4.dll”

AddType application/x-httpd-php .html .htm

AddHandler application/x-httpd-php .php

Per fare in modo che Apache riconosca index come home page del sito, cerca DirectoryIndex all’interno del file httpd.conf ed aggiungi alla riga index.htm e index.php in questo modo:

  • DirectoryIndex index.html index.htm index.php

La prossima riga va inserita alla fine del file httpd.conf e serve ad evidenziare ad Apache dove è collocato il file php.ini:

PHPiniDir “C:/PHP”

Adesso devi dire ad Apache dove vuoi che risiedano i miei files personali e cioè le pagine web che vado a creare, in modo che il web server sappia in che directory andare a cercare le pagine da leggere.

Per farlo cerco la riga “DocumentRoot” e “<Directory” del file httpd.conf e modifica il percorso in base alle mie esigenze:

io per esempio uso una cartella “C:\HTML\www”.

A questo punto hai configurato tutto, non ti resta che verificare il corretto funzionamento di PHP. Per farlo devi creare un file di testo nella cartella dove risiedono i tuoi files personali e chiamarlo info.php, all’interno del file scrivi:

<?php

phpinfo();

?>

Adesso apri il tuo browser e digita localhost/info.php, dovresti vedere a schermo la seguente pagina:

Pubblicato in Senza categoria | Lascia un commento

PHP – Installazione server Apache su windows

Questo post riprende la documentazione presente in tanti altri siti web e cerca solo di dare una guida veloce per la sua installazione.

Senza l’installazione del server apache e di php non è possibile testare le applicazioni in locale scritte in php.

Per prima cosa vai sulla pagina ufficiale di Apache all’indirizzo httpd.apache.org e cerca il link da cui effettuare il download dei files per Windows.

A questo punto di va sul seguente link:

Dopo aver scaricato i files binari, si decomprime il file zip e scompatto la cartella Apache24 in C:/ in modo da avere come risultato finale il percorso C:/Apache24.

Apri il prompt dei comandi come amministratore, portati nella cartella C:/Apache24/bin e digita httpd.exe -k install, questa procedura ti permette di installare il server Apache come servizio di windows.

Per far partire, arrestare o riavviare il server web apache puoi utilizzare il comodo ApacheMonitor.exe che trovi nella cartella C:/Apache24/bin.

nfine per verificare il corretto funzionamento di tutta la procedura di installazione, apri il browser del tuo computer e nella barra degli indirizzi digita localhost, dovrebbe apparire una pagina di conferma di ApacheHaus che mostra la versione di Apache installata.

Pubblicato in Senza categoria | Lascia un commento