1. Programmare in PHP

Andrea Pastore 19/03/2020 0

Il PHP è un linguaggio di scripting utilizzato principalmente per creare siti web e web application. È molto popolare perché i principali strumenti per creare siti web (WordPress, Joomla!, Drupal e molti altri) sono fatti in PHP.

Hello world

È tradizione iniziare a programmare scrivendo un programma che stampa a video la scritta “Hello world!”. Per fare questo in PHP dobbiamo scrivere:




<?php

     echo “Hello wordl!”;


Il tag <?php

Il codice PHP viene scritto in file con estensione “.php” e deve essere preceduto dal tag <?php. L’interprete PHP esegue il codice contenuto tra questo tag e il tag di chiusura ?> . Supponiamo di avere questo codice:

<html>

<head></head>

<body>

<?php

echo “Hello world!”;

?>

</body>

</html>


Quando l’interprete PHP analizzerà questo file si concentrerà solo sulla parola contenuta tra i tag <?php e ?>. Il codice echo “Hello world!”; verrà eseguito e al suo posto verrà scritto “Hello world!”.

 Vediamo ora un altro esempio di un file che contiene solo codice PHP: in questo caso il tag di chiusura non è necessario, in quanto non sono presenti tag HTML.



<?php

echo “Hello world!”;

Cosa succede quando carichiamo una pagina in PHP

PHP è un linguaggio interpretato, significa che quando un utente visita una pagina il server la elaborerà in quel momento. L’elaborazione avviene con un programma apposito, l’interprete PHP. Vediamo quali sono i passaggi che avvengono quando viene richiesta una pagina web:

Commenti in PHP

I commenti sono degli appunti che possiamo voler scrivere quando creiamo un programma. Quando scriviamo un programma ci ricordiamo quello che stiamo facendo, ma sarà difficile che ci ricorderemo qualcosa di un programma scritto un anno fa. Possiamo commentare in due modi diversi:


// questo è un commento su singola riga

/*

  * questo è un commento su più righe

* viene usato quando dobbiamo commentare una funzione, un algoritmo ecc.

*/

Il testo contenuto all’interno dei commenti viene ignorato da PHP, se proviamo a scrivere lo stesso testo dei commenti senza il simbolo del commento otterremo un errore, perché PHP scambierà quel testo per comandi che deve eseguire e ci avviserà che ci sono errori nel codice.

Installiamo il nostro IDE

Un IDE (integrated desktop environment) è un software che, in fase di programmazione, aiuta i programmatori nello sviluppo del codice sorgente di un programma.  Spesso l'IDE aiuta lo sviluppatore segnalando errori di sintassi del codice direttamente in fase di scrittura, oltre a tutta una serie di strumenti e funzionalità di supporto alla fase di sviluppo e debugging.

Il nostro IDE di riferimento: NetBeans

NetBeans è uno dei migliori editor gratuiti per il PHP: è in grado di evidenziare la sintassi, suggerire il codice, trovare errori di sintassi e altro ancora. Nella schermata sottostante abbiamo cominciato a scrivere il comando PHP echo, e vediamo che NetBeans ci sta indicando la sintassi in un riquadro immediatamente sotto alla riga dove stiamo scrivendo. Ci sta anche segnalando che quello che abbiamo scritto noi (ovvero solo la parola echo) non è corretto, evidenziandola in rosso.

Vantaggi di un IDE

Un IDE presenta una serie di vantaggi, come ad esempio la possibilità di consultare versioni precedenti dello stesso file (notate che in alto c’è un tasto Source che mostra il codice che scriviamo, subito a destra c’è il tasto History che consente di vedere versioni precedenti del file). Altra cosa importante sono l’auto completamento (ovvero la capacità del software di capire quale funzione o variabile dobbiamo usare) e le scorciatoie di tastiera: ad esempio:

alt + shift + canc + freccia su oppure freccia giù

consente di portare la riga selezionata sopra o sotto, a seconda della freccia selezionata

Installiamo XAMPP

XAMPP è un server locale, ovvero uno strumento che consente di simulare sui nostri computer domestici uno spazio web. I server locali sono molto utilizzati dagli sviluppatori, perché danno la possibilità di testare i progetti in locale e di trasferirli poi comodamente sui server di destinazione una volta pronti.

