Prima o poi vi stuferete di me :D
No, seriamente...se si clicca due volte sul pulsante "Pubblica" quando si risponde quotando ad un commento, la risposta viene doppiata nei commenti. Senza stare lì a perdere tempo, penso di sapere quale sarebbe il problema...
Nel php che gestisce le verifiche si dovrebbe cambiare l'ordine delle verifiche degli errori e poi solo se non ce ne sono si va ad eseguire la query d'inserimento nel db. A mio parere, senza vedere il codice, o manca la verifica sul submit del form oppure c'è qualche altra verifica che non è messa nel posto giusto...
Provo a fare un esempio di codice:
Ho scritto il codice di getto, quindi scusate qualche eventuale errore...è solo per dare l'idea sulla logica da seguire. Ho sempre usato questa logica nei miei progetti e non ho mai avuto problemi con inserimenti doppi ;)
Edit:
Il codice sopra dovrebbe essere messo su /commento/elenco.html e nel caso in cui non si tratta di un .htacces con url_rewrite, tale file dovrebbe essere convertito in elenco.php. Ovviamente il header("Location:" . $_SERVER["HTTP_REFERER"] ); dovrebbe puntare sulla pagina d'attesa (invece referer mettiamo $pagina_attesa) e quindi seguire il normale flusso di navigazione... insomma, un lavoretto da 15 minuti...massimo mezzora ;)
No, seriamente...se si clicca due volte sul pulsante "Pubblica" quando si risponde quotando ad un commento, la risposta viene doppiata nei commenti. Senza stare lì a perdere tempo, penso di sapere quale sarebbe il problema...
Nel php che gestisce le verifiche si dovrebbe cambiare l'ordine delle verifiche degli errori e poi solo se non ce ne sono si va ad eseguire la query d'inserimento nel db. A mio parere, senza vedere il codice, o manca la verifica sul submit del form oppure c'è qualche altra verifica che non è messa nel posto giusto...
Provo a fare un esempio di codice:
PHP:
<?php
// inizializzo una variable tipo fail_safe
$form_error=true;
// prima verifico se è stato premuto "Pubblica"
if ((isset($_POST['pubblica'])&&($_POST['pubblica']=='Pubblica')){
if ((!isset($_POST['f_conferma'])||($_POST['f_conferma'] != '1')){
// non è stato selezionato il checkbox oppure è stato iniettato un valore diverso da 1
$form_error= true;
} else {
// eventuali funzioni per il checkbox
$form_error= false;
}
if ((!isset($_POST['f_testo'])||(strlen($_POST['f_testo']) < 2 )){ //ho messo che il testo deve avere minimo 2 caratteri...cambiate a vostro piacimento
// non c'è testo, quindi non voglio far apparire un messaggio vuoto
$form_error= true;
} else {
/* qui mettete tutte le funzioni relative al testo da inserire
tipo preg_match per togliere l'html non consentito ecc ecc
*/
$form_error= false;
}
}
// infine le query::
if ($form_error == false){
//sintetizzo la logica
if ($query) {
// la query d'inserimento è ok
header("Location:" . $_SERVER["HTTP_REFERER"] );
}
}
?>
Ho scritto il codice di getto, quindi scusate qualche eventuale errore...è solo per dare l'idea sulla logica da seguire. Ho sempre usato questa logica nei miei progetti e non ho mai avuto problemi con inserimenti doppi ;)
Edit:
Il codice sopra dovrebbe essere messo su /commento/elenco.html e nel caso in cui non si tratta di un .htacces con url_rewrite, tale file dovrebbe essere convertito in elenco.php. Ovviamente il header("Location:" . $_SERVER["HTTP_REFERER"] ); dovrebbe puntare sulla pagina d'attesa (invece referer mettiamo $pagina_attesa) e quindi seguire il normale flusso di navigazione... insomma, un lavoretto da 15 minuti...massimo mezzora ;)
Ultima modifica: