Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746

    strano comportamento invio POST



    > Ho un modulo in cui un utente inserisce i dati
    necessari all'iscrizione a dei corsi.

    invia i dati ad uno script ke li inserisce in un db
    e allo stesso tempo gli stessi dati vengono anke
    inviati via email all'ufficio competente

    succede ke a volte le iscrizioni risultino doppie in
    modo strano ossia:

    in una ci sono tutti i dati, nella successiva (anke 2 o 3)
    i dati ke arrivano dal modulo non ci sono e si trovano
    solo quelli aggiunti dallo script stesso, ad esempio il
    numero ip dell'utente.

    questo sia nel db ke nell'email.

    potrebbe essere ke sia solo il fatto ke magari
    l'utente clicca + volte sul pulsante submit?

    xkè nelle iscrizioni successive non ci
    sono i dati inseriti nel modulo?


    Errare humanum est, perseverare ovest

  2. #2
    Stampami lo script completo.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    682
    Probabilmte é un errore nella query ho hai scritto male i nomi di variabile.
    Durante la fase di iscrizione prova a stampare i dati a video che dovrebbero contenere le variabili per capire se tutte contengono i dati in modo tale da capire se hai dimenticato di inserire un campo da passare alla query.
    Prova a debuggare un pò

  4. #4
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Originariamente inviato da progalba
    Stampami lo script completo.
    ho provato a inviartelo in pvt ma non si possono mandare messaggi con + di 4.000 caratteri e in tutto i 2 file ne fomano oltre 30.000



    Originariamente inviato da kioto
    Probabilmte é un errore nella query ho hai scritto male i nomi di variabile.
    Durante la fase di iscrizione prova a stampare i dati a video che dovrebbero contenere le variabili per capire se tutte contengono i dati in modo tale da capire se hai dimenticato di inserire un campo da passare alla query.
    Prova a debuggare un pò
    le variabili sono tutte ok e pure le query.

    il punto è ke, NON sempre, MA ogni tanto, la stessa iscrizione
    genera 1 o + record nel db di cui il primo regolare con tutti i dati e
    i successivi senza i dati provenienti dal modulo.
    allo stesso tempo invia lo stesso numero di email in cui la prima contiene regolarmente tutti i dati e le successive vuote come i record.
    Errare humanum est, perseverare ovest

  5. #5
    prima di inserire i dati nel db, verifica se esistono già cosi dovresti evitare un doppio click sul pulsante o un'aggiorna da parte dell'utente.
    quando inserisci fai anche un locked del db.

  6. #6
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    Originariamente inviato da lbottoni
    prima di inserire i dati nel db, verifica se esistono già cosi dovresti evitare un doppio click sul pulsante o un'aggiorna da parte dell'utente.
    quando inserisci fai anche un locked del db.
    ci avevo pensato, ma se gli inserimenti successivi
    non contengono dati come faccio a fare il confronto?

    l'aggiorna non può farlo in quanto l'iscrizione si
    svolge in una finestra indipendente senza i pulsanti
    del browser.

    il locked del db non so proprio cosa sia.
    Errare humanum est, perseverare ovest

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da carlo2002
    l'aggiorna non può farlo
    1) F5
    2) menu contestuale (tasto destro)

    bastano?

  8. #8
    Ciao,
    per gestire i casi di doppio submit di solito si fa qualcosa del genere.

    Se non vuoi assolutamente avere duplicati nel db, devi fare un controllo con una query.
    Però questo controllo deve essere l'ultima spiaggia (meglio evitare query inutili) quindi prima di tutto assicurati che l'utente non abbia fatto refresh.

    1) Dopo il submit e l'inserimento nel db fai un redirect su una pagina di destinazione

    2) Per evitare che l'utente faccia click sul tasto back del browser e poi comunque rifaccia il submit utilizza le sessioni

    Potrebbe essere qualcosa del genere, butto lì ma dovrebbe andare bene

    codice:
    function submit_status($nomeCampoHidden)
    {
    
       $hiddenContent = trim(@$_REQUEST[$nomeCampoHidden])  ;
       $giaInviato = @$_SESSION[$nomeCampoHidden] ;
       $quanteVolte = 0 ;
    
       //se c'è invio
       if( isset($hiddenContent) )
       {
           //se e' il primo invio
           if( $giaInviato !== $hiddenContent )
           {
              $_SESSION[$nomeCampoHidden] = $hiddenContent ;
              $quanteVolte = 1 ;
           }
           //se e' il secondo invio non va bene
           else
           {
              $quanteVolte = 2 ;
           }
        }
    
       return $quanteVolte ;
    
    }
    
    
    $page_after_submit = 'http://www.miosito.com/miapag.php' ;
    session_start() ;
    $status = submit_status('nascosto') ;
    
    switch($status)
    {
        case 1:
          //debug
          //echo $status ;
          
          /*
          primo invio: eventualmente controllo con una query che i dati non siano duplicati,
          aggiorno il db e poi redirect ;
          */
    
          //session_write_close() ;
          //header('Location: $page_after_submit') ;
    
          break ;
          
        case 2:
             //debug
            //echo $status ;
            
            //secondo invio non aggiorno il db
            //e gestisco il problema
            break ;
        
        default:
            //debug
            //echo $status ;
            
            //non c'è stato ancora alcun invio, siamo al momento iniziale, mostro il form
    
    }
    per favore NIENTE PVT TECNICI da sconosciuti

  9. #9
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    si in effetti la via delle sessioni mi sembra la + sensata. grazie
    Errare humanum est, perseverare ovest

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.