Al suo interno contiene PHP, MySQL e phpMyAdmin e consente con un solo click di creare un server con tutto quello che ci serve per eseguire applicazioni PHP e MySQL. XAMPP si può installare su Linux, Windows e Mac OS X con un file di installazione scaricabile dal sito ufficiale https://www.apachefriends.org. Il sito è disponibile in molte lingue, tra cui l’italiano, e oltre a darci la possibilità di scaricare XAMPP contiene le risposte alle domande più comuni fatte dagli utenti, divise per sistema operativo.

Una volta installato possiamo avere dei siti che stanno solo sul nostro computer, accedendo all’indirizzo “localhost/nomecartella” (dove “nomecartella” può essere sostituito da un nome a piacimento). Le cartelle vanno create nella cartella htdocs che si trova all’interno della directory principale di XAMPP: su Windows il percorso è solitamente

C://XAMPP/htdox

sulle principali distribuzioni Linux invece il percorso di questa cartella è:

opt/lampp/htdocs

Creiamo un nuovo progetto PHP con NetBeans

Come primo passo creiamo all’interno della cartella htdocs di XAMPP creiamo la cartella principale del nostro progetto, ad esempio: “progetto1”.

Dopo aver aperto NetBeans clicchiamo su file e poi su new project, si aprirà la schermata che ci consente di scegliere quale tipo di progetto creare. Noi sceglieremo PHP Application with Existing Sources. Vedere la figura sotto

fatto questo clicchiamo su next e scegliamo la cartella base del progetto, che è quella che abbiamo creato prima (progetto1):

da questo momento in poi tutti i file e le cartelle che creeremo su NetBeans verranno inserite in quella cartella e potranno essere testate digitando l’indirizzo localhost/progetto1/nomeFile.php

 

Potrebbero interessarti anche...

Andrea Pastore 26/09/2020

2. La notazione CamelCase

Quando scriviamo un programma e dobbiamo assegnare i nomi alle varie entità (variabili, classi, package ecc.) non possiamo usare spazi, ad esempio non scriveremo

int numero oggetti;

ma scriveremo

int numeroOggetti;

la lettera iniziale della parola oggetti è scritta in maiuscolo, per una pratica nata negli anni 70 definita notazione CamelCase. Per facilitare la lettura del codice, i programmatori cominciarono a scrivere le inizali di ogni parola successiva alla prima in maiuscolo, ed è una pratica caldamente consigliata ancora oggi.

Leggi tutto

Andrea Pastore 27/09/2020

12. PHP e i form HTML

Modo di inviare i dati

HTML mette a disposizione due metodi per l’invio dei dati tramite form: get e post. La differenza tra i due è che il metodo get trasmette le variabili in chiaro, il metodo post le nasconde. Facciamo un esempio, supponiamo di avere questa form

In questo caso all’interno del tag form non viene specificato il metodo, perciò il browser invierà i dati tramite il metodo get. Nella barra degli indirizzi, quindi, vedremo questo:

i parametri inseriti potranno essere letti anche dall’occhio umano. Modifichiamo ora la form in modo che trasmetta i dati con il metodo post:

Cliccando su invia inserendo gli stessi dati avremmo questo risultato nella barra degli indirizzi:

I dati sono arrivati lo stesso a destinazione, ma non sono più visibili. Una volta usare il metodo post rendeva più sicure le applicazioni web, oggi preferibile usare questo metodo per non mostrare i campi all’utente, ma non basta più a garantire la sicurezza delle applicazioni.

Recuperare le informazioni con i metodi get e post

PHP dispone di due variabili di sistema da cui recuperare le informazioni: supponiamo di usare la stessa form di prima, che invia al server i due dati nome e cognome. Il codice per ricavare questi dati inviati tramite get sarà: 

    $nome       = $_GET["nome"];

    $cognome = $_GET["cognome"];

Il codice per ricavare queste stesse variabili inviate col metodo post sarà:

    $nome       = $_POST["nome"];

    $cognome = $_POST["cognome"];

Filtrare le informazioni passate in input

