Ciao @passpm
L'errore stesso ti dice quale sia il problema, l'array che stai utilizzando non ha "ancora" le chiavi indicate nell'errore.
Tu stai usando la globale $_POST che è un array ma non fai un check se le chiavi esistonio:
$nome = $_POST['nome'];Non essendo inizializata questa chiave ti da errore, ora quello che potresti fare è usare o isset() o ancora meglio array_key_exists() per esempio:
attenzione, non usare questo codice che serve solo per spiegare come funziona, ci sono problemi di sicurezza che risolviamo più avanti
/** * Qui facciamo un check se esiste quella chiave * isset() */ $nome = isset( $_POST['nome'] ) ? $_POST['nome'] : '' ;Questa successiva è più dichiarativa e più facile da leggere:
/** * Qui facciamo un check se esiste quella chiave ma con un sistema migliore * array_key_exists() */ $nome = array_key_exists( 'nome' , $_POST ) ? $_POST['nome'] : '' ;Però ancora, abbiamo un code smell, c'è troppa ripetizione, dovresti appunto ripetere il check per ogni chiave, quindi meglio semplificare ulteriormente:
$default = [ 'nome' => '', // Qui aggiungerai tutti gli altri valori di default ]; $_POST = array_replace( $default, $_POST ); $nome = $_POST['nome'];Con array_replace() quello che facciamo è inizializzare le chiavi nell'array se queste non esistono così ti eviti tutti i check, nella variabile di default poi devi aggiungere tutte le chiavi che vuoi inizializzare, qui un esempio.
Ora però attenzione, c'è un problema ancora più grosso, la sicurezza
Tu stai semplicemente mettendo nel DB qualcosa che l'utente sta inviando, e l'utente potrebbe inviare del codice malevolo, never trust user input.
Puoi cercare form validation per ulteriori info, qui ti posto uno dei tanti tutorial che si trovano https://www.w3schools.com/php/php_form_validation.asp
Ricorda anche di sanitizzare poi il dato dopo averlo prelevato dal db e prima di stamparlo per esempio con questi filtri https://www.php.net/manual/en/filter.filters.sanitize.php perché anche sul DB potrebbe esserci codice malevolo.
Ora dopo tutta questa spiegazione veniamo all'HTML, nei field manca l'attributo name, qui un esempio di form https://www.w3schools.com/php/php_forms.asp e nel tag form la sintassi è sbagliata, hai dimenticato un =, tu hai scritto:
<form action="connect.php" method"post">e invece va scritto:
<form action="connect.php" method="post">Altra lettura che ti consiglio (la più importante) è questa Unit Test che in futuro ti possono salvare da errori come questo.