Newsgroup: it.comp.www.php
Titolo: validare un form

Se il php fosse un mare, probabilmente io sarei vicino alla spiaggia a
sguazzare... Non sono certo un marinaio esperto, e magari č per questo
che  mi sono imbattuto in un problema che forse molti di voi riteranno
banale:
Ho fatto un form in php da usare in phpnuke, partendo da uno in html. I
problemi sorgono quando devo validare i dati, chč mi si ricarica la
stessa pagina e non la funzione che voglio usarae io... Mi potete dare
qualche suggerimento per favore?
La struttura č piů o meno questa:
$index= 1;
require_once("mainfile.php");
$module_name = basename(dirname(__FILE__));
get_lang($module_name);
$pagetitle ="- "._SUBSCRIPTION."";
include("header.php");
echo "<form action=\"modules.php?name=$module_name&amp;op=decode\"
method=\"post\">"
[qui ci va il resto del form]
."</form>";
function decode() {global $nome, $cognome, $provincia, $professione;
if ((!$nome) || (!$cognome) || (!$provincia) || (!$professione))
{echo"<font color=\"red\" size=\"+8\"><br<<br><br><br> Non hai compilato
tutti i campi del form di registrazione! Per favore reinserisci i
dati</font><br><br>";
} else {
echo"Se i dati inseriti sono corretti, clicca su \"Prosegui\",
altrimenti torna al form di registrazione cliccando il pulsante
\"Annulla\"<br><br>";
echo"<a href=\"
http://www.sella.it
\"><input type=\"submit\"
value=\"Prosegui\"></a><a href=\"modules.php?name=$module_name\"><input
type=\"submit\" value=\"Annulla\"></a>";
}
}
include ("footer.php");
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 qualche suggerimento per favore?
Quando dichiari una funzione quella č lě, pronta per essere chiamata...
quindi devi chiamarla scrivendo un semplice "decode();"
Ps: visto che sei all'inizio non giudico il fatto che nella funzione hai
reso tutte le variabili globali etc... non č una buona pratica.
Ludovico

 Ps: visto che sei all'inizio non giudico il fatto che nella funzione > hai reso tutte le variabili globali etc... non č una buona pratica.
Sob! :( Ho ripreso un esempio da "pagine web dinamiche con php e mysql"
di Tansley...
Ma allora secondo te non mi va alla funzione decode perchč ho inserito
le variabili globali nella funzione?


 le variabili globali nella funzione?
no! quello è solo un cattivo modo di programmare (quello di usare le
variabili globali, intendo).
La tua funzione (riassunta)
function decode() {
   global $nome, $cognome;
   if ((!$nome) || (!$cognome)) {
      echo"Argh!";
   } else {
      echo"Fiuuu!";
   }
}
è li ferma pronta per essere richiamata.
Quando hai compilato i dati del form e spingi Submit non fai altro che
mandare le variabili alla pagina stessa.
Cosa succede: la tua pagina viene riletta, il form viene mostrato etc... e
la funzione viene creata, ma nessuno la esegue.
La tua funzione è un pezzo di codice che puoi richiamare 0 o più volte
scrivendo, nel tuo caso
decode();
Quindi un esempio:
___file.php____
<?
function ioanche($parametro) {
    echo "IO ANCHE! (".$parametro.") ";
}
echo "IO ESISTO!! ";
?>
____fine file.php_____
questo scriverà solo "IO ESISTO".
Questo invece:
___file.php____
<?
function ioanche($parametro) {
    echo "IO ANCHE! (".$parametro.") ";
}
echo "IO ESISTO!! ";
ioanche(1);
ioanche(4);
ioanche("ciccio");
ioanche(":-)");
?>
____fine file.php_____
scriverà IO ESISTO seguito da 4 "IO ANCHE" con, tra parentesi, i valori
passati.
Allora la tua pagina che manda i dati a se stessa mostrerà sempre il form,
ma non farà nessun controllo perchè nessuno gli ha detto di farlo.
se invece aggiungi la chiamata alla funzione questo controllo verrà fatto
sempre, anche la prima volta che apri la pagina.
Un consiglio: metti la funzione in una seconda pagina e imposta l'action del
form su questa, e ricordati di chiamare la funzione (oppure, visto che in
questo caso non ti serve, mettidirettamente il codice che fa il controllo.)
Spero di essere stato chiaro... anche se c'è parecchio da dire ancora.
Ludovico Grossi

 questo caso non ti serve, mettidirettamente il codice che fa il controllo.)
Ho provato ed in effetti mi restituisce l'errore, visto che i campi sono
ancora vuoti... Però mettere un altro file in phpnuke è arduo, perchè lo
interpreta come al di fuori del sistema (ho provato...)
Grazie per la spiegazione, mi è stata molto utile! Però qualcosa mi dice
che avrò ancora bisogno dell'aiuto dell'ng! ;)
