PHP: Form invio e ricezione dati

PHP data exchange

PHP: Form invio e ricezione dati, uno degli aspetti fondamentali dell ‘architettura client-server.

Per fare un ripasso della sintassi del linguaggio ti consiglio la seguente lezione: PHP : Le istruzioni base

In questa lezione imparerai:

Inviare dati da un form HTML ad uno script PHP

Il nostro form HTML può essere hostato sul nostro server, su un altro server o eseguito in locale su una macchina con accesso al web.

Il nostro script deve essere hostato su un server web.

<form action="scripts/signup.php" method="post">
            <input type="text" name="username"/>
            <input type="password" name="password"/>
            <input type="submit"/>
</form>

Nota: l’url specificato nell’attributo action del tag può essere interno al nostro server web (come in questo caso) o esterno al nostro server web in quel caso sarà simile a :

action="http://otherserver.com/signup.php"

Un semplice script PHP che visualizza i dati e quindi ti aiuta a confermare la correttezza del setup e la ricezione delle giuste informazioni:

<?php
    $username=$_POST['username'];
    $password=$_POST['password'];
    echo "USERNAME: ".$username."<br/>";
    echo "PASSWORD: ". $password;
?>
form invio dati
form invio dati
output dello script signup.php
output dello script signup.php

Creare dei form che rispondono alle specifiche di una base dati

Un buon sviluppatore sa bene che la costruzione di una web application dipende fortemente dalla progettazione del database con il quale scambierà dati.

Un esempio: abbiamo le specifiche di una tabella del database che rappresenta gli utenti e noi dobbiamo realizzare un form per inviare i dati in modo che siano conformi a quelli della tabella

struttura della tabella users
struttura della tabella users

Otteniamo le seguenti informazioni:

  • i campi non possono essere vuoti (NOT NULL)
  • non dovremo gestire l’id che sarà gestito direttamente dal DBMS
  • l’email deve essere lunga al massimo 60 caratteri
  • la lunghezza della password nel DB non rappresenta quella inserita dall’utente ma la dimensione dopo averla crittografata
  • stabiliamo con il resto del team che la password deve contenere almeno un numero, una lettera maiuscola, una minuscola e almeno 8 caratteri

Puoi passare ora a scrivere il form

<form>
            <input type="email" name="email" maxlength="60" placeholder="E-Mail"/>
            <input type="password" name="password" minlength="8" placeholder="Password"/>
            <input type="submit"/>
</form>

l’attributo minlength ti permette di stabilire un numero minimo di caratteri, maxlength un numero massimo di caratteri (non permettendo di inserirne altri nella casella di input).

controllo attributo HTML minlength
controllo attributo HTML minlength

Validazione build-in HTML 5

  • required: specifica se un campo modulo deve essere compilato prima che il modulo possa essere inviato.
  • minlength e maxlength: specifica la lunghezza minima e massima dei dati testuali (stringhe).
  • min e max: specifica i valori minimo e massimo dei tipi di input numerici.
  • type: specifica se i dati devono essere un numero, un indirizzo e-mail o un altro tipo di preimpostazione specifico.
  • pattern: specifica un’espressione regolare che definisce un modello che i dati immessi devono seguire.

Modifica il form precedente:

<form>
            <input type="email" name="username" maxlength="60" placeholder="E-Mail" required/>
            <input type="password" name="password" minlength="8" placeholder="Password" pattern="(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}" required/>
            <input type="submit"/>
</form>
controllo form sul pattern per la password
controllo form sul pattern per la password
controllo required nel campo email
controllo required nel campo email

Sanificazione stringhe in PHP

Sanificare le stringhe in PHP permette di rimuovere qualsiasi carattere illegale dai dati di input e anche di determinare se questi dati di input sono nella forma corretta.

Per sanificare un dato di tipo email :

<?php
    $email=$_POST['email'];
    $email_filterd = filter_var($email, FILTER_SANITIZE_EMAIL);
    echo $email_filtered;
?>

Per sanificare i campi di tipo stringa puoi creare una funzione :

function sanitizeString($data){
        $data = trim($data);                   //rimuove gli spazi prima e dopo la stringa 
        $data = stripslashes($data);    // rimuove gli slashes 
        $data=(filter_var($data, FILTER_SANITIZE_STRING));
        return $data;
}

Bisogna ricordare che queste sono solo le basi per iniziare a validare e a controllare i dati di un form.

Capitolo Security su php.net

Mozilla Website security

Pubblicato da Carlo Contardi

Carlo Contardi, docente di informatica e sviluppatore Full Stack, condivide la sua passione per la programmazione e l’informatica attraverso il suo blog Space Coding. Offre preziosi consigli e soluzioni pratiche a chi vuole imparare a programmare o migliorare le proprie abilità. 🚀👨‍💻

Translate »