- Home
- Categorie
- Coding e Sistemistica
- Coding
- Impedire l' invio multiplo dei messaggi con il refresh
-
Impedire l' invio multiplo dei messaggi con il refresh
Come dal titolo, nella mia chat in PHP/MYSQL quando invio un messaggio prima di tutto il primo messaggio che invio non lo stampa in output, però appena faccio il refresh lo leggo, poi successivamente quando scrivo gli altri sempre di un messaggio indietro và...perchè manca un refresh automatico. E seconda cosa quando aggiorno la pagina con F5 il messaggio viene rinviato...come posso evitare questo e fare un refresh automatico? Ho provato con la funzione ```
<meta http-equiv="refresh" content="5">
-
Ciao ralph007,
la soluzione migliore è usare ajax, sul sito jquery trovi esempi base per utilizzare ajax facilmente e non credo avrai problemi a capirli. In caso basta chiedere nel forum, indicando dove hai problemi e troverai sicuramente qualcuno che ti aiuterà.
Altrimenti metti in una variabile di sessione l'ultimo messaggio, e fai un controllo impedendo il reinvio dell'ultimo, anche se la soluzione in ajax è a mio avviso migliore.
-
oppure ti fai un redirect in php subito dopo aver inserito il messaggio
[php]
header('Location: ritorna alla pagina precedente della chat');
[/php]
-
Ho provato non funziona! Comunque vi posto la chat! Non riesco..sono giorni e giorni che cerco su internet, ma non riesco...
ecco la chat..provatela...
chat.php
<?php include 'db.php'; session_start(); $nick = htmlspecialchars($_POST['nick']); if($nick != "Nick"){ $_SESSION['Nick'] = $nick; } ?> <html> <head> <title>Chat</title> <body> <br><br><center><table style="background-color: blue; height: 100px; width: 475px;" cellpadding="2" cellspacing="2"> </td> </table> <tr> <table style="background-color: white; height: 500px; width: 475px;" id="tabella" align="center" border="0"> <tbody> <tr> <td style="font-size: 15px; width: 616px;" valign="top"></script> <div style="overflow: auto; margin-left: 0px; height: 400px; width: 450px;"> <?php if(isset($_POST['nick']) && !empty($_POST['nick']) ){ $_SESSION['nick'] = htmlentities(addslashes($_POST['nick'])); } if(isset($_SESSION['nick'])){ $query = mysql_query("SELECT * FROM `chat` ORDER BY `time` DESC"); while($result = mysql_fetch_array($query)) { print "<b><font color='blue'>".$result['nick']."</font>: </b> ".$result['post']." <br>"; } } ?> </div> </td> <?php print htmlspecialchars($_SESSION['nick']); ?>; </div> </td> </tr> </div> <tr> <td style="border-color: black; width: 616px;" height="25"> <form action="" method="post" style="margin: 0px; background-color: green; height: 35px; width: 400px;"> <input style="border-style: solid; width: 100px; background-color: white;" name="testo"><input name="utente" value="<?php print htmlspecialchars($_SESSION['nick']); ?>;" type="hidden"> <input name="submit" value="INVIA" style="border-style: solid; border-color: black; background-color: black; color: white;" type="submit"></form> </tr> </tbody> </table> <table <?php if(!empty($_POST['testo']) && !empty($_POST['utente'])) { $text = mysql_real_escape_string( htmlentities( stripslashes( $_POST['testo'] ))); $utente = mysql_real_escape_string( htmlentities( stripslashes( $_POST['utente'] ))); $text=stripslashes($text); mysql_query("INSERT INTO `chat` (`time` ,`nick` , `post` )VALUES ( NOW( ), '{$utente}', '{$text}');"); } ?>
db.php
<?php /* CONNESSIONE AL DATABASE */ $mysql['host'] = "localhost"; $mysql['user'] = "ralph007""; $mysql['pass'] = ""; $database = "my_ralph007"; mysql_connect($mysql['host'], $mysql['user'], $mysql['pass']) or die(mysql_error()); mysql_select_db($database) or die(mysql_error()); $time_refresh = 0; ?>
-
che errore ti da il redirect scusa??
se è un errore tipo Headers alredy sent
ti basta posizionare un ob_start(); all'inizio pagina
il redirect deve funzionare perchè ti reindirizza alla pagina della chat come un refresh e ti fa visualizzare i dati correttamente dall'ultimo inserito oppure
quando inserisci una nuova risposta la simuli tu prelevando i dati recuperati dal form tanto sicuramente sarà l'ultimo messaggio evitando anche il refresh.Spero mi sia spiegato bene XD
-
ma è brutto da vedere...
-
@ldgweb said:
che errore ti da il redirect scusa??
se è un errore tipo Headers alredy sent
ti basta posizionare un ob_start(); all'inizio pagina
il redirect deve funzionare perchè ti reindirizza alla pagina della chat come un refresh e ti fa visualizzare i dati correttamente dall'ultimo inserito oppure
quando inserisci una nuova risposta la simuli tu prelevando i dati recuperati dal form tanto sicuramente sarà l'ultimo messaggio evitando anche il refresh.Spero mi sia spiegato bene XD
GRAZIE FUNZIONA PERFETTAMENTE
-
Vabbè comunque se gli altri utenti scrivono i messaggi io nn li vedo se nn aggiorno..funziona solo con i miei messaggi..quindi non mi serve a nulla..