Ciao a tutti, ho fatto uno script ma ho notato un comportamento anomalo.
Più nel dettaglio: ho una select con 3 opzioni
In base se viene scelto azienda o privato appare un campo.
Bene, se non tocco niente e clicco sul tasto "invia messaggio" il form viene inviato e a me chiaramente arriva una mail in bianco.
Al contrario se scelgo almeno la select tutto funziona regolarmente (o almeno mi sembra, inizio ad essere fuso oggi!
)
Oltre a php uso anche jquery validation ma non credo che quello dia problemi.
Questo il codice php:
Link del sito dove ho il problema: http://locandadellastazione.com/locandadellastazione/prezzi.php
Se volete provare fate pure, mi arriverà una mail bianca, ma non c'è problema!
Grazie a chiunque tenterà di aiutarmi!
Più nel dettaglio: ho una select con 3 opzioni
HTML:
<label>Tipologia*</label>
<select class="uk-select" name="tipologia" id="tipologia">
<option value="default" disabled selected>Seleziona</option>
<option value="privato">Privato</option>
<option value="azienda">Azienda</option>
</select>
<script>
$('#tipologia').on('change',function(){
if( $(this).val()==="azienda"){
$("#divAzienda").show()
$("#divNome").css("margin-top","40px")
}
else{
$("#divAzienda").hide()
}
});
</script>
In base se viene scelto azienda o privato appare un campo.
Bene, se non tocco niente e clicco sul tasto "invia messaggio" il form viene inviato e a me chiaramente arriva una mail in bianco.
Al contrario se scelgo almeno la select tutto funziona regolarmente (o almeno mi sembra, inizio ad essere fuso oggi!

Oltre a php uso anche jquery validation ma non credo che quello dia problemi.
Questo il codice php:
PHP:
<?php
if (isset($_GET["action"]))
{
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = array('secret' => "XXXXXXXXXXXXXXXX", 'response' => $_POST["g-recaptcha-response"]);
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) {
echo '<script>
UIkit.notification({
message : "Sei un robot? Errore reCAPTCHA.",
status : "warning",
timeout : 0,
pos : "top-center"
});
</script>';
}
else
{
$decodedresult = json_decode($result, true);
if($decodedresult['success'] == true) {
switch($_POST['tipologia']){
case 'azienda':
require "GUMP/gump.class.php";
$gump = new GUMP();
$_POST = $gump->sanitize($_POST); // You don't have to sanitize, but it's safest to do so.
$gump->validation_rules(array(
'tipologia' => 'required',
'azienda' => 'required|alpha_numeric',
'nome' => 'required|alpha',
'email' => 'required|valid_email',
'telefono' => 'required|numeric',
'dataArrivo' => 'required',
'dataPartenza' => 'required',
'persone' => 'required|numeric',
'trattamento' => 'required',
));
$gump->filter_rules(array(
'azienda' => 'trim|sanitize_string',
'nome' => 'trim|sanitize_string',
'email' => 'trim|sanitize_email',
'messaggio' => 'trim|sanitize_string'
));
$validated_data = $gump->run($_POST);
break; // fine condizione nel caso venga scelto azienda
case 'privato':
require "GUMP/gump.class.php";
$gump = new GUMP();
$_POST = $gump->sanitize($_POST); // You don't have to sanitize, but it's safest to do so.
$gump->validation_rules(array(
'tipologia' => 'required',
'nome' => 'required|alpha',
'email' => 'required|valid_email',
'telefono' => 'required|numeric',
'dataArrivo' => 'required',
'dataPartenza' => 'required',
'persone' => 'required|numeric|min_len,1',
'trattamento' => 'required',
));
$gump->filter_rules(array(
'azienda' => 'trim|sanitize_string',
'nome' => 'trim|sanitize_string',
'email' => 'trim|sanitize_email',
'messaggio' => 'trim|sanitize_string'
));
$validated_data = $gump->run($_POST);
break; // fine condizione nel caso venga scelto privato
}
if($validated_data === false) {
echo '<script>
UIkit.notification({
message : "Compila il modulo correttamente.",
status : "warning",
timeout : 0,
pos : "top-center"
});
</script>';
echo '<div class="uk-alert-warning" uk-alert>
<a class="uk-alert-close" uk-close></a>
<p> '.$gump->get_readable_errors(true).' </p>
</div>';
}
else {
$tipologia = !empty($_POST['tipologia'])?$_POST['tipologia']:'';
$azienda = !empty($_POST['azienda'])?$_POST['azienda']:'';
$nome = !empty($_POST['nome'])?$_POST['nome']:'';
$email = !empty($_POST['email'])?$_POST['email']:'';
$telefono = !empty($_POST['telefono'])?$_POST['telefono']:'';
$dataArrivo = !empty($_POST['dataArrivo'])?$_POST['dataArrivo']:'';
$dataPartenza = !empty($_POST['dataPartenza'])?$_POST['dataPartenza']:'';
$persone = !empty($_POST['persone'])?$_POST['persone']:'';
$camera = !empty($_POST['camera'])?$_POST['camera']:'';
$trattamento = !empty($_POST['trattamento'])?$_POST['trattamento']:'';
$messaggio = !empty($_POST['messaggio'])?$_POST['messaggio']:'';
$checkbox = !empty($_POST['checkbox'])?$_POST['checkbox']:'no';
// corpo della mail
$to = 'info@XXXXXX.com'; // <--- inserire e-mail destinatario
$subject = "Ti ha scritto dal tuo sito: $nome";
$htmlContent = "
<ul style='list-style: none; padding-left: 0;'>
<li style='margin: 0 0 15px 0;'>Questi sono i dettagli del messaggio:</li>
<li style='margin: 0 0 5px 0;'><b>Tipologia:</b> ".$tipologia."</li>
<li style='margin: 0 0 5px 0;'><b>Azienda:</b> ".$azienda."</li>
<li style='margin: 0 0 5px 0;'><b>Nome:</b> ".$nome."</li>
<li style='margin: 0 0 5px 0;'><b>E-mail:</b> ".$email."</li>
<li style='margin: 0 0 5px 0;'><b>Telefono:</b> ".$telefono."</li>
<li style='margin: 0 0 5px 0;'><b>Data di arrivo:</b> ".$dataArrivo."</li>
<li style='margin: 0 0 5px 0;'><b>Data di partenza:</b> ".$dataPartenza."</li>
<li style='margin: 0 0 5px 0;'><b>Persone:</b> ".$persone."</li>
<li style='margin: 0 0 5px 0;'><b>Camera:</b> ".$camera."</li>
<li style='margin: 0 0 5px 0;'><b>Trattamento:</b> ".$trattamento."</li>
<li style='margin: 0 0 5px 0;'><b>Messaggio:</b> ".$messaggio."</li>
<li style='margin: 0 0 5px 0;'><b>Accettazione Privacy:</b> ".$checkbox."</li>
</ul>
";
// impostare sempre content-type quando si invia una mail in HTML
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// headers
$headers .= 'From:'.$nome.' <'.$email.'>' . "\r\n";
// invio mail
@mail($to,$subject,$htmlContent,$headers);
echo '<script>
UIkit.notification({
message : "Messaggio inviato!",
status : "success",
timeout : 0,
pos : "top-center"
});
</script>';
}
}
else
{
echo '<script>
UIkit.notification({
message : "Messaggio non inviato!",
status : "danger",
timeout : 0,
pos : "top-center"
});
</script>';
}
}
}
?>
Link del sito dove ho il problema: http://locandadellastazione.com/locandadellastazione/prezzi.php
Se volete provare fate pure, mi arriverà una mail bianca, ma non c'è problema!

Grazie a chiunque tenterà di aiutarmi!