Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938

    Problem con validazione form

    Ciao a tutti

    Non riesco a risolvere un problema:

    Ho fatto un GuestBook composto da una sola pagina.

    In alto c'è il form per l'inserimento dei dati richiesti, sotto intabellati la visualizzazione dei dati inseriti.

    Vorrei evitare il controllo del corretto inserimento dei dati in JS.

    Tutte le funzioni del GB amministrazione, Login e Logout sono sono gestite da routin sub e richiamati in campi nascosti hidden.

    Quello che non riesco a configurare (e gestire) è:

    Ogni richiesta rimanda con un response.write alla pagina del gb, ES: la pagina del gb si chiama guestbook.asp, tutte le richieste vengono reindirizzate a guestbook.asp

    Ho una variabile chiamate ERRORE=""

    L'inserimento dei dati è gestito in questo modo (metto solo un campo)

    In una Sub richiamo i request dei form e il replace dei caratteri < > ' ecc..

    Sotto come controllo

    if request("nome") = "" then
    ERRORE="Inserire il Nome"
    exit sub
    end if

    L'errore viene visualizzato tra il form e la tabella che visualizza le firme.

    <%if ERRORE <> "" then %><center><h4><%=ERRORE%></h4>Torna indietro e correggi<%end if %></center>

    Se il campo è vuoto visualizzo:

    Inserire il Nome più il link per tornare indietro e correggere.

    Ma il form per l'inserimento dei dati adesso ovvio risulta vuoto ed è possibile scrivere sugli altri campi senza usare il back.

    Anche se questi visualizzeranno in messaggio di errore, se torno indietro mi trovo il messaggio di compilare un campo (l'ultimo validato) anche se questo non è vuoto.





    Massimo

  2. #2
    La chiarezza non è il tuo forte, eh?

    Vediamo se ho capito: quando ritorni con il tasto history.back tu vuoi che i campi rimangano valorizzati con il valore inserito in fase di compilazione, mentre vorresti in bianco il campo che dava errore.

    E' cosi?
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938
    Ciao

    Grazie per la risposta, usando il tasto indietri, o il link messo nel messaggio d'errore i campi già valitati devovo avere i dati inseriti precedentemente, e questo avviene, ma il messaggio d'errore su un campo già compilato rimane, in pratica se uno ha gia scritto il suo Nome, se clicca invia viene richiesto di reinserire il nome, ma se scrive la mail succede un casotto, viene nuovamente richiesto di inserire il nome e se torna indietro di validare la mail

    Tanks

    Massimo

  4. #4
    Non credo che il tasto history back sia la soluzione ideale nel tuo caso.

    Io vedrei meglio un ricaricamento della pagina (aggiornata ai dati già inseriti) con una condizione tipo

    se campo.error allora campo = ""
    che azzera il campo che ha dato errore, e per gli altri campi

    se request(campo) <> "" allora campo.value=request(campo)
    in modo da conservarne il valore evntualmente già inserito (un po' come si fa per le select dinamiche, dove devi conservare i valori già inseriti al ricaricamento di pagina).

    Uhm.....naturalmente non ho detto che la chiarezza sia il MIO forte........hai capito qualcosa?
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938
    Ciao

    Non funzia

    Massimo

  6. #6
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2000
    Messaggi
    938
    Ciao

    Ti do qualche info in più.

    Premetto che ho provato altri GB costruiti più o meno come il mio e tutti hanno il solito problema.

    La prima parte è quella che si occupa di convertire i caretteri < con &amp;lt;. > con &amp;egt; il replace dell'apostrofo e per il return.

    I campi sono quattro:

    Nome
    Email
    Sito (opzionale)
    Messaggio

    C'è una funzione per la quale il GB funziona solo sul server dove viene installato, per evitare che uno copiando il codice linki in locale la URL del GB e scriva tutti i messaggi che vuole (prima il controllo sui campi era in Javascript, basta togliere il JS e scrive quello che vuole)

    Il controllo sulla URL inserita, qualora l'utente decidesse di inserirla, se scrive una URL non esistente il suo messaggio non viene inviato al DB.

    Un controllo sul numero massimo dei caratteri consecutivi inseribili (in lettura, per evitare che se scrive molti caratteri sballi la tabella, dopo il numero impostato ti mette un
    ).

    I codici per l'inserimento degli smiles, che vengono poi convertiti in tag html in lettura.

    E form del Login per l'amministrazione, una volta loggato come amministratore su tutte le firme si attiva un link Cancella, per cancellare le eventuali firme indesiderate.

    Tutto sta in una sola pagina e i response puntano al GB, di conseguenza tutto quello era precedentemente scritto non è più visualizzabile (solo con il tasto Back).

    Se il GB era diviso in due pagine la situazione era facile.

    Ma in questo modo quando clicci sul tasto Firma, il messaggio di errore è inserire il Nome, a questo punto tu hai già una pagina visitata nella History del tuo browser, ma hai il form vuoto, se passi all'ultimo campo Messaggio: ti da l'errore Inserire il messaggio, ma se torni indietro con back hai la pagina che ti ha chiesto di inserire il Nome nella history, quindi puoi cliccare cento volte sul form che rimane vuoto e hai 100 pagine nella history indifferentemente se in un campo hai inserito i dati corretti.

    E' la prima volta che faccio un lavoro tutto su una pagina, con javascript funziona correttamente, gli alert bloccano l'esecuzione della richiesta se true e non vai avanti se non compili correttamente tutti i campi.


    Volevo farlo in ASP se possibile.

    Ciao

    Massimo

  8. #8
    Sono del parere che il modo migliore per risolvere il tuo problema sia sempre una serie di controlli javascript, che restituiscono un alert in caso di errore e riportano il focus sul campo incorrettamente compilato PRIMA di inoltrare i dati al server, il che non significa che non puoi inserire ANCHE i controlli lato server (utili anche per ragioni di security).

    Quindi: controlli javascript per rendere il form user-friend ed evitare al server di processare inutilmente dati incorretti, e controlli server-side per la sicurezza e per garantire l'inserimento di dati che il GB può processare senza problemi.

    Se, per qualche motivo, vuoi che i controlli siano esclusivamente lato server, penso che il tuo form dovrebbe essere preceduto da una serie di istruzioni (faccio SOLO l'esempio del campo nome, ti basterà applicarlo anche agli altri campi) come per esempio:

    codice:
    nome = ""
    nome = request.querystring("nome")
    if not nome = "" then
    response.write("Campo compilato scorrettamente")
    end if
    La prima istruzione serve per svuotare la variabile se precedentemente valorizzata. L' altra per recuperarne il valore eventualmente già inserito.
    In questo modo, se il campo sarà già stato compilato, i dati già inseriti appariranno nel modulo.

    Infatti, tu avrai costruito il campo nome del form in questo modo:

    codice:
    <input type="text" name="nome" value="<%=nome%>"/>
    e il controllo lato server potrà essere per esempio:

    codice:
    nome = request.form("nome")
    if (funzione controllo validità nome) then
       ...processa i valori corretti...
    else
    response.redirect("pagina_del_form.asp?nome="&nome)
    end if
    Un esempio di questo modo di operare lo puoi vedere inserendo un indirizzo email valido e poi uno non valido qui
    Lo script è relativo a un'altra funzione ma direi che bene si addice al tuo caso........se vuoi adottare una di queste soluzioni poi fai sapere se va bene.........
    E' nato www.lombardiamotori.it

    www.universocase.it: il primo portale italiano di annunci immobiliari gratuiti e autogestiti!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.