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

    mantenere dati in un form dopo il redirect

    ciao a tutti.
    ho un form, che tramite metodo post invia i dati ad una pagina che esegue i controlli.
    in caso di un campo vuoto, attraverso un header location ritorna alla pagina col form, concatenando all'url il tipo di errore

    es: www.miosito.it?errore=1

    in base al numero dell'errore, nella pagina form stampo la frase "attenzione campo vuoto!"

    il problema è che tutti i campi del form mi vengono cancellati! come faccio a fare in modo che il redirect mantenga i dati scritti nei vari campi del form?

    grazie

    Francesco

  2. #2
    Moderatore di Off Topic, Kickstarter e XML L'avatar di Sky
    Registrato dal
    Jul 2000
    residenza
    Roma
    Messaggi
    1,053
    Puoi usare le sessioni.

    All'inizio dello script le inizializzi e, dopo l'invio (ovviamente prima del redirect in caso di errore), salvi i dati nell'array superglobale $_SESSION.
    Quindi nel form inserisci i valori di tale array.

    Ciao ciao!
    Lo Stato deve dare ai cittadini, come diritto, ciò che la mafia dà come favore.
    Carlo Alberto dalla Chiesa

    Facebook | Twitter | Last.fm | LinkedIn | Quora

  3. #3

    Re: mantenere dati in un form dopo il redirect

    Originariamente inviato da francy88
    ho un form, che tramite metodo post invia i dati ad una pagina che esegue i controlli.
    in caso di un campo vuoto, attraverso un header location ritorna alla pagina col form, concatenando all'url il tipo di errore

    il problema è che tutti i campi del form mi vengono cancellati! come faccio a fare in modo che il redirect mantenga i dati scritti nei vari campi del form?
    O fai come ti ha suggerito Sky, oppure utilizza una delle tante classi di validazione delle form (es. http://www.formhandler.net/) che ti permette di gestire tutto il processo (crezione, validazione ed utilizzo dei dait) di una form all'interno della stessa pagina.

  4. #4
    oppure avevo pensato, in caso di errore, di concarenare all'url del redirect, tutti i campi inseriti, e di metterli nei campi del form.

    ad esempio

    Codice PHP:
    header("location: form.php?nome=".$nome."&cognome=".$cognome"); 
    potrebbe andare?

  5. #5
    Originariamente inviato da francy88
    oppure avevo pensato, in caso di errore, di concarenare all'url del redirect, tutti i campi inseriti, e di metterli nei campi del form.

    ad esempio

    Codice PHP:
    header("location: form.php?nome=".$nome."&cognome=".$cognome"); 
    potrebbe andare?
    Non è la soluzione migliore. Per prima cosa l'URL dovrebbe essere assoluto, poi i parametri andrebbero codificati con urlencode(), infine esiste un limite nella lunghezza massima degli URL che può essere velocemente raggiunto se si utilizzano campi come le textarea, etc.

  6. #6
    Non so se ti funziona, ma prova con questo:

    Codice PHP:
    <form method="POST" action="">
    <table>
    <tr>
    <td>User: </td><td><input type"text" name="user" value="<?$default 1; if ($_POST['sent'] == 1){ echo "$user";} else {echo "$default";};  ?>"/></td>
    </tr>
    <tr>
    <td>Password: </td><td><input type"password" name="pass" value="11111"/></td>
    </tr>
    </table>
    <input type="hidden" name="sent" value="1" />
    <center><input type="submit" name="processa" value="processa" /></center>
    </form>

    <?php
    if ($_POST['sent'] == "1"){
    $user $_POST['user'];
    $pass $_POST['pass'];

    //altro codice che esegue quello che ti serve
    ?>
    Nota che il form ha come action "" che significa che tutti i controlli e cio' che vuoi fare con i dati del form lo devi fare in questa pagina. Non ho provato a vedere se funziona se usi come action="altrofile.php". Puoi provare ma credo non funzioni.
    Non so quanto sia buona come soluzione per quanto riguarda la sicurezza, ma ovviamente quando fai il $_POST dei dati, assicurati che usi le funzioni di sicurezza come ad esempio htmlentities() oppure quelle di mysql.

    A voi il parere,
    Beavey

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    22
    Io adotto il sistema di effettuare i controlli PRIMA che venga effettuato il submit, in questo modo:
    <form name="campi" method="POST" action="controllo.php" onsubmit='return controlla(campi)'>

    dove controlla(campi) e' una function javascript in cui validi tutti i campi del form; in caso di errore il return e' false e quindi non ha effetto il submit, rimanendo sul form (col vantaggio, tra l'altro, che non hai fatto un invio per nulla).
    Ciao
    Carlo

  8. #8
    Originariamente inviato da CarloG
    Io adotto il sistema di effettuare i controlli PRIMA che venga effettuato il submit, in questo modo:
    <form name="campi" method="POST" action="controllo.php" onsubmit='return controlla(campi)'>

    dove controlla(campi) e' una function javascript in cui validi tutti i campi del form; in caso di errore il return e' false e quindi non ha effetto il submit, rimanendo sul form (col vantaggio, tra l'altro, che non hai fatto un invio per nulla).
    Ciao
    Carlo
    E' consigliabile effettuare il controllo sui parametrianche dopo l'invio in quanto essendo il javascript un controllo lato client può essere manomesso da utenti "cattivoni".

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    22
    Ciao DragonOfLight, interessante la tua osservazione.
    Potresti illustrarmela meglio, nel senso che ora i valori ottenuti da &POST li valido solo con
    mysql_real_escape_string;
    - dovrei riscrivere le funzioni js (validazione di Email, contenuti non Null etc), che utilizzo nell' onsubmit, in php per rivalidare alla ricezione del $POST?
    - il rischio di manomissione da parte di utenti e' solo teorico (almeno a livello di gestione di siti non bancari/finanziari o simili) o e' concreto?
    Grazie del tuo parere, ciao
    Carlo

  10. #10
    Esiste il modo di modificare il sorgente della pagina visualizzata dal browser.

    E' quindi possibile disattivare e/o modificare la funzione di controllo.


    Inoltre se io sul mio pc mi creo una pagina web con un form e come action metto l'indirizzo della tua pagina PHP post invio, ecco che i controlli javascript non ci sono.


    esempio:
    pagina html salvata sul mio desktop (prova.htm)
    codice:
    <form name="campi" method="POST" action="http://tuosito/controllo.php">
    <input type='input' name='nome' value='BelValoreDannosoAlTuoSito'>
    <input type='input' name='e-mail' value='caino@pippo.it,tizio@paperino.it'>
    </form>
    Se nella pagina richamata non ci sono dei controlli sulla validità dei dati inviati e un controllo sulla pagina che ha richiamato la pagina.

    E' buona norma nelle pagine che accedono a database e che vengono richiamate da altre pagine, inserire tutti i controlli necessari affinchè i dati che riceve siano quelli aspettati e per evitare possibili attacchi sfruttando Bugs del tuo codice

    - il rischio di manomissione da parte di utenti e' solo teorico (almeno a livello di gestione di siti non bancari/finanziari o simili) o e' concreto?
    Dipende, se non hai nessuno a cui stai sulle scatole, il tuo sito non richiama molte persone, forse allora potrebbe essere a basso rischio manomissione.

    Purtroppo ci stan tanti "bambini" in giro che per farsi grandi vanno ad hackerare tal piccolo sito per passare il tempo

    - dovrei riscrivere le funzioni js (validazione di Email, contenuti non Null etc), che utilizzo nell' onsubmit, in php per rivalidare alla ricezione del $POST?
    no, nella pagina PHP che vai a richiamare devi rimettere dentro i medesimi controlli + altri per evitare altre complicazioni.

    I controlli javascript servono per evitare di sovraccaricare il server per nulla ed i controlli nel PHP servono per togliersi di mezzo possibili attacchi.

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.