Form e Dati in PHP 8
Form e Dati in PHP 8

Form e Dati in PHP 8 : Corso PHP 8 Gratis – Lezione 8

Introduzione

I form web sono una parte essenziale delle applicazioni web moderne, permettendo agli utenti di fornire input e interagire con il sito. Lavorare con form e dati in PHP 8 è un processo semplice e diretto, ma ci sono alcune buone pratiche che devi seguire per assicurarti che i dati siano gestiti in modo sicuro ed efficace. In questa lezione, esploreremo come creare form HTML, come catturare e gestire i dati del form in PHP, e come validare e sanificare l’input per prevenire vulnerabilità comuni come l’iniezione di SQL e l’attacco XSS. Se desideri rivedere le lezioni precedenti o navigare attraverso il corso, puoi visitare la pagina indice del corso PHP 8 gratis.

Creazione di Form HTML

I form HTML sono il punto di partenza per la raccolta dei dati. Ecco un esempio di un semplice form HTML:

<form action="processa.php" method="post">
    Nome: <input type="text" name="nome"><br>
    Email: <input type="text" name="email"><br>
    <input type="submit" value="Invia">
</form>

Spiegazione del Codice:

  • Il form HTML utilizza il metodo POST per inviare i dati al file processa.php.
  • Ci sono due campi di input nel form: uno per il nome e uno per l’email.
  • Un pulsante di invio permette all’utente di inviare il form.

Cattura dei Dati del Form in PHP

I dati inviati tramite il form possono essere catturati in PHP usando le superglobali $_GET o $_POST, a seconda del metodo di invio specificato nel form.

<?php
$nome = $_POST['nome'];
$email = $_POST['email'];
// ...
?>

Spiegazione del Codice:

  • Le superglobali $_POST sono utilizzate per catturare i dati inviati tramite il form.
  • I dati catturati sono assegnati alle variabili $nome ed $email per ulteriori elaborazioni.

Validazione e Sanificazione di Form e Dati in PHP 8

Sanificare i dati ricevuti da un form in PHP è essenziale per prevenire attacchi come l’injection SQL e cross-site scripting (XSS). Ecco alcune tecniche comuni per farlo:

  1. Filtraggio dell’Input: Utilizzare le funzioni di filtraggio di PHP per validare e pulire i dati in ingresso. Il PHP filter_var() e le funzioni filter_input() sono utili per questo.
  • Per esempio, per sanificare una stringa email: $email = filter_input(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
  • Per una stringa generica, si potrebbe usare:
    php $data = filter_input(INPUT_POST, 'data', FILTER_SANITIZE_STRING);
  1. Escape dei Dati prima dell’Output: Quando si inseriscono dati in una pagina HTML, è importante fare l’escape dei caratteri speciali per prevenire attacchi XSS. La funzione htmlspecialchars() è comunemente usata per questo.
   echo htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
  1. Uso di Prepared Statements per Database Queries: Quando si inseriscono dati ricevuti da un form in un database, è fondamentale utilizzare prepared statements per prevenire SQL injection. Con PDO o MySQLi, puoi preparare una query e poi legare i parametri di input.
  • Con PDO: $stmt = $pdo->prepare("INSERT INTO table (colonna) VALUES (:valore)"); $stmt->bindParam(':valore', $valore, PDO::PARAM_STR); $stmt->execute();
  • Con MySQLi:
    php $stmt = $mysqli->prepare("INSERT INTO table (colonna) VALUES (?)"); $stmt->bind_param('s', $valore); $stmt->execute();
  1. Validazione dei Dati: Oltre alla sanificazione, è importante anche validare i dati per assicurarsi che soddisfino determinati criteri (ad esempio, controllare che un indirizzo email sia in un formato valido).
  2. Controllo dei Dati Caricati: Se il tuo form permette l’upload di file, assicurati di controllare il tipo di file e la dimensione per prevenire l’upload di file dannosi.
  3. Uso di CSRF Tokens: Per prevenire attacchi di tipo Cross-Site Request Forgery (CSRF), utilizza token CSRF nei tuoi form. Questo assicura che le richieste al server provengano effettivamente dal tuo sito.
  4. Impostazioni di Configurazione di PHP: Configura correttamente il tuo ambiente PHP. Ad esempio, disabilita register_globals e magic_quotes_gpc se sono abilitati.

Ricorda che la sicurezza di form e Dati in PHP 8 è un processo multilivello e dovrebbe essere affrontata sia a livello di input che di output.

Gestione Sicura dell’Input dell’Utente

Seguire le buone pratiche di sicurezza come l’uso di prepared statements per prevenire l’iniezione di SQL, e l’escape dell’output per prevenire attacchi XSS.

<?php
$mysqli = new mysqli("localhost", "utente", "password", "database");

$nome = $mysqli->real_escape_string($nome);
$query = "INSERT INTO utenti (nome, email) VALUES ('$nome', '$email')";

if (!$mysqli->query($query)) {
    echo "Errore nella query: " . $mysqli->error;
}
?>

Spiegazione del Codice:

  • Si stabilisce una connessione con il database usando mysqli.
  • Si utilizza real_escape_string() per prevenire l’iniezione di SQL.
  • Se la query fallisce, viene stampato un messaggio di errore.

Esercizi Pratici

  1. Creazione e Gestione Form: Crea un form HTML e scrivi uno script PHP per gestire i dati inviati.
  2. Validazione dei Dati: Aggiungi una validazione dei dati allo script PHP per assicurarti che l’input sia valido e sicuro.

Approfondimenti e Risorse Aggiuntive

Hai completato la Lezione 8 del nostro corso PHP 8 gratis! Per approfondire ulteriormente i tuoi studi e scoprire altri argomenti interessanti relativi alla programmazione, ti invitiamo a visitare la nostra sezione dedicata alla programmazione sul blog. La documentazione ufficiale di PHP presenta un tutorial dedicato alla gestione delle form e dati in PHP 8 (in lingua inglese).


Lavorare con form e dati è una competenza fondamentale nello sviluppo web. Seguendo le buone pratiche discusse in questa lezione, sarai in grado di creare form interattivi e gestire l’input dell’utente in modo sicuro ed efficace.

Lascia un commento