Una delle funzioni più richieste del sito è il modulo di richiesta o d'ordine, i cui dati vengono inviati alla mail del titolare del sito. Di norma, tali moduli sono semplici e consistono in due o tre campi per l'inserimento dei dati. Come creare un tale modulo d'ordine? Ciò richiederà l'uso del linguaggio di markup HTML e del linguaggio di programmazione PHP.
Il linguaggio di markup HTML stesso è semplice, devi solo capire come e dove inserire determinati tag. Con il linguaggio di programmazione PHP, le cose sono un po' più complicate.
Non è difficile per un programmatore creare un tale modulo, ma alcune azioni possono sembrare difficili per un programmatore HTML.
Creazione di un modulo di invio html
La prima riga sarà la prossima
Ora mettiamo tutto insieme.
Ora rendiamo obbligatori i campi del modulo. Abbiamo il seguente codice:
Crea un file che accetta dati da un modulo HTML
Questo sarà un file chiamato send.php
Nel file, nella prima fase, devi ricevere i dati dal post array. Per fare ciò, creiamo due variabili:
$fio = $_POST["fio"];
$email = $_POST["email"];
I nomi delle variabili in php sono preceduti da un segno $ e un punto e virgola è posizionato alla fine di ogni riga. $_POST è un array a cui vengono passati i dati dal modulo. Nel modulo html viene specificato il metodo send method="post". Quindi, due variabili vengono prese dal modulo html. Per proteggere il tuo sito, devi passare queste variabili attraverso diversi filtri - funzioni php.
La prima funzione convertirà tutti i caratteri che l'utente proverà ad aggiungere al modulo:
In questo caso, non vengono create nuove variabili in php, ma vengono utilizzate quelle esistenti. Quello che farà il filtro è convertire il carattere "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
La seconda funzione decodifica l'URL se l'utente tenta di aggiungerlo al modulo.
$fio = urldecode($fio);
$email = urldecode($email);
Con la terza funzione, rimuoveremo gli spazi dall'inizio e dalla fine della stringa, se presenti:
$fio = taglia($fio);
$email = taglia($email);
Ci sono altre funzioni che ti permettono di filtrare le variabili php. Il loro utilizzo dipende da quanto hai paura che un utente malintenzionato tenti di aggiungere codice di programma a questa forma di invio di dati alla posta html.
Convalida i dati passati dal modulo HTML al file PHP
Per verificare se questo codice funziona, se i dati sono in trasferimento, puoi semplicemente visualizzarli sullo schermo utilizzando la funzione echo:
eco $fio;
eco "
";
eco $fio;
La seconda riga qui è necessaria per separare l'output delle variabili php in righe diverse.
Invio dei dati ricevuti dal modulo HTML alla posta tramite PHP
Per inviare dati alla posta, è necessario utilizzare la funzione posta in PHP.
mail("a quale indirizzo inviare", "oggetto della lettera", "Messaggio (corpo della lettera)","Da: da quale email viene inviata la lettera \r\n");
Ad esempio, è necessario inviare i dati all'e-mail del proprietario o gestore del sito [email protetta]
L'oggetto dell'e-mail deve essere chiaro e il messaggio dell'e-mail deve contenere ciò che l'utente ha specificato nel modulo HTML.
posta(" [email protetta]", "Applicazione dal sito", "Nome:".$fio.". E-mail: ".$email ,"Da: [email protetta]\r\n");
È necessario aggiungere una condizione che verificherà se il modulo è stato inviato utilizzando PHP all'indirizzo e-mail specificato.
se (posta(" [email protetta]", "Ordina dal sito", "Nome:".$fio.". E-mail: ".$email ,"Da: [email protetta]\r\n"))
{
echo "messaggio inviato con successo";
) altro (
}
Pertanto, il codice del programma del file send.php, che invierà i dati del modulo HTML alla posta, sarà simile al seguente:
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = caratteri htmlspeciali($fio);
$email = htmlcaratteri speciali($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = taglia($fio);
$email = taglia($email);
//eco $fio;
// eco "
";
//eco $email;
se (posta(" [email protetta]", "Applicazione dal sito", "Nome:".$fio.". E-mail: ".$email ,"Da: [email protetta]\r\n"))
( echo "messaggio inviato con successo";
) altro (
echo "si sono verificati errori durante l'invio del messaggio";
}?>
Le tre righe per verificare se i dati vengono passati al file sono commentate. Se necessario, possono essere rimossi, poiché erano necessari solo per il debug.
Inserisci il codice di invio del modulo HTML e PHP in un unico file
Nei commenti a questo articolo, molte persone chiedono come fare in modo che sia il modulo HTML che il codice PHP per l'invio dei dati alla posta siano in un file, non in due.
Per implementare questo lavoro, è necessario inserire il codice HTML del form nel file send.php e aggiungere una condizione che verificherà la presenza di variabili nell'array POST (questo array viene passato dal form). Cioè, se le variabili nell'array non esistono, è necessario mostrare all'utente un modulo. In caso contrario, è necessario prelevare i dati dall'array e inviarli al destinatario.
Vediamo come modificare il codice PHP nel file send.php:
//verifica se esistono variabili nell'array POST
if(!isset($_POST["fio"]) e !isset($_POST["email"]))(
?> ) altro (
//mostra il modulo
$fio = $_POST["fio"];
$email = $_POST["email"];
$fio = caratteri htmlspeciali($fio);
$email = htmlcaratteri speciali($email);
$fio = urldecode($fio);
$email = urldecode($email);
$fio = taglia($fio);
$email = taglia($email);
se (posta(" [email protetta]", "Applicazione dal sito", "Nome:".$fio.". E-mail: ".$email ,"Da: [email protetta]\r\n"))(
echo "Messaggio inviato con successo";
) altro (
echo "Si sono verificati errori durante l'invio del messaggio";
}
}
?>
Verifichiamo l'esistenza di una variabile nell'array POST con la funzione PHP isset(). Un punto esclamativo prima di questa funzione in una condizione significa negazione. Cioè, se la variabile non esiste, allora dobbiamo mostrare il nostro modulo. Se non avessi messo un punto esclamativo, la condizione significherebbe letteralmente: "se esiste, mostra il modulo". E questo è sbagliato nel nostro caso. Naturalmente, puoi rinominarlo in index.php. Se rinomini il file, non dimenticare di rinominare il nome del file e nella riga