• User Attivo

    Perfetto, ma siccome i dati che andrei ad immettere sono davvero tanti, non è che poi appesantisco il database ?


  • User Attivo

    Se c'è un modo per mantenere il classico _POST credo sia meglio, cmq ti ringrazio per il codice delle sessioni (che mi tornerà senza dubbio utile!)


  • User Attivo

    Per mantenere il post lo devi reinviare con un altro form... dipende come è strutturata l'applicazione.
    Se devi passare da una pagina all'altra cliccando su un link basta mettere un form al posto del link, con tutti i campi nascosti che duplicano il form iniziale.
    Poi, nella pagina successiva, devi acquisire nuovamente i dati e ripetere la procedura per passare ad un'altra pagina...

    Un po' macchinoso.

    Comunque, sessioni e database sono due cose diverse.


  • User Attivo

    Ok, nella prima pagina "a.php" apro la sessione e avvio il ciclo foreach, ad esempio qui ho un campo "nome", nella seconda pagina "b.php" come richiamo faccio a richiamarla?


  • User Attivo

    Se, ad esempio, nel form hai:

    <input name="nome1" />

    inviando il form, nella pagina che riceve i dati avrai:

    $_POST['nome1']='quello che hai digitato nel campo input';

    Ora, se cambi pagina perdi il valore di $_POST ovverosia $_POST['nome1'] non conterrà più nulla...
    Se però "copi" il contenuto di $_POST in $_SESSION tramite il codice che ho postato prima, ti ritroverai:

    $_SESSION['nome1']='quello che hai digitato nel campo input';

    in tutte le pagine php con sessione avviata e non perderai il valore contenuto sino alla chiusura del browser o alla scadenza della sessione.

    Chiaro?

    Prova tu stesso: www.tigrone.altervista.org/prova_post.php
    Noterai che, nella prima pagina dopo il form, hai i 2 array con i valori memorizzati... se clicchi sul link della pagina successiva, l'array post sarà vuoto mentre la sessione mantiene i dati memorizzati.


  • User

    Ciao,
    prova a fare così:

    <form id="form1" name="form1" method="post" action="a.php">
    <input type="input" name="variabile" value="Variabile">
    <input type="submit" name="zz" value="Invia" />
    </form>

    Ecco adesso il form invia alla pagina a.php
    ti puoi fare la seguente condizione in alto alla pagina a.php:

    <?php
    if ($_POST['zz']){
    $variabile = mysql_real_escape_string($_POST['variabile']);
    header("Location: b.php?variabile=$variabile");
    }
    ?>

    Mentre nella pagina b.php fai la condizione:
    $variabile = mysql_real_escape_string($_GET['variabile']);

    echo $variabile; //ECCO LA NOSTRA VARIABILE NELLA PAGINA B.PHP

    Fammi sapere.. 🙂


  • User Attivo

    Lui parlava di "veramente tanti dati" quindi passare stringhe col metodo GET non mi sembra appropriato...

    La funzione mysql_real_escape_string() si usa appena prima di inserire i dati nel db... e una volta sola; nel codice che hai postato non ti permetterebbe di recuperare il valore originale immesso nel campo input se quest'ultimo contenesse un apice o un doppio.


  • User

    Ciao,
    allora fai conto che nella pagina b.php lui vorrebbe inserire i dati nel database e tu metti il controllo solo una volta chiunque può manomettere il link..!
    nella pagina b.php se vuole inserire i dati nel database deve per sicurezza lasciare mysql_real_escape_string...

    poi se più esperto di me vedi tu.. 🙂

    Grazie


  • User Attivo

    Boh... sono disarmato...

    Hai letto cosa ho scritto?

    E hai testato il codice che hai postato?


  • User

    ciao,
    si ho testato..
    il primo mysql_real_escape_string si può evitare..

    boh non lo so..

    grazie


  • User Attivo

    Grazie per le soluzioni, in questo caso ho cambiato la struttura evitando il problema, tuttavia rimane la curiosità: se qualcuno sa risolvere il quesito sarebbe interessante! 🙂


  • ModSenior

    Il POST non puoi reinviarlo mediante un redirect normale, dovresti mandare un output con un form che venga inviato automaticamente in javascript. Non è il massimo da fare come cosa.

    Comunque solitamente si tende ad utilizzare di più il database, piuttosto che fare operazioni di questo tipo, per fare inserimenti multipli di qualcosa.