Ho un form sul quale sto facendo alcuni controlli, senza però javascript. Anche se oramai tutti lo usano vorrei che ci fosse la possibilità di fare gli stessi controlli ma solo con php.
Questo è il modulo per verificare il form, mi sapete dire se è tutto ok? Perchè quando clicco s invia senza compilare il form mi appare un errore.
se poi la variabile ok_ko è vuota allora procedo con l'invio della mail, il problema è che l'errore che mi da è
che si riferisce a questa riga
Mi sapreste dire dove sbaglio?
Questo è il modulo per verificare il form, mi sapete dire se è tutto ok? Perchè quando clicco s invia senza compilare il form mi appare un errore.
PHP:
if(isset($_POST['invia'])){
if($_SERVER['REQUEST_METHOD'] == 'POST'){
//Filtro dati con MYSQLI
$nome = $mysqli->real_escape_string(trim($_POST['nome']));
$cognome = $mysqli->real_escape_string(trim($_POST['cognome']));
$eta = $mysqli->real_escape_string(trim($_POST['eta']));
$email = $mysqli->real_escape_string(trim($_POST['email']));
$messaggio = $mysqli->real_escape_string(trim($_POST['messaggio']));
//Funzione di controllo dell'inserimento dati corretti.
function ver_testo($testo,$min,$max){
// $pattern="/^(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,15}){".$min.",".$max."}$/"; //Controllo lunghezza username tra 6 e 15 caratteri compresi i jolly
$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
if(preg_match($pattern, $testo)){
//testo ok
return TRUE;
}else{
return FALSE;
}
} //Chiudo funzione verifica lunghezza dati inseriti
//preparo un messaggio a vuoto per gli errori
$ok_ko="";
$visibilità = "hidden";
if(!ver_testo($nome,3,15)){
$ok_ko.="Sei sicuro di aver inserito il nome correttamente? <br />";
echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
if(!ver_testo($cognome,3,15)){
$ok_ko.="Sei sicuro di aver inserito il cognome correttamente? <br />";
echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
if(!isset($_POST['eta']) or (empty($_POST['eta']))){
$ok_ko.="Ricordati di selezionare la tua età.<br />";
echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
$ok_ko.="L'indirizzo email è assente o non è valido <br />";}
if(!ver_testo($messaggio,3,500)){
$ok_ko.="Hai dimenticato di scriverci dicosa hai bisogno.<br />";
echo "<meta http-equiv='Refresh' content='20; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";}
se poi la variabile ok_ko è vuota allora procedo con l'invio della mail, il problema è che l'errore che mi da è
HTML:
Notice: Undefined index: eta in contatti.php on line 72
che si riferisce a questa riga
PHP:
$eta = $mysqli->real_escape_string(trim($_POST['eta']));
Mi sapreste dire dove sbaglio?