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

    Rimediare nella mia chat il problema che non compare, a volte, il messaggio inviato.

    Ciao ho un problem con la mia chat, a volte inviato il messaggio esso non compare nella pagina e quindi sia a me che anche agli altri siamo costretti a riscrivere il messaggio.
    Alcuni utenti del forum mi hanno indicato una soluzione di nome flock() che avrebbe fatto in modo che un messaggio non inviato fosse ritornato sulla text area senza dovere ridigitare tutto il messaggio, ma purtroppo questo non avviene.
    Altra cosa si pensava che il messaggio non inviato avesse come causa che due utenti scrivono e inviano nello stesso momento perciò la chat non avendo database e basandosi su foglio di testo non riuscisse a immagazzinare i messaggi che quindi vengono persi.
    Io voglio sapere se c'è un modo per ovviare a questo problema: inoltre vi posto i due codici delle due pagine chat e insert che sono quelli che dovrebbero essere i file da modificare, spernado in una risposta:

    ecco i codici:

    chat.php
    Codice PHP:
    <html>
    <head>
    <title>Happy Chat</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;
      }
      </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);
    $messaggio=$_GET['messaggio']; //recupera il messaggio in caso di errore flock



    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[$i]);
    $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=14000// Dimensione in bytes massima per ricreare il file online

    if ($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
    UN NICK O UNA PASSWORD
    NON CORRETTI,
    OPPURE NON SEI
    ANCORA REGISTRATO.[/b]

    "
    ;
    echo 
    "<a href=\"javascript:history.back();\">TORNA AL LOGIN</a></center>";
    exit;
    }
    ?>
    <table width="177" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;">
            <tr> 
              <td width="177" height="21" colspan="6" bgcolor="#BBC2F2"><div align="center">
    <div align="center"><iframe src="http://www.globalmeteo.altervista.org/chat/messaggi.php" width="177" height="105" scrolling="yes"></iframe> 
        </td></tr></table>


        <div align="center"> 
          
    <table width="177" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;">
            <tr> 
              <td width="177" height="21" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">[b]PERSONE 
                  ON-LINE [/b]</font></div></td>
            </tr>
            <tr> 
              <td height="21"><iframe width="177" height="45" src="online.php" scrolling="no"></iframe></td>
            </tr>
          </table>
          



    <form method="GET" action="insert.php" name="form_ins" > 

    <table width="185" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;">
            <tr> 
              <td width="185" height="21" colspan="6" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">[b]SIMBOLI METEO-SMILES[/b]</font></div></td>
            </tr>
        <tr><td colspan="4"><div align="center">
    <? 

    if ( empty($_GET['faccina']) ) $faccina "" 
    else 
    $faccina $_GET['faccina'] ; 

    echo 

    <select name=\"faccina\" size=\"1\"> 

    <option value=\"[em1]\" "

    if ( 
    $faccina == "[em1]" ) echo " selected" 
    echo 
    ">sereno</option> 

    <option value=\"[em2]\" "

    if ( 
    $faccina == "[em2]" ) echo " selected" 
    echo 
    ">poco-nuvoloso</option> 

    <option value=\"[em3]\" "

    if ( 
    $faccina == "[em3]" ) echo " selected" 
    echo 
    ">nuvoloso</option> 

    <option value=\"[em4]\" "

    if ( 
    $faccina == "[em4]" ) echo " selected" 
    echo 
    ">luna</option> 

    <option value=\"[em5]\" "

    if ( 
    $faccina == "[em5]" ) echo " selected" 
    echo 
    ">luna-nuvoloso</option> 

    <option value=\"[em6]\" "

    if ( 
    $faccina == "[em6]" ) echo " selected" 
    echo 
    ">pioggia</option> 

    <option value=\"[em7]\" "

    if ( 
    $faccina == "[em7]" ) echo " selected" 
    echo 
    ">pioggia-neve</option> 

    <option value=\"[em8]\" "

    if ( 
    $faccina == "[em8]" ) echo " selected" 
    echo 
    ">temporale</option>

    <option value=\"[em11]\" "

    if ( 
    $faccina == "[em11]" ) echo " selected" 
    echo 
    ">temporale-pioggia</option>  

    <option value=\"[em9]\" "

    if ( 
    $faccina == "[em9]" ) echo " selected" 
    echo 
    ">neve</option> 

    <option value=\"[em10]\" "

    if ( 
    $faccina == "[em10]" ) echo " selected" 
    echo 
    ">nebbia</option> 

    <option value=\"[em12]\" "

    if ( 
    $faccina == "[em12]" ) echo " selected" 
    echo 
    ">caldo</option>

    <option value=\"[em13]\" "

    if ( 
    $faccina == "[em13]" ) echo " selected" 
    echo 
    ">freddo</option>

    <option value=\"[em14]\" "

    if ( 
    $faccina == "[em14]" ) echo " selected" 
    echo 
    ">vento</option>

    </select> 
    "


    ?> </td>            

              <td height="21"><div align="center">[img]emoticons/em15.gif[/img]</div></td></tr>

    <tr> 

              <td height="21"><div align="center">[img]emoticons/em16.gif[/img]</div></td>
              <td height="21"><div align="center">[img]emoticons/em17.gif[/img]</div></td>
              <td height="21"><div align="center">[img]emoticons/em18.gif[/img]</div></td>
              <td height="21"><div align="center">[img]emoticons/em19.gif[/img]</div></td>
              <td height="21"><div align="center">[img]emoticons/em20.gif[/img]</div></td>

            </tr>
          
    </table>
          
     <table width="185" 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">[b]MESSAGGIO[/b]</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,300);" onKeyUp="textCounter(this.form.cjmsg,this.form.rem,300);" cols="18" type="text" name="messaggio"><?php if ($messaggio!="") echo "$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="300">
                        </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 messaggio">
                        


    </div></td>
                    </tr>
                  




    </table>
                </form></td>
            </tr>
          </table>
    </body>
    </html>
    insert.php:
    Codice PHP:
    <html>
    <head>
    <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);
    $messaggio=str_replace("\n"," ",$messaggio);
    $commento="[".date("H:i - d/m/Y")."] ".$nick."|".$messaggio."\n";
    if ( !empty(
    $_GET['faccina']) )  $commento $_GET['faccina']." ".$commento ;
    $url="chat.php"."?nick=".$nick."&password=".$password;
    if ( !empty(
    $_GET['faccina']) ) $url .= "&faccina=".$_GET['faccina'] ;
    $url_mess=$url."&messaggio=".$messaggio//in caso di errore passa anche il messaggio


    if (empty($messaggio))
    {
    Header("Location: $url");
    }

    else
    {
    $apri_file=fopen($file_mess,"a+");

    if (@
    flock($apri_fileLOCK_EX)) { //blocco, uso esclusivo in scrittura
    fputs($apri_file,$commento);
    @
    flock($apri_fileLOCK_UN); // rilascia il il blocco
    } else {
    fclose($apri_file);
    Header("Location: $url_mess");//torna alla chat portandosi dietro il messaggio
    }

    fclose($apri_file);
    Header("Location: $url");
    }
    ?>
    </body>
    </html>

  2. #2
    http://it.php.net/manual/it/function.flock.php

    come puoi intuire dal manuale flock non è una scienza esatta :-(

    se è una chat i messaggi da storicizzare non sono molti quindi potresti anche provare a creare un file per ogni messaggio in modo da non avere problemi di questo tipo.

    ciao

  3. #3
    Originariamente inviato da bubu77
    http://it.php.net/manual/it/function.flock.php

    come puoi intuire dal manuale flock non è una scienza esatta :-(

    se è una chat i messaggi da storicizzare non sono molti quindi potresti anche provare a creare un file per ogni messaggio in modo da non avere problemi di questo tipo.

    ciao
    scusa potresti spiegarmi cosa dovrei fare per realizzare quello che hai detto? ti ringrazio fin da ora...

  4. #4

  5. #5
    nessuno che sa darmi un consiglio?

  6. #6
    sono esasperato nessuno mi offre una mano?

  7. #7

  8. #8

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