I campi input possono essere sfruttati da malintenzionati che possono provare ad entrare nel codice che stiamo scrivendo, per vari motivi. Per questo motivo è importante accertarsi che il codice inserito sia esattamente del tipo di dato che ci aspettiamo. PHP mette a disposizione la funzione filter_input. Vediamo come si usa, recuperiamo i campi nome e cognome in modo sicuro:

 $nome       = filter_input(INPUT_GET, "nome",FILTER_SANITIZE_STRING);

 $cognome = filter_input(INPUT_GET, "conome",FILTER_SANITIZE_STRING);

Il primo parametro richiesto da questa funzione è il tipo di input, ad esempio INPUT_GET per recupereare le impostazioni passate con GET. Il secondo parametro è il nome dell’elemento che vogliamo recuperare, il terzo parametro indica il tipo di filtro che vogliamo applicare. Ce ne sono diversi, vediamo i principali in questa tabella.

Tipo di filtro  funzione 
 FILTER_SANITIZE_STRING Filtro per controllare che l’input sia una stringa. Elimina tutti i caratteri che non fanno parte dell’alfabeto o dei numeri (ad esempio ?, !, @)  e i tag HTML.
 FILTER_SANITIZE_MAGIC_QUOTES Aggiunge un carattere di escape alle stringhe ogni volta che c’è un apice o un doppio apice
 FILTER_SANITIZE_NUMBER_INT Questo filtro elimina tutti i caratteri che non sono numeri
 FILTER_SANITIZE_EMAIL Filtro per controllare che l’input sia una email
 FILTER_SANITIZE_URL Filtro per controllare che l’input sia una URL

Vediamo un altro esempio: dobbiamo recuperare un id composto da solo numeri. Per essere sicuri che questo id contenga solo numeri, usiamo il filtro FILTER_SANITIZE_NUMBER_INT come mostrato qui sotto:

        $id      = filter_input(INPUT_GET,"id",FILTER_SANITIZE_NUMBER_INT);

Nota: non è obbligatorio utilizzare un filtro, è possibile usare filter_input anche senza il terzo parametro, come ad esempio:

        $id      = filter_input(INPUT_GET,"id");
Leggi tutto

Andrea Pastore 27/09/2020

15. Memorizzare dati sensibili sul database: le funzioni di hash

Ci sono dei dati che non possono essere memorizzati in chiaro, ad esempio prendiamo in considerazione una tabella di utenti dove vengono conservate, tra le alte cose, anche le password. Conservare le password in chiaro è un grave problema di sicurezza, perché se un malintenzionato riesce ad accedere al database avrà accesso alle password degli utenti.

Per evitare che questo accada si usano algoritmi di hash, ovvero algoritmi che data una stringa restituiscono una nuova stringa, molto più lunga e quindi più sicura. Per ottenere un hash di una stringa utilizziamo la funzione hash indicando come parametri l’algoritmo che vogliamo utilizzare e la stringa su cui vogliamo eseguire l’hash. Vediamo un esempio: supponiamo di voler effettuare l’hash della password admin:

	$hashStringa = hash("md5","admin");

Il risultato prodotto da questa funzione sarà la stringa sottostante:

21232f297a57a5a743894a0e4a801fc3

Esistono vari algoritmi di hash che si possono usare, qui sotto una tabella riassuntiva:

Algoritmo  Descrizione 
 md5 Produce una stringa di 32 caratteri. Oggi non è più considerato sicuro.
 sha1 Produce una stringa di 40 caratteri. Anche questo algoritmo è considerato troppo debole per gli standard moderni.
 sha256 Produce una stringa di 64 caratteri, è al limite e inizia ad essere considerato insufficiente come protezione.
 sha384 Produce una stringa di 96 caratteri
 sha512 Produce una stringa di 128 caratteri

Vediamo come creare uno script per il login che utilizzi un algoritmo di cifratura:

	  $user = $_POST['email'];

            // il parametro contenente la password viene passato alla funzione di hash insieme all'algoritmo che vogliamo utilizzare

            $psw  = hash("md5",$_POST['password']);

            $query = "SELECT * FROM utenti WHERE username LIKE '$user' AND password LIKE '$psw'";
Leggi tutto

Cerca...