Newsgroup: it.comp.www.php
Titolo: [HELP] Validazione Form

Salve a tutti!
Premetto che sono una principiante.
Sto un attimino diventando pazza, ho cercato ovunque in internet ma non
riesco a trovare un esempio di codice php per la validazione dei campi di un
form.
Io vorrei che la validazione fosse fatta in modo particolare (ma mica tanto
poi, visto che l'ho vista in tanti siti), cioè fatta in modo che se, ad
esempio, non si immette un campo obbligatorio, si viene rimandati alla
stessa pagina (quella del form) con un messaggio che indica quale campo è
stato omesso.
Non è difficilissimo, vero? Avrei solo bisogno di un esempio. Qualcuno sa
indicarmelo, per favore?
Grazie
Banshee


Dovresti provare su it.comp.lang.javascript, credo che la questione della
validazione sia piů un problema di javascript che di php :)
Cooper.
-- 
BlueWare WebAgency
 [web] 
http://www.blueware.it
 
http://www.italchat.it
 [icq] 146781935

 della validazione sia piy un problema di javascript che di php :)
La validazione lato client e' un placebo.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

> La validazione lato client e' un placebo.
Cioe' basta disattivare JS ed ecco che non hai risolto niente e il problema poi intanto persiste lato server che deve fare tutti i controlli del caso...
Pero' velocizza per le stronzatine e nella maggior parte dei casi (cioe' non tutti gli utenti sono maliziosi...)

 La validazione lato client e' un placebo.
Concordo con Setec. Forse l'unione dei due, in un caso semplice, è la 
migliore soluzione ;-)
ciao
Gian Leonardo


Sì, ma.... come devo fare?
Il mio caso è abbastanza semplice: un form con 11 campi, quasi tutti
testuali (tranne 1 in cui vorrei controllare l'indirizzo e-mail e un altro
in cui vorrei controllare almeno che un numero di telefono sia numerico) non
tutti obbligatori in cui forse l'unica difficoltà è che ci sono due campi
che si escludono a vicenda (cioè se non compilo uno dei due devo compilare
necessariamente l'altro).
Ma, scusate, come fanno in quei siti di e-commerce a fare quei bellissimi
form tutti controllati???? Davvero non pensavo fosse così complicato...
Aiuto!
Banshee

 Aiuto!
Non disperare, nulla di così catastrofico. Per quanto riguarda l'esempio 
di controllo di un campo con js puoi iniziare a leggere qualcosa qui:
http://www.html.it/javascript/tutorial/12/
Il problema di js, come ti hanno già scritto altri, è che l'utente può 
disabilitarlo e quindi tutto il codice che dovrebbe girare sulla sua 
macchina non verrà mai preso in considerazione.
Per quanto riguarda invece la parte di controllo lato server puoi 
procedere in vario modo.
Puoi anzitutto controllare che non ci siano campi vuoti ovvero che la 
stringanon sia "", inoltre per quanto riguarda il numero di telefono 
puoi limitare il controllo alla sola presenza di numeri.
Per quanto concerne l'e-mail io ti sconsiglierei qualsiasi controllo. Se 
si è distratti a tal punto da inserirla errata non hai la certezza di 
trovare l'errore col solito controllo della preenza di @ e . altriemnti 
dovresti pensare a qualcosa di un po' più complesso, come l'invio 
automatico di una mail all'indirizzo con chiave di attivazione.
Ma le cose mi sa che iniziano a complicarsi :-D
buon lavoro
Gian Leonardo

 del caso...
Secondo me fare i controlli sia lato server che client e` la cosa migliore:
lato client salva l'utente che non deve magari aspettare 10 volte che si
ricarichi la pagina, lato server ti da` la sicurezza che i controlli siano
effettuati correttamente.
Per fortuna che il pacchetto QuickForm del PEAR li fa entrambi
automaticamente ;)
Ciao
     ce
-- 
http://www.cesaredamico.com
             ~             
