English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di base PHP

Tutorial avanzato PHP

PHP & MySQL

Manuale di riferimento PHP

Validazione dei moduli PHP

In questo tutorial, imparerai come utilizzare i filtri PHP per pulire e verificare i dati del modulo.

pulizia e verifica dei dati del modulo

Come visto nell'ultimo tutorial, il processo di cattura e visualizzazione dei dati del modulo inviato è molto semplice. In questo tutorial, imparerai a implementare un modulo di contatto semplice sul tuo sito web che permette agli utenti di inviare commenti e feedback tramite email. Utilizzeremo lo stessoFunzione PHP mail()per inviare email.

Implementeremo anche alcune funzionalità di sicurezza di base, come la pulizia e la verifica del contenuto dell'input dell'utente, per garantire che l'utente non possa inserire dati potenzialmente dannosi per la sicurezza del sito o che possano danneggiare l'applicazione.

Ecco il nostro script PHP multiplo, che esegue le seguenti operazioni:

  • Chiederà all'utente di inserire i suoi commenti sul sito.

  • Illo stesso script mostra il modulo di contatto e gestisce i dati del modulo inviati.

  • Lo script pulisce e verifica l'input dell'utente. Se manca qualsiasi campo obbligatorio (contrassegnato con *), o se la validazione fallisce a causa di input non corretti, lo script visualizzerà di nuovo il modulo e mostrerà un messaggio di errore per il campo del modulo corrispondente.

  • Lo script ricorderà i campi compilati dall'utente e li precompilerà nei campi del modulo quando il modulo viene visualizzato di nuovo a causa di errori di validazione.

  • Se i dati inviati dall'utente sono accettabili e tutto va bene, invierà una email all'amministratore del sito e mostrerà un messaggio di successo all'utente.

In il file "contact.php", inserisci il seguente codice e salvalo nella directory principale del progetto:

<?php
//过滤用户输入的函数
function filterName($field){
    //清理用户名
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    
    //验证用户名
    if(filter_var($field, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        return $field;
    } else{
        return FALSE;
    }
}    
function filterEmail($field){
    //清理电子邮件地址
    $field = filter_var(trim($field), FILTER_SANITIZE_EMAIL);
    
    //Verifica l'indirizzo email
    if(filter_var($field, FILTER_VALIDATE_EMAIL)){
        return $field;
    } else{
        return FALSE;
    }
}
function filterString($field){
    // 清理字符串
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    se (!vuoto($field)){}}
        return $field;
    } else{
        return FALSE;
    }
}
 
//Definisci le variabili e inizializzale con valori vuoti
$nameErr = $emailErr = $messageErr = "";
$name = $email = $subject = $message = "";
 
//Elabora i dati del modulo quando si invia il modulo
se ($_SERVER["REQUEST_METHOD"] == "POST"){
 
    //Verifica il nome dell'utente
    se (vuoto($_POST["name"])){
        $nameErr = "Per favore, inserisci il tuo nome.";
    } else{
        $name = filtraNome($_POST["name"]);
        se ($name == FALSE){
            $nameErr = "Inserisci un nome valido.";
        }
    }
    
    //Verifica l'indirizzo email
    se (vuoto($_POST["email"])){
        $emailErr = "Inserisci il tuo indirizzo email.";     
    } else{
        $email = filtraEmail($_POST["email"]);
        se ($email == FALSE){
            $emailErr = "Per favore, inserisci un indirizzo email valido.";
        }
    }
    
    //Valida l'oggetto del messaggio
    se (vuoto($_POST["subject"])){
        $subject = "";
    } else{
        $subject = filtraStringa($_POST["subject"]);
    }
    
    //Verifica il commento dell'utente
    se (vuoto($_POST["message"])){
        $messageErr = "Per favore, inserisci il tuo commento.";     
    } else{
        $message = filtraStringa($_POST["message"]);
        se ($message == FALSE){
            $messageErr = "Inserisci un commento valido.";
        }
    }
    
    //Controlla gli errori di input prima di inviare l'email
    se (vuoto($nameErr) && vuoto($emailErr) && vuoto($messageErr)){
        // Indirizzo email del destinatario
        $to = '[email protected]';
        
        // Creazione intestazioni email
        $headers = 'From: '. $email . '\r\n' .
        'Reply-To: '. $email . '\r\n' .
        'X-Mailer: PHP/' . phpversion();
        
        // Invio email
        if(mail($to, $subject, $message, $headers)){
            echo '<p class="success">Il tuo messaggio è stato inviato con successo!</p>';
        } else{
            echo '<p class="error">Impossibile inviare l'email. Si prega di riprovare!</p>';
        }
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Contact Form</title>
    <style type="text/css">
        .error{ color: red; }
        .success{ color: green; }
    </style>
</head>
    <h2>Contattaci</h2>
    <p>Si prega di compilare questo modulo e inviarlo a noi</p>
    <form action="contact.php" method="post">
        <p>
            <label for="inputName">Name:<sup>*</sup></label>
            <input type="text" name="name" id="inputName" value="<?php echo $name; ?>">
            <span class="error"><?php echo $nameErr; ?></span>
        </p>
        <p>
            <label for="inputEmail">Email:<sup>*</sup></label>
            <input type="text" name="email" id="inputEmail" value="<?php echo $email; ?>">
            <span class="error"><?php echo $emailErr; ?></span>
        </p>
        <p>
            <label for="inputSubject">Oggetto:</label>
            <input type="text" name="subject" id="inputSubject" value="<?php echo $subject; ?>">
        </p>
        <p>
            <label for="inputComment">Messaggio:<sup>*</sup></label>
            <textarea name="message" id="inputComment" rows="5" cols="30"><?php echo $message; ?></textarea>
            <span class="error"><?php echo $messageErr; ?></span>
        </p>
        <input type="submit" value="Invia">
        <input type="reset" value="Ripristina">
    </form>
</html>

Uso del codice

Potresti pensare a tutto il significato di questo codice. Bene, entriamo direttamente nel vivo.

  • La funzione filterName() verifica se il valore di input è un nome. Un nome valido può contenere solo caratteri alfabetici (a-z, A-Z).

  • La funzione filterEmail() verifica che il valore di input sia un indirizzo email.

  • La funzione filterString() pulisce i valori di input passando attraverso la rimozione dei tag HTML e dei caratteri speciali. Non verifica alcun valore di input.

  • all'interno del tag<form>L'attributo action="contact.php" dell'<form> specifica lo stesso file contact.php per visualizzare il modulo e gestire i dati del modulo.

  • <input>e<textarea>Il codice PHP all'interno dell'attributo value, ad esempio <?php echo $name; ?> mostra nuovamente il valore precompilato se si verifica un errore di convalida del modulo.

  • Il codice PHP all'interno della classe .error, ad esempio <span class="error"><?php echo $nameErr; ?></span> mostra l'errore del campo corrispondente.

 Per ulteriori informazioni sulla pulizia e convalida dei filtri, consultaFiltri PHPRiferimento.

Attenzione:Devi configurare il server di posta elettronica sul computer per far funzionare correttamente la funzione PHP mail(). Se desideri eseguire solo la convalida del modulo, puoi sostituire la parte dell'email con il tuo codice personalizzato.