Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    La pagina Web è scaduta

    Quando si fa un form in PHP in cui si richiedono dati all'utente, quando l'utente clicca sul bottone per inviare i dati, se c'è un errore io mostro un messaggio di errore per dirgli che mancano dei dati.

    A quel punto l'utente clicca sul link "Indietro" per tornare al form, però gli viene mostrata la classica pagina di errore: "La pagina web è scaduta", e lui deve aggiornare.

    E' possibile evitare tutto ciò? Cioè io vorrei che quando l'utente clicca su indietro, torni al form immediatamente senza quella pagina di errore.

    C'è una soluzione od è inevitabile?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: La pagina Web è scaduta

    Originariamente inviato da ciri_sn_solo_io
    Quando si fa un form in PHP in cui si richiedono dati all'utente, quando l'utente clicca sul bottone per inviare i dati, se c'è un errore io mostro un messaggio di errore per dirgli che mancano dei dati.

    A quel punto l'utente clicca sul link "Indietro" per tornare al form, però gli viene mostrata la classica pagina di errore: "La pagina web è scaduta", e lui deve aggiornare.

    E' possibile evitare tutto ciò? Cioè io vorrei che quando l'utente clicca su indietro, torni al form immediatamente senza quella pagina di errore.

    C'è una soluzione od è inevitabile?

    Grazie.
    La cosa avviene quando spedisci dei dati via post, a seconda dei casi puoi decidere di passare i dati in get per evitare questo problema (in genere questa soluzione è ottima per lo sviluppo di un motore di ricerca interno al sito).

    Nel caso di registrazione dei dati di un utente una soluzione potrebbe essere:

    1. Nella pagina con il form metti una cosa del genere per ogni campo:

    <input type="text" name="nome" value="<?php echo $nome ?>" />

    Prima di scrivere questa parte però valorizzi la variabile nome, pescandola dalla sessione nel caso l'utente arrivi da una compilazione parziata o errata del form, altrimenti la valorizzi vuota.

    2. Dopo il submit fai il tuo controllo, se tutto è andato a buon fine vai avanti, se nel form non sono stati inseriti i dati corretti mostri gli errori, salvi i dati corretti in sessione, e tralasci quelli errati (da qui pescherai i dati che ti servono per valorizzare il form nei campi che vuoi vengano preservati).

    Dopo l'errore crei un link che rimandi alla pagina (passando l'url preciso, e non usando history.back di javascript).

    Ovviamente non puoi evitare che l'utente prema lo stesso il tasto indietro, ma se gli proponi tu il link dovresti limitare di molto la cosa (ovviamente ci sarà sempre quello che premerà indietro).


    ciao

  3. #3
    Bè, se il percorso è lineare, anche con "indietro" browser, non dovrebbero esserci problemi..

    es:
    Pagina form -> pagina controllo dati -> pagina che mostra risultati.

    In questo caso, la pagina che controlla i dati non viene mai inviata al browser per evitare invii multipli... per cui se dalla pagina con i risultati io clicco indietro, vengo mandato alla pagina col form.

    Ah! Importante, se l'inserimento va a buon fine, cancella i dati dalla sessione, altrimenti con indetro ed un nuovo invio potresti inserire dati duplicati.

    Ciao!

  4. #4
    Io però ho situazioni anche un po più complicate. Esempio:

    Primo Form: l'utente seleziona delle caselle e clicca su invia
    Secondo Form: viene parzialmente popolato con le selezioni precedenti (tramite POST) in più l'utente compila altri campi. Clicca su Invia

    A questo punto se si verificano errori, anche se lo mando indietro con l'url completo, il secondo form non avrà più le informazioni prese dal primo form.

    Non c'è soluzione?

  5. #5
    Si, basta che le metti in una sessione!
    Ciao!

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.