• User Attivo

    problema su chat in php

    Salve a tutti da ieri la chat realizzata in php sul mio sito ha cominciato a dare di matta, vi spiego codesta chat ha dei simboli selezionabili, se ne scelgo uno quello rimane per ogni messaggio che si invia, purtroppo da ieri, non resta più in memoria il simbolo ma torna al primo della lista subito al secondo messaggio inviato... cosa può essere accaduto?

    Vi posto i file fulcro della chat:

    chat.php
    [PHP]<?/session_start();if(!isset($_SESSION['utente'])){echo " <script> alert("Se non sei registrato, non hai i permessi per accedere a questa pagina"); </script> ";header("Location:logout.php");exit;}/?><html><head><script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script>
    <title>Chat meteo globalmeteo</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><script language = "JavaScript">function textCounter(field, countfield, maxlimit) { if(field.value.length > maxlimit){ field.value = field.value.substring(0, maxlimit); } else{ countfield.value = maxlimit - field.value.length; }}</script><script language="javascript"> function aggiungi(y) { espressione=document.form_ins.messaggio.value; new_espressione=espressione + y; document.form_ins.messaggio.value=new_espressione; } function checkSubmit() { var subValue = document.form_ins.Submit.value; if(subValue!="Attendere") { // Se non ha inviato subValue = "Attendere"; document.form_ins.Submit.disabled = "true"; //Disabilito il pulsante return true; } else { return false; } }</script><script type="text/javascript"> <!-- var stile = "top=10, left=10, width=250, height=285, status=no, menubar=no, toolbar=no scrollbar=no"; function Popup(apri) { window.open(apri, "", stile); } //--></script> <style>.stile { background:#FFFFFF; font-family:verdana; font-size:8pt; SCROLLBAR-BASE-COLOR: #0099CC; SCROLLBAR-ARROW-COLOR: #FFFFFF; }</style></head><body bgcolor="#FBBEAA"><?include("config.php");$nick=$_GET['nick'];$nick=strtolower($nick);$nick=stripslashes($nick);$password=$_GET['password'];$password=strtolower($password);$password_cr=crypt($password,$nick);$password_cr=str_replace("|","",$password_cr);if (!(file_exists($file_reg))){fopen($file_reg,"w");}$utente=$nick."|".$password;$utente_ok=0;$ut_regist=file($file_reg);$dim_reg=count($ut_regist);for ($i=0;$i<$dim_reg;$i++){$dati_ut=explode("|",$ut_regist);$nick_ut=$dati_ut[0];$pass_ut=$dati_ut[1];if (($nick==$nick_ut) & ($password_cr==$pass_ut)) $utente_ok=1;}if ($utente_ok==1){if (!(file_exists($file_online))){fopen($file_online,"w");}$dim_file=filesize($file_online);$dim_max=30000; // Dimensione in bytes massima per ricreare il file onlineif ($dim_file>$dim_max)fopen($file_online,"w");$ar_orario=getdate();$ora=$ar_orario['hours'];$minuti=$ar_orario['minutes'];$secondi=$ar_orario['seconds'];if (strlen($minuti)==1) $minuti="0".$minuti;if (strlen($secondi)==1) $secondi="0".$secondi;$data=date("d/m/Y");$orario=$ora.":".$minuti.":".$secondi;$utente=$nick."|".$data."|".$orario."\n";$ins_online=fopen($file_online,"a+");fputs($ins_online,$utente);fclose($ins_online);}else{echo "<center><b>E' STATO INSERITO<br>UN NICK O UNA PASSWORD<br>NON CORRETTI,<br>OPPURE NON SEI<br>ANCORA REGISTRATO.</b><br><b>------------------</b><br><br><i><b>IMPORTANTE:<br> se sei sicuro che i dati sono esatti, prova a verificare che la [REDAZIONE] non abbia inviato una mail, all'indirizzo da te fornito nella registrazione, con i tuoi dati corretti. Fatto questo prova a rientrare. Grazie.<br><br>Se non hai ricevuto nessuna mail allora scrivici a:</i><br><u>[email protected]</u><br><i>ti forniremo tutte le info per entrare. Grazie.</b></i> ";echo "<a href="javascript:history.back();"><br><br>TORNA AL LOGIN</a></center>";exit;}?><table width="250" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;"> <tr> <td width="250" height="21" colspan="6"><div align="center"><div align="center"><iframe src="messaggi1.php" width="240" height="105" scrolling="yes"></iframe> </td></tr></table> <div align="center"> <br><table width="250" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;"> <tr> <td width="250" height="21" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>UTENTI ON-LINE </strong></font></div></td> </tr> <tr> <td height="21"><div align="center"><iframe width="240" height="45" src="online.php" scrolling="yes"></iframe></div></td> </tr> </table> <br><form method="GET" action="insert.php" name="form_ins" onsubmit="checkSubmit();"><table width="252" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;"> <tr> <td width="252" height="21" colspan="6" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>SIMBOLI METEO - SMILES</strong></font></div></td> </tr> <tr><td colspan="4"><div align="center"><select name="indirizzo_faccina" size="1"> <option value="1"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "1" ? " selected="selected"" : ""); ?>>sole</option> <option value="2"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "2" ? " selected="selected"" : ""); ?>>poco nuvoloso</option> <option value="3"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "3" ? " selected="selected"" : ""); ?>>nuvoloso</option> <option value="4"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "4" ? " selected="selected"" : ""); ?>>luna</option><option value="5"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "5" ? " selected="selected"" : ""); ?>>luna nuvoloso</option> <option value="21"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "21" ? " selected="selected"" : ""); ?>>pioggia deb/mod</option><option value="6"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "6" ? " selected="selected"" : ""); ?>>pioggia forte</option> <option value="7"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "7" ? " selected="selected"" : ""); ?>>pioggia/neve</option><option value="8"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "8" ? " selected="selected"" : ""); ?>>temporale</option> <option value="11"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "11" ? " selected="selected"" : ""); ?>>temporale pioggia</option><option value="22"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "22" ? " selected="selected"" : ""); ?>>grandine</option> <option value="23"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "23" ? " selected="selected"" : ""); ?>>pioggia/grandine</option><option value="25"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "25" ? " selected="selected"" : ""); ?>>neve deb/mod</option><option value="9"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "9" ? " selected="selected"" : ""); ?>>neve forte</option><option value="24"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "24" ? " selected="selected"" : ""); ?>>foschia</option><option value="10"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "10" ? " selected="selected"" : ""); ?>>nebbia</option><option value="12"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "12" ? " selected="selected"" : ""); ?>>caldo</option><option value="13"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "13" ? " selected="selected"" : ""); ?>>freddo</option><option value="14"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "14" ? " selected="selected"" : ""); ?>>vento</option></select></td> <td height="21"><div align="center"><a href="javascript:Popup('indirizzo')"><img src="emoticons/moresm.gif" width="36" height="22" border="0"></div></a></td></tr><tr> <td height="21"><div align="center"><img src="emoticons/em16.gif" width="15" height="15" onClick="aggiungi('[em16]')"></div></td> <td height="21"><div align="center"><img src="emoticons/em17.gif" width="15" height="15" onClick="aggiungi('[em17]')"></div></td> <td height="21"><div align="center"><img src="emoticons/em18.gif" width="15" height="15" onClick="aggiungi('[em18]')"></div></td> <td height="21"><div align="center"><img src="emoticons/em19.gif" width="15" height="15" onClick="aggiungi('[em19]')"></div></td> <td height="21"><div align="center"><img src="emoticons/em15.gif" width="15" height="15" onClick="aggiungi('[em15]')"></div></td> </tr> </table> <br> <table width="252" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;"> <tr> <td height="21" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>MESSAGGIO</strong></font></div></td> </tr> <tr> <td ><form method="GET" action="insert.php" name="form_ins" > <table width="170" border="0" align="center"> <tr> <td colspan="2"><div align="center"> <textarea rows="5" onKeyDown="textCounter(this.form.messaggio,this.form.rem,600);" onKeyUp="textCounter(this.form.cjmsg,this.form.rem,600);" cols="28" type="text" name="messaggio"></textarea> </div></td> </tr> <tr> <td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Lettere rimaste:</font></div></td> <td><div align="center"> <input readonly class="stile" type=text name=rem size=3 maxlength=3 value="600"> </div></td> </tr> <tr> <td height="26" colspan="2"> <div align="center"> <? echo "<input type="hidden" name="nick" value="$nick">"; echo "<input type="hidden" name="password" value="$password">" ?> <input type="submit" name="Submit" value="Invia il messaggio"> <input type="hidden" name="hideSubmit" value="hideGo"> </div></td> </tr> </table> </form></td> </tr> </table><script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrf2","beacon-1.newrelic.com","1b473294f5",550561,"M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,62,new Date().getTime()]);</script>
    </body></html>[/PHP]


  • User Attivo

    insert.php
    [PHP]<? $back_ctrl=1; // quanti messaggi deve verificare per evitare il doppio inserimento (gli ultimi N messaggi) if(!isset($_GET['hideSubmit'])) { echo " <script language="javascript"> alert("Non hai i permessi per accedere a questa pagina"); </script> "; exit; } ?> <html> <head> <script type="text/javascript">var NREUMQ=NREUMQ||[];NREUMQ.push(["mark","firstbyte",new Date().getTime()]);</script>
    <title>Inserimento del messaggio</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body> <? include("config.php"); $nick=$_GET['nick']; $password=$_GET['password']; $messaggio=$_GET['messaggio']; $messaggio=stripslashes($messaggio);/elimina gli slashes aggiunti con addslashes/ $messaggio=str_replace("\n"," ",$messaggio);/sostituisce gli a capo con degli spazi nel messaggio/ $commento="[".date("H:i - d/m/Y")."] ".$nick."|".$messaggio."\n"; if ( !empty($_GET['indirizzo_faccina']) ) $commento = "[em".$_GET['indirizzo_faccina']."] ".$commento ; $indrizzo_faccina = (isset($_GET['indirizzo_faccina'])) ? $_GET['indirizzo_faccina'] : ''; $url = "indirizzo?nick=$nick&password=$password&indirizzo_faccina=$indirizzo_faccina";$cercamsg = strstr($messaggio,"<");/trova la prima occorrenza di < nel messaggio/ $cercamsg2 = strstr($messaggio,">");/trova la prima occorenza di > nel messaggio/ if (empty($messaggio)) { Header("Location: $url"); } elseif ($cercamsg && $cercamsg2) { Header("Location: $url"); } else { $chk_file=file($file_mess); $status=0; for ($x=count($chk_file)-$back_ctrl;$x<count($chk_file);$x++) { list($data_nick,$chk_msg)=explode("|",$chk_file[$x]); list($em,$chk_data,$chk_nick)=explode("] ",$data_nick); if ( trim($chk_msg) == trim($messaggio) && trim($nick)==trim($chk_nick) ) $status = 1; //echo " nick utilizzato= ".$nick." e nick di verifica = $chk_nick<br>"; } if ($status == 0) { $apri_file=fopen($file_mess,"a+"); fputs($apri_file,$commento); fclose($apri_file); Header("Location: $url"); } else { Header("Location: $url"); } } ?> <script type="text/javascript">if(!NREUMQ.f){NREUMQ.f=function(){NREUMQ.push(["load",new Date().getTime()]);var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://d1ros97qkrwjf5.cloudfront.net/42/eum/rum.js";document.body.appendChild(e);if(NREUMQ.a)NREUMQ.a();};NREUMQ.a=window.onload;window.onload=NREUMQ.f;};NREUMQ.push(["nrf2","beacon-1.newrelic.com","1b473294f5",550561,"M1QBYUMCDUAEWkRfWgoeNkdYTAVcF0xdGUMGQgZaHxMLQw==",0,51,new Date().getTime()]);</script>
    </body> </html> [/PHP]

    Spero che qualcuno di ferrato possa aiutarmi a capire perchè soltanto da ieri non funziona più, che sia un problema a livello di hosting? ho altervista se può essere d'aiuto, grazie


  • ModSenior

    Ciao giulio3x,
    potresti postare il codice con la formattazione? Perchè non va mai a capo, e capirci qualcosa è molto complicato.


  • User Attivo

    @Thedarkita said:

    Ciao giulio3x,
    potresti postare il codice con la formattazione? Perchè non va mai a capo, e capirci qualcosa è molto complicato.
    Ciao e grazie della risposta...

    Faccio prima a postarti i link dei file

    file chat.php
    w.w.w.globalmeteo.altervista.org/chat.txt

    file insert.php
    w.w.w.globalmeteo.altervista.org/insert.txt

    Grazie.


  • ModSenior

  • User Attivo

    Funzionaaaa! sei davvero un genio Thedarkita, sapevo che potevo contare su di te! sei un grande!
    Grazie mille! 😉

    Ps: mi puoi ora solo spiegare come mai fino a 2 giorni fa funzionava anche senza quell'aggiunta? Grazie!


  • ModSenior

    Figurati. 🙂
    Se quel codice funzionava prima, l'unico motivo possibile è che la direttiva register_globals era impostata su ON.
    Cosa altamente sconsigliata, e che creava non pochi problemi di sicurezza se il codice dei tuoi script non era perfetto.
    Maggiori informazioni le trovi qui:
    http://www.giorgiotave.it/forum/scripting-e-risorse-utili/99967-pillola-consigli-sul-perche-mantenere-register_globals-su-off.html


  • User Attivo

    @Thedarkita said:

    Figurati. 🙂
    Se quel codice funzionava prima, l'unico motivo possibile è che la direttiva register_globals era impostata su ON.
    Cosa altamente sconsigliata, e che creava non pochi problemi di sicurezza se il codice dei tuoi script non era perfetto.

    e qui andiamo in un mondo a me sconosciuto, comunque questa chat non si basa su database mysql, e non ho la più pallida idea se la register_globals fosse impostata su ON.
    Quindi deduco che altervista senza che io me ne accorgessi abbia fatto modifiche a mia insaputa mettendo in off? mah che niubbo che sono...
    Comunque ancora grazie mille 🙂


  • ModSenior

    Se prima funzionava, e poi ha smesso l'unico motivo può essere questo. La direttiva comunque, come puoi vedere nella discussione che ti ho linkato prima, non ha nulla a che vedere con i database per cui anche utilizzando i file di testo ti crea delle differenze.
    Magari si sono accorti che era impostata ad ON per sbaglio, ed hanno sistemato.


  • User Attivo

    ho capito mi è un po più chiaro, grazie mille ancora Thedarkita, ciao! 🙂