Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    perdo i dati del form se ho la sessione

    ciao, ho notato una brutta cosa.
    se ho una pagina con un form e la prima riga è session_start(); perchè mi serve la sessione, quando linvio il form e torno indietro non mi trovo più i dati nei campi.

    questo problema viene risolto togliendo la sessione dalla pagina.


    per farvi capire il problema mostro un piccolo esempio

    pagina1.php
    nome Pippo
    cognome Rossi
    SUBMIT

    pagina1.php con variabile che indica che il form è stato inviato
    errore manca la p.iva (ad es
    torna indietro


    torno indietro e non trovo più Pippo sul campo nome e Rossi sul campo cognome.



    è giusto che sia così?

    ciao e grazie.

  2. #2
    Il primo consiglio che posso darti è quello (in generale) di far si che i controlli e le validazioni dei form avvengano in locale tramite javascript. A mio modestissimo avviso non ha senso portare avanti e indietro variabili solo per analizzare se queste sono vuote o formattate in maniera giusta. Alleggerisci il tutto con un grande script javascript.

    Poi penserai alle sessioni.

    Spero di esserti stato d'aiuto.

    Buona giornata.

  3. #3
    grazie. vediamo se qualcuno mette il suo parere.

  4. #4
    Il primo consiglio che posso darti è quello (in generale) di far si che i controlli e le validazioni dei form avvengano in locale tramite javascript. A mio modestissimo avviso non ha senso portare avanti e indietro variabili solo per analizzare se queste sono vuote o formattate in maniera giusta. Alleggerisci il tutto con un grande script javascript.
    Sacrosanto consiglio!

    Aggiungo una cosa: come torni indietro? presumo automaticamente ti riposizioni sulla form. Nei campi della form hai qualcosa del genere:
    Codice PHP:
    <input type="text" name="campo1" value="<? echo $_SESSION["campo1"]; ?>" />
    oppure puoi sostituire $_SESSION con $_POST (se il tuo metodo di trasmissione dati é POST ovviamente ).
    "it's a dark night!"
    Il sito internet del mio EX studio:
    http://www.tribal-art.it/
    Il sito internet dei Manutentori di Caldaie:
    http://www.manutentori-caldaia-polesani.it/

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da Antagonista
    Il primo consiglio che posso darti è quello (in generale) di far si che i controlli e le validazioni dei form avvengano in locale tramite javascript. A mio modestissimo avviso non ha senso portare avanti e indietro variabili solo per analizzare se queste sono vuote o formattate in maniera giusta. Alleggerisci il tutto con un grande script javascript.

    Poi penserai alle sessioni.

    Spero di esserti stato d'aiuto.

    Buona giornata.

    Mai consiglio fu più errato!!!

    I controlli javascript vanno bene per alleggerire la navigazione dell'utente quando ha javascript abilitato.

    Ma cosa succede se io disabilito javascript e inserisco del codice maligno che mi permette ad esempio di cancellare tutto il suo database?


    Originariamente inviato da tribal75
    Aggiungo una cosa: come torni indietro? presumo automaticamente ti riposizioni sulla form. Nei campi della form hai qualcosa del genere:

    oppure puoi sostituire $_SESSION con $_POST (se il tuo metodo di trasmissione dati é POST ovviamente ).
    non capisco, $_POST funziona solo nella pagina successiva, quando torna indietro $_POST è vuoto...


    A parte tutto ecco il mio consiglio:

    1. Validazione lato server con PHP da fare SEMPRE
    2. Validazione lato client con js da aggiungere per rendere la navigazione migliore.
    3. Una volta arrivato alla pagina di controllo se:
    a - il controllo di tutti i campi va a buon fine inserisci i dati in db e vai avanti.
    b - se il controllo di qualche campo non va a buon fine metti i dati corretti in sessione, e
    rimandi alla pagina del form.
    4. Nella pagina del form fai come ti aveva suggerito tribal e metti nel value del campo il
    corrispondente valore in sessione. (per quelli errati inutile farlo)

    Ciao

  6. #6
    codice pagina:
    codice:
    session_start();
    
    
    if ($_POST['hid_conferma'])
    {
      controlla_campi();
    }
    else
    <form ..>
    <input type="text" name="txt_nome">
    <input type="text" name="txt_cognome">
    </form>
    
    
    controlla_campi();
    if ($_POST['txt_nome'] = "")
    {
     print "problema";
       //se a questo punto vado indietro con il browser o con javascript.go(-1)
       //non mi trovo più il valore che l'utente ha inserito nel campo di input.
    }
    
    
    forse è meglio se tutti i controlli li faccio in javascritp, ma come faccio se devo controllare nel db che il nome di login non sia già stato utilizzato? sono costretto a usare il php....e quindi?
    
    
    grazie

  7. #7
    precisazione......
    usando i cookie questo problema non sussiste. non so il perchè.


    resta il fatto che i cookies non vorrei utilizzarli, preferisco la var in sessione.

    grazie

  8. #8
    non capisco, $_POST funziona solo nella pagina successiva, quando torna indietro $_POST è vuoto...
    Se premi il pulsante "INDIETRO" del browser hai ragione, ma se ricarichi la pagina della form dopo aver fatto i controlli lato server allora il $_POST é pieno .

    Ma cosa succede se io disabilito javascript e inserisco del codice maligno che mi permette ad esempio di cancellare tutto il suo database?
    Come tutte le brave persone ti premuri di non dare permessi di cancellazione/alterazione del database alle procedure ad accesso utente. Certo, rimane il problema del fatto che si navighi con Javascript disabilitato ma penso che ormai siano in pochi a navigare in questa maniera...

    Per il problema principale io farei così (usando un po' di pseudocodice php):
    Codice PHP:
    <?
    session_start
    (); //session_start()  deve essere il primo comando, non lo puoi mettere dopo <html>
    if (controlli()) header("location:pagina_accesso.php"); //come per session_start, il comando header dev'essere dato prima di aver emesso gli header html di pagina
    ?>
    <html>
    <head>
    [...]
    </head>
    <body>
    [...]
    <form method="POST" action="questa_pagina_con_form.php">
    <input type="text" name="campo1" value="<? echo $_POST["campo1"]; ?>" />
    <form>
    </body>
    </html>
    </body>
    che ne dici? può andare?
    "it's a dark night!"
    Il sito internet del mio EX studio:
    http://www.tribal-art.it/
    Il sito internet dei Manutentori di Caldaie:
    http://www.manutentori-caldaia-polesani.it/

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    evita javascript per la navigazione (quindi niente history.back).

    Il problema della perdita dei dati dipende dal fatto che l'header della pagina viene scritto da php, mentre default il browser lo scrive in modo da ricordare i dati della pagina (comunque è un impostazione che può essere differente tra i vari browser).

    ciao

  10. #10
    Ciao, io a suo tempo ho già affrontato questi problemi e adottato diverse soluzioni, ma la cosa migliore è che il form della tua pagina punti su se stessa, ovvero il form deve avere come action la pagina in cui è, nella stessa pagina dovrai mettere un controllo per verificare se un form è stato inviato (ad esempio se il bottone di invio si chiama "submit" basta aggiungere if(isset($_POST['submit'])) ) verificato ciò procedi al controllo ed eventualmente all'inserimento nel DB... se le procedure vanno a buon fine riindirizzi alla pagina che ti serve, altrimenti lasci che resti sull stessa pagina.
    In questo modo puoi inserire nei capi nei valori value un codice come questo

    if(isset($_POST['submit'])) { echo $_POST['nome']; }

    In questo modo avrai i campi rivalorizzati avrai il controllo tutto su una pagina, sarà il tutto più ordinato e puoi anche gestire al meglio i messaggi di errore.
    Se vuoi un codice di esempio completo fammi sapere.
    Ciao
    ----FIREANTOLOGY-----
    Informative system developer

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.