controllo form php con restituzione errori nella form

federicotm

Nuovo Utente
8 Nov 2015
9
0
0
Salve a tutti,

sto realizzando una form di registrazione ad un sito, ho già messo tutti i controlli in html ora vorrei che se il controllo in php non vada a buon fine si rimandi di nuovo al form con evidenziati gli errori nella compilazione.

se avete qualche guida da postarmi ve ne sarei grato :fonzie:
 
Di primo acchito penso ad una soluzione così:

Quando hai l'errore del form, assegna ad una variabile "$error" il testo che identifica l'errore (mail non corretta, campo vuoto...), nella form basta che ci scrivi:
PHP:
<?php
	echo $error;
?>
Nel punto esatto dove vuoi che vengano visualizzati.
Ovviamente devi individuare tutti i possibili errori della form ed assegnare ad error la descrizione, io per esempio per una form di login gli ho impostato un controllo con PHP fatto in questo modo:
PHP:
if (isset($_POST['submit'])){									//Se "submit" è impostato (quindi "Login" è stato cliccato)
		if (empty($_POST['username']) || empty($_POST['password'])){//controllo se username O password sono vuoti (|| = OR), se anche uno solo è vuoto.
			$error = "Compila tutti i campi!";						//scrivo la notifica dell'errore;

Praticamente la variabile "$error" esiste sempre ed è sempre scritta nella pagina, solo che quando c'è un errore assume un valore(descrizione errore), altrimenti rimane il suo valore che è nullo quindi non si vede.
 
quando iniziai ad usare php, mi resi conto di quanti script fossero necessari per completare delle semplici operazioni
la cosa non mi piaceva per niente, così cercando, trovai questa "lezione" che applicai al massimo,
http://coredogs.com/lesson/form-and-php-validation-one-page.html
oggi un mio script contiene l'intero set di funzioni, questa è, in brevissimo la struttura, che comprende la validazione lato client (html e js) e lato server (php)
PHP:
if($OPMainForm == "0") EmptyFields();
else {
  if ($OPMainForm == "1") {
    check_SOLID();
    check_fields();
  }

  switch ($OPACTION) {

    case "Cerca":
      if (count($errormsg) == 0) {
.....


function check_fields() {
....
  $errormsg[] = ....


function check_BUTTONS() {
  switch ($OPACTION) {
    case "Abbandona":
    case "Aggiorna":
    case "Annulla":
    case "Avanti":
    case "Cancella":
    case "Cerca":
    case "Conferma":
    case "Continua":
    case "Elimina":
    case "Indietro":
    case "Inserisci":
    case "M.O.":
    case "Modifica":
    case "NONE":
      break;

    default:
.....
lato server "$errormsg[]" conterrà gli eventuali errori che se non corretti, impediranno il proseguimento dell'attività

ma è un mio modo di vedere la programmazione
ciao
Marino
 
Ultima modifica:
Jonn ho un dubbio:
ho seguito il tuo consiglio però avendo la form che viene inviata ad un altro file .php l'errore appare appunto sulla nuova pagina, vorrei invece come per i controlli lato client che ho messo in html i campi non "esatti" venissero marcati direttamente sulla form senza cambiare pagina...
Grazie
 
Ma infatti la form non deve aprire un'altra pagina, praticamente fai un ciclo in PHP If Else che se la validazione va a buon fine, il browser reindirizza alla pagina dove c'è scritto che la form è stata inviata con successo, altrimenti rimani nella pagina del form e leggi l'errore.

Ma tu vuoi che sia evidenziato un errore per ogni input compilato male? o ti basta un errore generico tipo: Completa i campi obbligatori! ??
 
Ciao Jonn,
ho implementato il codice php in modo che ricarichi la stessa pagina come mi hai consigliato... perfetto funziona!
Ora mi sono sopraggiunti altri 2 quesiti:

1) ho la form per la registrazione che si apre in un div quindi dopo aver premuto "registrati" ricarica l'intera home page ma senza visualizzare appunto il div della form dove tra l'altro appaiono gli errori di compilazione

2) la form è stata progettata con l'ausilio dei pattern in html5... benissimo! ora vorrei sapere se c'e' un modo in html magari usando sempre i pattern per visualizzare l'errore quando la mail e la mail di conferma non corrispondono... ho cercato in lungo e in largo anche al di fuori del forum ma non ho trovato una soluzione!
 
Ma perdonami non ti verrebbe molto più semplice farlo con jquery..

Non capisco perchè complicarsi la vita.

Saluti.
G.G.
 
Ma scusami, non puoi passarci un link per vedere il lavoro? così possiamo tutti darti consigli molto più precisi e consoni.
 

Discussioni simili