Come faccio a fare in modo che se uno degli input è vuoto appare un messaggio di errore e non fa proseguire? (Spiegate in modo semplice, non sono molto esperto in campo PHP)
Come faccio a fare in modo che se uno degli input è vuoto appare un messaggio di errore e non fa proseguire? (Spiegate in modo semplice, non sono molto esperto in campo PHP)
Se ad esempio hai un campo "nome" e questo non viene riempito, supponendo inoltre che i dati li invii tramite metodo POST
Codice PHP:
if($_POST['nome'] != "") {
//tutto ok, codice per andare avanti
}
else {
echo "Fermi tutti! Nel campo nome ci devi scrivere qualcosa!!!";
}
Non funziona, appare echo normale , cioè appare sempre quella frase ma la mail viene inviata ugualmente (nel codice php ho messo la funzione della mail per chiarire) .. :S
sei sicuro che spedisci con il metodo post ?
stampa i parametri:
print_r($_POST);
se è zero non invii con post.
2000 post e sono più vecchio di 4 anni...
grazie a tutti....
agenti nel codice html ho scritto:
<form method="POST" action="dati.php">
non vedo per cui non dovrebbe essere così
Io ti ho scritto la struttura, ovvio che solo con quello non ti funziona, ma una volta che sai distinguere se il campo è vuoto o no dovrebbe essere facile decidere se inviare la mail o no, basta eseguire l'invio solo se dopo tutti i controlli non sei mai entrato in un else.
Ad esempio se negli else metti un redirect invece di un semplice echo sei a posto.
Ovviamente puoi fare anche in altri modi, dipende da come preferisci tu.
Il modo migliore per aiutarti è avere il tuo script sotto gli occhi.
Codice PHP:
Codice HTML:Codice PHP:
<?php
$nickname = $_POST['nickname'];
$centro = $_POST['centro'];
$nomecentro = $_POST['nomecentro'];
$ruolo = $_POST['ruolo'];
$candidatura = $_POST['candidatura'];
$ip = $_SERVER['SERVER_ADDR'];
$destinatario = "provamail@hotmail.com";
$oggetto = "Candidatura Security Expert";
$testo = "Nickname: $nickname
Ha lavorato in un centro aiuti? $centro
Nome del center: $nomecentro
Ruolo nel center: $ruolo
Candidaura:
$candidatura
IP: $ip ";
mail($destinatario,$oggetto,$testo);
if($_POST['nickname'] != "") {
//tutto ok, codice per andare avanti
}
else {
echo "Riempi i campi richiesti per favore!;
}
if($_POST['centro'] != "") {
//tutto ok, codice per andare avanti
}
else {
echo "Riempi i campi richiesti per favore!";
}
if($_POST['candidatura'] != "") {
//tutto ok, codice per andare avanti
}
else {
echo "Riempi i campi richiesti per favore!";
}
?>
codice:<html> <head> <title>Security Expert</title> </head> <body> <center> <font color="red"> <form method="POST" action="dati.php"> Inserisci il tuo nickname in Habbo.it <input type="text" name="nickname"> Hai fatto parte di un centro aiuti?(Se sì specificane il nome, proprietario e il tuo ruolo in esso) <input type="radio" value="Sì" name="centro">Sì <input type="radio" value="No" name="centro">No <table style="text-align: center"><tr><td><font color="red">Help Center - Proprietario <input type="text" name="nomecentro"></font></td> <td><font color="red">Ruolo <input type="text" name="ruolo"></font></td></tr></table></div> Lascia qui la tua candidatura <textarea name="candidatura" cols="54" rows="15"></textarea> <center><input type="submit" value="Invia"></center></form> </font> </center> </body> </html>
cambia gli if in questo modo
Codice PHP:
if(isset($_POST['nickname']) && $_POST['nickname'] != "")
Se metti i controlli dopo l'invio della mail non ha molto senso.
Prova una cosa del genere:
Codice PHP:
if ( ! empty($_POST))
{
foreach ($_POST as $chiave=>$valore)
{
if ($valore == "")
{
$validato = FALSE;
echo "Tutti i campi devono essere riempiti.";
break;
}
$validato = TRUE;
}
}
if ($validato)
{
$testo = "Nickname: $nickname
Ha lavorato in un centro aiuti? $centro
Nome del center: $nomecentro
Ruolo nel center: $ruolo
Candidaura:
$candidatura
IP: $ip ";
mail($destinatario,$oggetto,$testo);
}