http://www.phpday.it
Per rispondermi in privato, togliere "_pre" e "sso_" dall'indirizzo
Remove "_pre" and "sso_" from my email address to reply to me


Un controllo lato server andrebbe bene solo dopo aver verificato che
l'utente ha js disattivato, altrimenti lasciare il tutto a js.


 l'utente ha js disattivato, altrimenti lasciare il tutto a js.
[mi quoto]
La validazione lato client e' un placebo.
[/mi quoto]


Aiuto!
ehm...ma di php cosa conosci? 
Ciao
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Software libero, PHP, MySQL, Webdesign, Sicurezza, CMS, Tutorials
Per rispondere in e-mail togli NOSPAM 

 migliore:
Concordo con Setec; lato client basta infatti costruirsi un form AD HOC per
aggirare i controlli.

Mathew wrote:

setec però indicava di fare la validazione solo lato server;
da come scritto sembra che sei d'accordo con setec pero' con l'aggiunta 
di una validazione lato client;
per form ad hoc che aggira i controlli lato client cosa intendi ?

 per form ad hoc che aggira i controlli lato client cosa intendi ?
Intende dire che se non fai controlli lato server hai GROSSI problemi di
sicurezza.
Più controlli ci sono e meglio è, quelli server però sono gli unici
veramente indispensabili.

 setec perň indicava di fare la validazione solo lato server;
Veramente ho solo fatto notare che "la validazione lato client e' un
placebo", non mi sembra di aver detto la validazione va fatta "solo
lato server".


 automaticamente ;)
non so se conosci a fondo pear (io per nulla, ho iniziato a leggere info 
in merito)
ho visto che si puo' usare per relazionarsi ai db?
se uno ipotizza di iniziare ad usare mysql e poi in futuro passare a 
postgresql se serve:
pear è la soluzione ideale per fare questo o ci sono altre soluzioni
migliori;
rispetto ad usare funzioni native dirette del php per collegarsi ai db 
sopra citati che ovviamente sono il 'rapporto' ideale; ci sono 
particolari controindicazioni ad usare le classi pear ( o altre soluzioni).

 migliore soluzione ;-)
potresti spiegare meglio:
cioè per caso semplice cosa si intende?
e nei casi 'non semplici' quale è la soluzione migliore?


$campo_vuoto=0;
if (!campo1)  $campo_vuoto=++;
if (!campo2)  $campo_vuoto=++;
if (!campo3)  $campo_vuoto=++;
if (!campo4)  $campo_vuoto=++;
if (!campo5)  $campo_vuoto=++;
if ($campo_vuoto>0) {
DisplayForm;  //mostra ancora il form, l'utente ha lasciato almeno un
campo vuoto
} else { ProcessFormInput ();  //in questo caso il form č convalidato
}
Tratto da "PHP 4 guida per lo sviluppatore" HOPLI che spiega anche
come validare vari tipi di campi tramite il comando ereg()
Es per validare un campo e-mail:
ereg(^@ ]+@ [^@ ]+\. ]+$
len

 ereg(^@ ]+@ [^@ ]+\. ]+$
di quale versione della 4 tratta il testo?
esempio tratta l'argomento delle variabili autoglobali (superglobali)
e del register globals.
che altro testo/i suggerisci oltre a questo che da quel che ho capito è 
un 'ottimo libro

 e nei casi 'non semplici' quale č la soluzione migliore?
Intendo dire nei casi in cui la logica di controllo in js sia facile per 
un principiante da comprendere e modificare ai propri scopi, come mi 
sembra che sia chi ha posto il quesito.
ciao
Gian Leonardo


Sviluppare applicazioni per database con MySQL/PHP, APOGEO un libro
per principianti e non con un buon numero di applicazioni pratiche 

 per principianti e non con un buon numero di applicazioni pratiche 
sempre fino alla 4.02 tratta?

sempre fino alla 4.02 tratta?
 sempre 4.02