Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Dupplicazione record DB ..non per F5

    Dunque....semplicemente da un form ricevo dei dati...faccio 1 piccolo controllo se l'utente esiste..e lo inserisco nel DB....spedisco una mail a chi di dovere per avvertire che si è inserito un nuovo utente.... ||||||||| poi c'è una tabella che mi conta il numero totale di utenti iscritti e ...se inserisco...aggiorno di 1 il num totale di utenti....

    quello che leggete prima di --> ||||||||| , viene eseguito 2 volte...inserisce (dupplica) l'utente, manda 2 email... non c'è nessun tipo di ciclo e simili...

    io avevo notato il prob. del doppio inserimento...(dove tra l'altro il secondo viene inserito ma con i campi totalmente vuoti)..al che avevo messo dopo l'insert un delete where user = '' ....tampone mentre cercavo la falla....poi ho aggiunto la spedizione email e ho visto che anche quella viene fatta 2 volte....

    questo il codice
    codice:
    ricevo i dati
    $user = $_POST['username'];
    $password = $_POST['password'];
    $nome = $_POST['nome'];
    
    controllo se esiste la mail
    $sql_select = "SELECT email FROM utenti WHERE email = '$email'";
    $result_sel = mysql_query($sql_select);
    $numrows = mysql_num_rows($result_sel);
    
    
    se non esiste
    if ($numrows == 0){
    
    spedisco una mail
    $from="info@mail.com";
    $dest="aa@mail.it";
    $oggetto="NUOVO UTENTE REGISTRATO";
    $messaggio="CONTENUTO: "."\n";
    $messaggio="mio messaggio";
    mail($dest,$oggetto,$messaggio,"From: $from");
    
    INSERISCO IL NUOVO UTENTE
    $sql_insert = "INSERT INTO utenti (username, password, nome) VALUE('$user', '$password', '$nome')";
    $result_insert = mysql_query($sql_insert);
    
    (TAMPONE) CANCELLO IL DUPPLICATO INCRIMINATO
    
    $sql_delete = "DELETE FROM utenti WHERE username = ''";
    $result_delete = mysql_query($sql_delete);
    
    
    AGGIORNO TABELLA numero totale utenti
    $sql_check = "SELECT * FROM contauser";
    $result_check = mysql_query($sql_check);
    $row_check = mysql_fetch_array($result_check);
    $num_update = ($row_check['tot']+1);
    
    $sql_update = "UPDATE progressivo_utenti SET progressivo = '$num_update'";
    $result_update = mysql_query($sql_update);
    
    
    MI SCRIVO IL TESTO CHE TUTTO è OK
    $testo = '
    I dati inseriti sono OK.';
    }else{
    
    OPPURE SE LA MAIL ESISTE NON FACCIO NA MAZZA E LO DICO
    $testo = 'Attenzione, email';
    }
    cosa mi sono perso nel codice che mi fa sto doppio invio e doppio inserimento?
    sono ceco?
    Tanto...lo fanno tutti... posso farlo anche io vero?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    97
    secondo me da qualche parte richiami 2 volte la pagina di inserimento (manda la pagina del form)

  3. #3
    Si credo anche io che da qualche parte ci sia....l'importante è che il codice iniziale al primo post sia giusto...poi vado a cercarlo che da qualche parte ci sarà pure sto doppio richiamo....

    codice:
    <form action="registrazione2.php" method="post" name="registrazione" id="form">
    <input type="hidden" name="username" value="<? echo $utente; ?>" />
    <? echo $utente; ?>
    <input name="password" type="password" class="form" id="password" size="60" />
    <td><input name="nome" type="text" class="form" id="nome" size="60" />
    <input name="invia2" type="submit" class="form" id="invia2" value=" invia  " />
    <input name="cancella2" type="reset" class="form" id="cancella2" value="cancella" />
    </form>
    Tanto...lo fanno tutti... posso farlo anche io vero?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    97
    a parte un <td> messo così tanto per, non vedo nulla.

    perchè assegni un id ad ogni elemento del form? soprattutto per l'elemento submit.

    usi tale id in qualche funzione javascript?

    non è che per caso il form e l'inserimento sono nella stessa pagina php e non esegui i dovuti controlli prima di eseguire la query di inserimento?

  5. #5
    il fatto degli id è stata fatta da chi ha fatto il form, non è cosa mia e cmq non vengono utilizzati

    il td di troppo è solo perchè non l'ho cancellato quando ho postato sul form

    no la pagina che inserisce e spedisce è diversa da quella del form..

    ..misteri del server ...
    Tanto...lo fanno tutti... posso farlo anche io vero?

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