ELUCUBRAZIONI MENTALI DA QUARANTENAE' una domanda piuttosto tecnica e che riguarda il codice GDR CD vecchio, quello fatto da Romeo Gentile per intenderci.Tolte tutte le problematiche di quel codice e di cui tutti siamo a conoscenza, lo stavo un attimo guardando e mi sono chiesto: qual è la parte, nella pagina refresh.php, che gestisce la comparsa di un nuovo messaggio postato?Posto qui sotto i pezzi principali:SCRIPT REFRESH
<SCRIPT language="JavaScript">function doRefresh() {document.location.reload();}window.setTimeout("doRefresh();" , 10000);</SCRIPT>
$MySql = "SELECT * FROM Chat WHERE (Stanza = '".pars($Stanza)."' OR Tipo = 'G') AND ID > ".$LastTime." AND DATE_ADD(Ora, INTERVAL 180 MINUTE) >= NOW()";$MySql .= " ORDER BY ID DESC LIMIT 0, 20";$Result = mysql_query($MySql);$Counter = 0;$newchat = '';
if ($LastTime == 0) { $Testata .= "<HEAD><link rel=\"stylesheet\" href=\"mainchat.css\" TYPE=\"text/css\"></HEAD><BODY>";}
switch ($rs['Tipo']) { case 'M': #Master $n = '<TABLE style="width:100%;"><TR><TD align=justify><span class="Master"><font class=Testo>'.$rs['Testo'].'</FONT></td></tr></table>'; break;}
$newchat = $Testata.$newchat;$newchat = str_replace("\\", "\\\\", $newchat);$newchat = str_replace("'", "\\'", $newchat);?><script>parent.chattesto.document.write('<?= $newchat ?>');var h = 0;try {h = parent.chattesto.document.body.offsetHeight + 1000;} catch(e) {h = 0};parent.chattesto.scroll (0, h);</script><SCRIPT language="JavaScript">// verifico il refresh della paginavar msg = "Questa pagina è stata letta" + "<BR><B>" + Date() + "</B>";document.write(msg);</SCRIPT>
Pagine → 1
03/04/2020 22:58:29
è quello nella sezione SELEZIONE TABELLA CHATOgni volta che dei messaggi di chat vengono scritti nella finestra di chat viene memorizzato l'id dell'ultimo messaggio visualizzato (in una variabile di sessione se non ricordo male). Quell'id è quello che viene usato nella richiesta successiva e messo nella variabile $LastTime per pescare solo i messaggi nuovi con la query.
---Non chiedetemi aiuto in privato per questioni di programmazione; chiedete sul forum e eventualmente vi risponderò lì.http://gdrportal.eu - Hosting per GDR
04/04/2020 07:57:35
leoblacksoul ha scritto: è quello nella sezione SELEZIONE TABELLA CHAT (in una variabile di sessione se non ricordo male). Quell'id è quello che viene usato nella richiesta successiva e messo nella variabile $LastTime per pescare solo i messaggi nuovi con la query.
04/04/2020 15:52:08
iunius ha scritto: Grazie mille leoblacksoul, anche se il problema è proprio questo.Quale diavolo è questa variabile di sessione? Io non la trovo da nessuna parte 🕵️
$LastTime=$_SESSION['LastTime'];
$MySql = "SELECT * FROM Chat WHERE Stanza = '".pars($Stanza)."' AND ID > ".$LastTime." AND DATE_ADD(Ora, INTERVAL 60 MINUTE) >= NOW()";$MySql .= " ORDER BY ID DESC LIMIT 0, 30";
while ($rs = mysql_fetch_array($Result)) { if ($rs['ID'] > $LastTime) { $_SESSION['LastTime'] = $rs['ID']; $LastTime = $_SESSION['LastTime']; };
Discussione seguita da: » iunius