- Home
- Categorie
- Coding e Sistemistica
- PHP
- rendere obbligatori campi form
-
rendere obbligatori campi form
Salve a tutti, sono un nuovo iscritto al forum con un "problemino" che vorrei sottoporvi.
Sono alle prese con un form per invio dati via mail da sito, in html + php.
vorrei rendere obbligatori i campi da compilare ottenendo, in caso di mancata compilazione, un messaggio di errore o comunque un avviso.Allego il codice php:
<?php
/INVIO DATI/
$destinatario = "[email protected]";
$oggetto = "Invio dati e richiesta informazioni corso";
$messaggio = "Nome: ".htmlentities($_POST['Nome'])."\n";
$messaggio .= "Cognome: ".htmlentities($_POST['Cognome'])."\n";
$messaggio .= "Giorno: ".htmlentities($_POST['Giorno'])."\n";
$messaggio .= "Mese: ".htmlentities($_POST['Mese'])."\n";
$messaggio .= "Anno: ".htmlentities($_POST['Anno'])."\n";
$messaggio .= "Citta: ".htmlentities($_POST['Citta'])."\n";
$messaggio .= "Provincia: ".htmlentities($_POST['Provincia'])."\n";
$messaggio .= "Telefono: ".htmlentities($_POST['Telefono'])."\n";
$messaggio .= "Email: ".htmlentities($_POST['email'])."\n";//$messaggio .= "Data: $data\n";
//$messaggio .= "Citta': $citta\n";
//$messaggio .= "Provincia: $provincia\n";
//$messaggio .= "Email: $email\n";
$messaggio .= $testo;$da = $email;
$intestazioni = "From: $da";mail($destinatario,$oggetto,$messaggio,$intestazioni);
?>
Qualcuno puo' aiutarmi?
Grazie
-
Tutti i campi sono obbligatori? Se cosi` fosse basta un ciclo che controlla tutti i valori passati in $_POST:
foreach($_POST as $item){
if($item == ''){ //oppure !isset($item) credo vada bene
echo "Errore, campo non compilato!";
exit;
}
}Testa e vedi se funziona.
Ci sono soluzioni piu` eleganti, dal controllo profondo ad alcune librerire javascript ma questo dovrebbe funzionare!
-
grazie andrearufo per la risposta
Si, vorrei rendere obbligatori tutti i campidevo inserire il ciclo in qualche punto particolare del codice?
-
Anche se l'effetto potrebbe essere lo stesso io lo inserirei come primissimo passaggio dello script prima che i valori vengano assegnati alle variabili (ottimizzando lo script).
Eventualmente aggiungi qualche filtro onde evitare iniezione di codife malevolo!
-
ho provato a metterlo dopo la sfilza di $messaggio e... FUNZIONA!!
scusa ma cosa intendi per "ottimizzare lo script"?
e per filtri contro il codice malevolo? cosi' com'è corro qualche rischio?
mi piacerebbe inserire un codice CAPTCHA... forse ti riferisci a quello??un ultima domanda... l'echo di risposta del tuo script...
sono riuscito a centrarlo nella riga con un <center>...</center>
...posso anche cambiare carattere, dimensione, colore etc etc?
magari centrarlo nella pagina?ti ringrazio per la disponibilità
-
Bhe, Alberto, mi pare proprio che manchi nelle piu` minime nozione di PHP per comprendere quello che stai facendo.
Per ottimizzare lo script intendo questo: per inizializzare variabili e per computare alcune operazioni (inizializza $message, aggiungi questo, aggiungi quello e quell'altro...) si occupa tempo e memoria del server che poi e` inutile se, dopo queste operazioni, si esegue il controllo che blocca il tutto. Sarebbe meglio mettere il controllo prima. Ma questo non compromette l'esecuzione.
A meno di iniezione di codice, ovvero, senza la giusta protezione, un malintenzionato potrebbe inserire del codice nei campi che verrebbe male interpretato dal server mandando in crash lo script e avendo problemi di sicurezza (discorsi complessi). Si puo` evitare questo magari utilizzando dei filtri sui campi (addslashes, htmlentities, replace, ecc.): ti consiglio di leggere un manuale e la documentazione PHP.
Il CAPTCHA serve solo in fase di inserimento (quindi nella pagina prima dello script che controlla e manda la mail) a vedere se e` unmano o macchina chi scrive nel form.
Quello restituito dall'echo e
puro HTML e puoi scriverci i tag che vuoi e stilarlo anche in CSS: il tag <center> e
deprecato e non sarebbe da usare. Usa il tag <p> e stilalo in CSS per avere un risultato moderno, professionale e validato.