In questa guida vedremo di capire insieme le basi di uno dei linguaggi di scipting lato server più usati sul Web: PHP o più precisamente PHP Hypertext Preprocessor. E' bene precisare fin da subito che lo scopo di questo manualetto è di essere una guida di base a PHP e quindi di fornire le conoscenze basilari a chi, per...
A partire da questa lezione vedremo come scrivere le prime linee di codice nel linguaggio di PHP, vedremo, in pratica, come definire delle istruzioni che dovranno essere poi tradotte dal web server (attraverso l'interprete in esso installato): si parla, in questo caso, di scripting server-side in quanto l'eleborazione della pagina avviene - appunto - a livello di server, mentre...
Prima di proseguire e di addentrarci in aspetti più articolati della programmazione con PHP, vorrei soffermarmi sull'importanza di inserire, con costanza e continuità, commenti al codice all'interno degli script che andremo a realizzare con questo linguaggio.
I commenti al codice sono delle "note" che il programmatore aggiunge, per comodità, al codice stesso. Si tratta di "appunti", semplice testo che non...
Uno degli elementi base di ogni linguaggio di programmazione (compreso PHP) sono certamente le variabili.
Cos'è una variabile?
La variabile può essere definita come un'area di memoria in cui vengono salvate delle informazioni (a cui il programmatore assegna un particolare identificatore) che possono mutare durante la fase di elaborazione del programma stesso.
In PHP tutte le variabili iniziano con il simbolo del...
Nella lezione precedente abbiamo visto cosa sono e come si utilizzano le variabili in PHP. In questa lezione vedremo un altro "tipo di contenitore" di dati: le costanti.
Una costante, come lascia intuire il nome, è una porzione di memoria il cui contenuto non cambia durante la fase di elaborazione del nostro programma in PHP. A differenza della variabile, che...
Con PHP possiamo gestire facilmente operazioni matematiche in modo molto intuitivo. In questa lezzione della nostra guida impareremo come fare di conto all'interno dei nostri applicativi.
Operatori matematici di PHP
I principali operatori matematici previsti dalla sintassi di PHP sono:
OperatoreOperazione+Addizione-Sottrazione*Moltiplicazione/Divisione%Modulo
L'unico operatore matematico a richiedere qualche precisazione è, probabilmente, l'operatore Modulo il quale serve per calcolare il resto di una divisione. Ad...
Facciamo il punto della situazione: fin ora abbiamo visto cos'è il PHP, come implementare le prime righe di codice, come creare e gestire variabili e costanti (di tipo stringa o numerico) e, per finire come compiere operazioni matematiche con le variabili numeriche.
In questa lezione, prettamente pratica, vedremo come è possibile combinare il codice PHP con il comune HTML. Il...
In questa lezione della nostra guida a PHP analizzeremo un aspetto determinante del linguaggio, scopriremo cioè cosa sono e come funzionano gli operatori di confronto e gli operatori logici.
Gli operatori di confronto
Gli operatori di confronto consentono, appunto, di effettuare dei confronti tra valori al fine di prendere determinate "decisioni" durante l'esecuzione del codice. Attraverso questi operatori, infatti, si...
In questa lezione della nostra Guida PHP impareremo a gestire il comportamento del nostro script sulla base del verificarsi o meno di determinate condizioni: qualora una data condizione si verifichi (sia vera) il codice si comporterà in un modo, nel caso contrario (falsa) si comporterà in un altro.
Tutto ciò è possibile mediante le istruzioni condizionali, una sintassi che rientra...
Chiunque abbia già delle semplici nozioni di programmazione con altri linguaggi di scripting saprà certamente di cosa si tratta e quale grande importanza rivestono i cicli (o iterazioni). Tuttavia, trattandosi di una guida di base, ritengo opportuno introdurre l'argomento partendo da una semplice definizione che chiarisca le idee anche a chi è a digiuno dei concetti più basilari.
Ciclo for
Un...
Al termine della scorsa lezione abbiamo accennato agli array (o vettori), vediamo ora di capire insieme cosa sono e come funzionano le array in PHP.
Una array è una specie di "super-variabile" contentente una pluralità di valori invece di uno solo. Ma facciamo subito un paio esempi che valgono più di tante parole.
Poniamo di voler scrivere una sorta di lista...
PHP dispone di sitassi apposite per la gestione di variabili di tipo stringa molto lunghe o multilinea (si pensi, ad esempio, di dover inserire in una variabile un paragrafo di un testo o un blocco di codice HTML o Javascript). Tali sintassi prendono il nome di Heredoc e Nowdoc.
Prima di descriverne le caratteristiche (e le differenze) facciamo un esempio...
Una delle principali possibilità offerte dai linguaggi di scripting lato server è quella di generare contenuti (dinamicamente) sulla base delle richieste degli utenti. Questa interattività si realizza anche attraverso le variabili GET e POST che consentono, appunto, agli utenti di passare al server le loro richieste o preferenze attraverso i form (i classici moduli html) o semplici QueryString.
In pratica,...
Nella lezione precedente di questa guida abbiamo visto il funzionamento delle due variabili superglobali $_GET e $_POST. In questa lezione vedremo, invece, come funziona la variabile superglobale $_FILES la quale viene utilizzata quale vettore per il trasferimento di file dal client verso il server. In altre parole, in questa lezione vedremo come gestire gli upload di files con PHP.
Configurare...
I cookie sono un metodo rapido per memorizzare, sul computer dei nostri utenti, delle informazioni che vogliamo persistano anche nelle successive visite al nostro sito.
I cookie sono molto utili per memorizzare piccoli dati come ad esempio il nome dell'utente o una serie di preferenze di navigazione. I cookie non sono adatti per informazioni critiche come password o dati personali...
Un altro sistema di memorizzazione di informazioni è offerto dall'utilizzo delle sessioni. A differenza dei cookie le sessioni di PHP non scrivono nulla sul computer del utente, ma operano (quasi esclusivamente) sul nostro server scrivendo, all'interno di un'apposita cartella, degli specifici files dove vengono salvati alcuni dati importanti relativamente alla sessione di navigazione del nostro utente.
Questi file vengono poi...
Una funzione particolarmente utile ed interessante del PHP è sicuramente header(). Grazie a questa funzione, infatti, è possibile aggiungere delle intestazioni addizionali a quelle normalmente scambiate tra il server ed il client.
Cosa sono gli headers
Gli headers (o "intestazioni" in italiano) sono delle meta-informazioni che vengono scambiate tra il server ed il client. Queste informazioni, che sono totalmente invisibili per...
In questa lezione vedremo cos'è una funzione e come possiamo creare delle funzioni personalizzate in PHP. Prima di entrare nel vivo, tuttavia, dobbiamo farci una domanda: cos'è una funzione?
Una funzione è una porzione di codice caratterizzata da una certa indipendenza ed in grado di assolvere un compito specifico all'interno di un programma.
Mediante una funzione, di solito, si assolve un...
Nella lezione precedente (dedicate alle funzioni PHP) abbiamo visto la differenza tra funzioni "native" e "personalizzate". A partire da questa questa lezione passeremo in rassegna alcune delle (tantissime) funzioni native offerte da PHP per svolgere le più diverse operazioni.
In questa lezione vedremo le principali funzioni per la gestione delle variabili.
empty
Questa funzione verifica se una variabile è vuota oppure no....
PHP dispone di un set molto ricco di funzioni matematiche, funzioni, cioè, attraverso le quali è possibile operare coi numeri e svolgere operazioni come il cacolo del minimo e del massimo, effettuare arrotondamenti, ecc.
Le math functions di PHP sono davvero parecchie, tuttavia in questa sede ci limiteremo a presentarvi le funzioni matematiche più utilizzate nell'ambito della normale attività di...
In questa lezione passeremo in rassegna alcune delle principali funzioni native del PHP per la gestione delle stringhe.
echo e print
Queste due funzioni (già viste più volte nel corso della nostra guida) servono per stampare a video il contenuto di una variabile, un numero o una stringa di testo. Esempi:
$var = 'Evviva Mr.Webmaster';
echo $var;
print 123;
Queste due funzioni sono sostanzialmente equivalenti.
strlen
Restituisce...
Nella lezione dedicata alle variabili in PHP abbiamo visto che attraverso l'operatore (.) è possibile concatenare tra loro delle stringhe per creare, ad esempio, dei testi variabilizzati. Ad esempio:
<?php
/*
Variabili
*/
$marca = 'Fiat';
$modello = 'Panda';
$anno = 2010;
$alimentazione = 'benzina';
$cilindrata = 900;
$euro = 3000;
/*
Stampo a video
*/
echo 'Vendesi ' . $marca . ' ' . $modello . ' del ' . $anno ....
In questa lezione della nostra guida passeremo in rassegna alcune funzioni per la gestione delle date in PHP concentrando la nostra attenzione, in particolare, sulla funzione date() al fine di capire come poterla usare nei nostri script PHP. Le funzioni per la manipolazione di date ed orari sono determinanti nello sviluppo di applicazioni e devono essere approfondite con la...
PHP è un linguaggio di scripting completo, tra le sue possibilità vi è anche quella di interagire con il filesystem del server sul quale sta girando. Grazie a questa interazione è possibile lavorare con le cartelle e con i file sia in lettura che in scrittura. Le funzioni native che PHP offre per la manipolazione del filesystem sono molteplici,...
Un altro set di funzioni PHP molto interessanti sono quelle che consentono di creare e cancellare file e directory.
touch
Grazie alla funzione touch è possibile creare un file specificandono il percorso ed il nome:
touch('file-da-creare.txt');
unlink
La funzione unlink() consente di cancellare un file e restituisce true o false a seconda che l'operazione abbia successo o meno:
$file = 'miofile.txt';
if (unlink($file)) {
echo...
Grazie a PHP, come abbiamo visto, è piuttosto facile interagire col filesystem, in questa lezione della nostra guida vedremo le funzioni base per lavorare con i file, più precisamente vedremo come aprire un file di testo e come leggerne e modificarne il contenuto
fopen
La funzione di base per "aprire" un file è fopen(). Questa funzione restituisce "true" in caso di...
Inviare e-mail con PHP è un'operazione abbastanza semplice: per spedire un messaggio di posta elettronica dalle pagine del nostro sito web, infatti, è sufficiente richiamare la funzione mail() la quale consente, appunto, di inviare email con codifica MIME.
La funzione mail(), una volta richiamata all'interno della nostra applicazione PHP, "contatterà" il sistema postale del nostro server (sendmail o server SMTP)...
In questa lezione vedremo insieme come è possibile far interagire le nostre pagine PHP con i database MySQL. Per dovere di completezza non possiamo non ricordare che PHP è in grado di connettersi a diversi database server (MySQL, MS Access, PostgreSql, Oracle, Microsoft Sql Server, Sybase,...) tuttavia noi ci limiteremo a vedere l'interazione con MySQL che è senza dubbio...
Nella lezione precedente abbiamo accennato a come interagire con un database MySQL attraverso i nostri script PHP. Come abbiamo visto è necessario specificare - affinchè la connessione al database funzioni correttamente - le credenziali di accesso al MySQL. Qualora la nostra applicazione sia composta di più file sarà, ovviamente, necessario aver cura di ripetere le nostre credenziali in ogni...
Nell'era digitale, dove la trasmissione di informazioni (anche sensibili) tra dispositivi elettronici rappresenta la quotidianità, la protezione dei dati è diventata una priorità fondamentale. Termini come crittografia e cifratura sono ormai parte integrante del nostro vocabolario, soprattutto quando si parla di sicurezza informatica.
Internet, per sua natura, è un canale di comunicazione potenzialmente insicuro, rendendo essenziale l'uso di tecniche che...
Abbiamo a cuore la tua privacy
Noi e i nostri partner archiviamo e/o accediamo a informazioni su un dispositivo. Cookie, identificatori del dispositivo o analoghi identificatori online (ad es. identificatori basati sull’accesso, identificatori assegnati casualmente, identificatori basati sulla rete) insieme ad altre informazioni (ad es. tipo di browser e informazioni sul browser, lingua, dimensioni dello schermo, tecnologie supportate, ecc.) possono essere archiviati sul o letti dal dispositivo dell’utente per riconoscerlo ogni volta che l’utente si connette a un’app o a un sito web, per una o più finalità qui presentate.
Con il tuo consenso, i tuoi dati possono essere utilizzati per quanto segue: Pubblicità e contenuti personalizzati, misurazione delle prestazioni dei contenuti e degli annunci, ricerche sul pubblico, sviluppo di servizi; Dati di geolocalizzazione precisi e identificazione attraverso la scansione del dispositivo.
I tuoi dati personali verranno trattati e le informazioni dal tuo dispositivo (cookie, identificatori univoci e altri dati del dispositivo) possono essere memorizzate, consultate e condivise con 179 partner, o utilizzate specificamente da questo sito o questa app. Alcuni fornitori potrebbero trattare i tuoi dati personali sulla base dell'interesse legittimo, al quale puoi opporti gestendo le tue opzioni qui sotto. Puoi revocare il tuo consenso in qualsiasi momento facendo clic sul link delle impostazioni sulla privacy situato in fondo alla pagina.
Alcuni partner non chiedono il tuo consenso al trattamento dei tuoi dati, ma fanno affidamento sul loro legittimo interesse commerciale. Guarda il nostro elenco di partner per conoscere gli scopi per cui credono di avere un interesse legittimo e come puoi opporti.
Questi sono i nostri partner pubblicitari che partecipano al Framework di trasparenza e consenso dello IAB, creato per garantire un uso trasparente e corretto dei dati.
Questi fornitori sono registrati su Google, ma non nel Transparency & Consent Framework di IAB Europe.
{"b_dec":{"def":"Rifiuta e chiudi","res":"Rifiuta e chiudi"},"priclt":" \u003Cdiv class=\u0022cl-consent-settings cl-consent-settings--is-hidden\u0022\u003E \u003Cstyle\u003E .cl-consent-settings { position: fixed; left: 16px; bottom: 28px; z-index: 100; transition: all 0.15s ease-in-out; transform: translateY(0); } .cl-consent-settings--is-hidden { transform: translateY(70px); opacity: 0; } .cl-consent-settings__hint { border-radius: 4px; background: #282A3C; box-shadow: 0px 4px 24px 0px rgba(0, 0, 0, 0.15); color: #FFFCF2; position: absolute; right: -195px; top: 0; bottom: 0; margin: auto; height: 40px; width: 175px; display: flex; align-items: center; justify-content: center; padding: 4px 12px; font-size: 12px; font-weight: 400; line-height: 16px; cursor: default; user-select: none; transition: transform 0.3s ease, opacity 0.3s ease; transform: translateX(0); opacity: 0; pointer-events: none; z-index: -1; } .cl-consent-settings__hint::after { content: \u0022\u0022; position: absolute; left: -16px; top: 0; bottom: 0; margin: auto; width: 0; height: 0; border: 0 solid transparent; border-top-width: 12px; border-bottom-width: 12px; border-right: 16px solid #282A3C; } .cl-consent-settings__btn { width: 42px; height: 42px; border-radius: 50%; display: flex; align-items: center; justify-content: center; padding: 0; border: none; background-color: #4B81E8; background-image: url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 width=\u002730\u0027 height=\u002730\u0027 viewBox=\u00270 0 30 30\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 d=\u0027M15 2.813C8.28 2.813 2.812 8.28 2.812 15S8.28 27.188 15 27.188c6.72 0 12.188-5.468 12.188-12.188C27.188 8.28 21.72 2.812 15 2.812Zm0 1.874c5.686 0 10.313 4.627 10.313 10.313 0 5.686-4.627 10.313-10.313 10.313-5.686 0-10.313-4.627-10.313-10.313C4.688 9.314 9.314 4.687 15 4.687Zm-1.875 3.75a.937.937 0 1 0 0 1.875.937.937 0 0 0 0-1.874Zm5.156.938a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.812Zm-7.968 2.813a1.875 1.875 0 1 0 0 3.749 1.875 1.875 0 0 0 0-3.75Zm5.624 1.874a.938.938 0 1 0 0 1.876.938.938 0 0 0 0-1.876Zm4.688.938a.938.938 0 1 0 0 1.875.938.938 0 0 0 0-1.875Zm-8.906 2.813a1.406 1.406 0 1 0 0 2.812 1.406 1.406 0 0 0 0-2.813Zm6.562.937a1.406 1.406 0 1 0 0 2.813 1.406 1.406 0 0 0 0-2.813Z\u0027\/%3E%3C\/svg%3E\u0022); background-position: center center; background-size: 30px 30px; background-repeat: no-repeat; box-shadow: 0px 0px 20px 0px rgba(0, 0, 0, 0.35); z-index: 70; position: relative; text-decoration: none; } .cl-consent-settings__btn:hover + .cl-consent-settings__hint { transform: translateX(22px); pointer-events: all; opacity: 1; } .cl-consent-settings__user { width: 18px; height: 18px; border-radius: 50%; padding: 0; border: 1px solid #ffffff; background-color: #00AD98; background-image: url(\u0022data:image\/svg+xml,%3Csvg xmlns=\u0027http:\/\/www.w3.org\/2000\/svg\u0027 viewBox=\u00270 0 10 11\u0027 width=\u002710\u0027 height=\u002711\u0027 fill=\u0027none\u0027%3E%3Cpath fill=\u0027%23fff\u0027 stroke=\u0027%23fff\u0027 stroke-width=\u0027.1\u0027 d=\u0027M6.858 6.262A3.3 3.3 0 0 0 8.2 3.597C8.2 1.796 6.764.325 5 .325s-3.2 1.47-3.2 3.272c0 1.094.53 2.07 1.342 2.665A4.67 4.67 0 0 0 .45 10.5v.05h1v-.05c0-2.012 1.585-3.632 3.55-3.632s3.55 1.62 3.55 3.632v.05h1v-.05a4.67 4.67 0 0 0-2.692-4.238ZM5 1.345c1.22 0 2.2 1.002 2.2 2.252s-.98 2.25-2.2 2.25-2.2-1-2.2-2.25.98-2.252 2.2-2.252Z\u0027\/%3E%3C\/svg%3E\u0022); background-position: center center; background-size: 9px 10px; background-repeat: no-repeat; z-index: 75; position: absolute; top: -2px; right: -8px; text-decoration: none; visibility: hidden; } \u003C\/style\u003E \u003Cbutton type=\u0022button\u0022 class=\u0022cl-consent-settings__btn\u0022 onclick=\u0022if(window.__lxG__consent__ !== undefined) {window.__lxG__consent__.showConsent()} else {alert(\u0027This function only for users from European Economic Area (EEA)\u0027)}; return false\u0022\u003E \u003Cspan class=\u0022cl-consent-settings__user\u0022\u003E\u003C\/span\u003E \u003C\/button\u003E \u003Cdiv class=\u0022cl-consent-settings__hint\u0022\u003EPrivacy and cookie settings\u003C\/div\u003E \u003C\/div\u003E","pricds":"show_in_the_footer","vcnt":179,"_t":{"titles":"Purposes|Purposes (Legitimate Interest)|Features|Special Features|Special Purposes|Scopi|Scopi (Interesse Legittimo)|Caratteristiche|Caratteristiche Speciali|Scopi Speciali","sp3_ret":"Le scelte che fai riguardo agli scopi e alle entità elencati in questo avviso sono salvate per un massimo di %sp3_retention% nei seguenti cookie e variabili di archiviazione locale","ill_pp_ttl":"Esempi di Utilizzo","vndr_dtls_con":"Trattamento dei dati basato sul tuo consenso","vndr_dtls_li":"Trattamento dei dati basato sul legittimo interesse","vndr_dtls_fi":"Trattamento dei dati basato sul tuo consenso o interesse legittimo","cks_strg_dur":"dura %DURATION%","cks_strg_ses":"per la sessione attuale","cks_strg_not_used":"non utilizzato","cks_strg_dur_s":"sec","cks_strg_dur_i":"min","cks_strg_dur_h":"ora(e)","cks_strg_dur_d":"giorno(i)","cks_strg_dur_m":"mese(i)","cks_strg_dur_y":"anno(i)","vr_dts_purl":"URL della politica sulla privacy","vr_dts_dsurl":"URL di divulgazione dell\u0027archiviazione del dispositivo","vr_dts_dsurl_h":"Informazioni aggiuntive su archiviazione e operazioni","vr_dts_clmurl":"URL della richiesta di interessi legittimi","vr_dts_datac":"Categorie di dati","vr_dts_datac_h":"Categorie di dati raccolti in relazione agli scopi","vr_dts_stdret":"Conservazione dei dati standard (giorni)","vr_dts_stdret_h":"Il periodo standard è utilizzato a meno che non sia dichiarato un altro periodo per scopi specifici.","vr_dts_ret":"Conservazione dei dati (giorni)","vr_dts_usecks":"Usa i cookie","vr_dts_usecks_h":"Indica se il fornitore utilizza l\u0027archiviazione dei cookie (sessione o altro). SÌ indica che l\u0027archiviazione dei cookie è utilizzata. NO - l\u0027archiviazione dei cookie non è utilizzata.","vr_dts_usecksy":"Sì","vr_dts_usecksn":"No","vr_dts_cksage":"Età massima del cookie","vr_dts_cksage_h":"Il numero di secondi che rappresenta la durata potenziale più lunga per l\u0027archiviazione dei cookie su un dispositivo. Se un fornitore utilizza più cookie con durate diverse, rappresenta il cookie con la durata più lunga. Un numero negativo o 0 indica l\u0027archiviazione della sessione simile alla specifica Set-Cookie.","vr_dts_cksref":"Aggiornamento cookie","vr_dts_cksref_h":"Indica se i cookie vengono aggiornati dopo essere stati inizialmente impostati. SÌ - indica che il fornitore può aggiornare i cookie. NO - indica che il fornitore non aggiorna i cookie ogni volta che il browser viene ricaricato.","vr_dts_noncks":"Utilizza l\u0027accesso senza cookie","vr_dts_noncks_h":"Indica l\u0027uso da parte del fornitore di archiviazione non-cookie e accesso alle informazioni già memorizzate sul dispositivo di un utente. SÌ - indica che l\u0027accesso senza cookie è utilizzato. NO - indica che l\u0027archiviazione e l\u0027accesso senza cookie alle informazioni già memorizzate sul dispositivo di un utente non vengono utilizzati.","vr_dts_hgetl":"Limite della lunghezza della richiesta HTTP GET (Kbyte)","vr_dts_hgetl_h":"Dimensione massima della richiesta GET in kilobyte per aiutare a diagnosticare i problemi con il passaggio della stringa TC e limitare le stringhe di dimensioni eccessive.","vr_dts_addtnl":"Dati aggiuntivi","vr_dts_legaddr":"Indirizzo completo dell\u0027entità legale","vr_dts_b2bcont":"Dettagli di contatto B2B","vr_dts_terscp":"Ambito territoriale","vr_dts_terscp_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_env":"Ambiente","vr_dts_env_h":"Indica gli ambienti in cui il venditore opera","vr_dts_tserv":"Tipo di servizi","vr_dts_tserv_h":"Indica il tipo di servizi offerti dal venditore","vr_dts_trnsfout":"Trasferimenti internazionali fuori dall\u0027UE\/SEE","vr_dts_trnsfout_h":"Indica le giurisdizioni UE\/SEE\/UK in cui il fornitore opera con TCF. Nota che questo è diverso dalla sede del fornitore.","vr_dts_trnsfmch":"Meccanismi di trasferimento internazionale"}}