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

    Refresh o non refresh.. questo è il problema

    ciao ragazzi/e,
    ho un problema da risolvere (ma và? Direte voi ):

    una pagina php (diciamo la "pagina1") presenta un form, compilato il quale l'utente è inviato a una seconda pagina (diciamo la "pagina2").

    Nella "pagina2" lo script controlla i dati inviati e se tutto è ok (i campi obbligatori sono compilati, il formato email è valido ecc..) i dati arrivati (via post) dal form vengono inseriti in un database.

    Fin qui niente di particolare.

    Il problema però è che se si fa il "refresh" della "pagina2" lo script aggiunge un altro record al database, con gli stessi identici dati già inseriti (tranne l'ID che si incrementa).

    Ora per risolvere questo inconveniente dovrei fare un controllo sul db, vedere se i dati sono gli stessi e permettere di inserire un altro record se non lo sono.. ma, vi chiedo, non è possibile fare tutto facilmente con l'aiuto di un flag che mi dica se i dati sono arrivati da "pagina1" oppure sono solo relativi ad un "refresh"?

    Si può fare?

    Ciao ciao

  2. #2
    Perche' no. Usa la sessione.
    codice:
    <?php
    session_start();
    
    if(!empty($_SESSION['fatto']) AND $_SESSION['fatto'] == 'gia fatto') {
         unset($_SESSION['fatto']);
         header("location: ./pagina1.php");
         exit;
    }
    
    ....
    codice
    ....
    
    
    if(mysql_query(insert... ) ) {
        $_SESSION['fatto'] = 'già fatto';
    }
    Questo modo e' il piu' semplice


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    diciamo che baserebbe fare:

    Codice PHP:

    CODICE CHE PRENDE I DATI
    ,

    CODICE CHE LI CONTROLLA,

    CODICE CHE LI METTE NEL DATABASE;

    header("Location: pagina3.php"); 
    ma se esiste un metodo migliore mi piacerebbe saperlo...


    Ciao!

  4. #4
    la risposta è molto interessante (per me direi.. geniale!), ma purtroppo non posso applicarla perché:

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/../index.php:4) in /home/../pagina22.php on line 3

    purtroppo

    Mi dite una soluzione alternativa per favore? :master:

  5. #5
    Originariamente inviato da IGS
    la risposta è molto interessante (per me direi.. geniale!), ma purtroppo non posso applicarla perché:

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/../index.php:4) in /home/../pagina22.php on line 3

    purtroppo

    Mi dite una soluzione alternativa per favore? :master:
    il codice di piero, lo devi mettere prima di ogni altro output della pagina...
    Ciao!

  6. #6
    si, ho fatto così, ma la pagina è "inclusa" in un'altra che ha già una session aperta.
    Per questo mi piacerebbe sapere se posso evitare la "session" (anche se, ripeto, per me è una idea magnifica!)

  7. #7
    allora, o fai come ti ho detto io prima,
    oppure aggiungi $_SESSION['fatto']alla sessione aperta...
    Ciao!

  8. #8
    02-09-2005 ore 1.55!!! ...e se vi dicessi sono diventato babbo di una meraviglia...??
    questa è la notizia più bella! Congratulazioni!

    Per quanto riguarda invece il mio problema:
    onestamente non mi ci ritrovo molto con le sessioni, faccio sempre un gran casino (che vorrei evitare ). Non ci sono sistemi semplici alternativi?

  9. #9
    GRAZIE MILLE!!!



    ma hai provato la mia prima soluzione???

    Codice PHP:
    $query "INSERT INTO table ('id','nome') VALUES ('2','pincopallino')";

    if(
    mysql_query($query) or die mysql_error()) {
         
    header("location: pagina_che_vuoi.php");

    Ciao!

  10. #10
    come vedi dall'errore che avevo postato in precedenza:

    Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/../index.php:4) in /home/../pagina2.php on line 3

    l' "header" è già stato inviato e non mi consente di inviarne ulteriori.. sigh!

    Mi sa ke sto problema non ha una sol facile, mi tocca controllare il db (il ke non volevo proprio farlo..)

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 © 2024 vBulletin Solutions, Inc. All rights reserved.