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

    Far in modo che in una chat appaia l'immagine relativa al link inserito

    ciao a tutti, ho una chat e volevo far si che la chat riconosca il link dell'immagine che l'utente scrive all'interno del messaggio (ad esempio http://www.sitoimmagini.org/img/foto/imglago.jpg) e che la chat faccia apparire in automatico l'immagine che l'utente scrive nel messaggio istantaneamente.

    posto il file che inserisce il messaggio:
    Codice 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> 
    <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 "http://www.globalmeteo.altervista.org/chat/chat.php?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
    "; 
      } 
    if (
    $status == 0) 
      { 
      
    $apri_file=fopen($file_mess,"a+"); 
      fputs(
    $apri_file,$commento); 
      fclose(
    $apri_file); 
      Header("
    Location$url");   
      } 
    else 
      { 
      Header("
    Location$url");   
      } 

    ?> 
    </body> 
    </html>
    e quella che fa apparire i messaggi:
    Codice PHP:
    <html>
    <head>
    <title>Messaggi degli utenti</title>
    <?php
    include("config.php");
    echo 
    "<meta http-equiv=\"refresh\" content=\"$time_refresh\">";
    ?>
    </head>
    <body bgcolor="white">
    <?php
    //Creo l'array dove inserirò le informazioni
    $rows_utenti_info = array();
    //Leggo il file utenti
    $rows_utenti=file($file_reg);
    foreach(
    $rows_utenti AS $v
      { 
       
    $tmp explode('|'$v);
      
    $rows_utenti_info[$tmp[0]]['citta'] = $tmp[6];
        
    $rows_utenti_info[$tmp[0]]['provincia'] = $tmp[5];

     
    if (!(
    file_exists($file_mess))) {
        
    $fpw fopen($file_mess,"w"); fclose($fpw);
    }

    $rows_file=file($file_mess);
    $rows_file_ord=array_reverse($rows_file);
    $count=count($rows_file_ord);
    for (
    $i=0;($i<$count && $i<$num_messag);$i++)
    {
        
    $dati_utente=explode("|",$rows_file_ord[$i]);
        
    $nick=$dati_utente[0];
        
    eregi("\[(.*)\] \[(.*)\] (.*)"$nick$regnick); 
        
    $nick_orig=$regnick[3];
        
    $msg=$dati_utente[1];
        
    $nick=stripslashes($nick);
        
    $msg=stripslashes($msg);
        
    $nick str_replace('[em1]','[img]emoticons/em1.gif[/img]',$nick);
        
    $msg str_replace('[em1]','[img]emoticons/em1.gif[/img]',$msg);
        for (
    $x=1;$x<42\;$x++)
        {
            
    $img="em".$x;
            
    $img2="[".$img."]";
            
    $path="<img src=\"emoticons/$img.gif\">";
            
    $msg str_replace("$img2","$path",$msg);
        }
        for (
    $x=1;$x<42;$x++)
        {
            
    $img="em".$x;
            
    $img2="[".$img."]";
            
    $path="<img src=\"emoticons/$img.gif\">";
            
    $nick str_replace("$img2","$path",$nick);
        }
        
        echo 
    "[b]<font face=\"verdana\" size=\"2\" color=\"#000000\"><a title=\"".$rows_utenti_info[$nick_orig]['provincia']." (".$rows_utenti_info[$nick_orig]['citta'].")\">$nick</a></font>: [/b]"."<font face=\"verdana\" size=\"2\">".$msg."</font>
    "
    ;
    }
    ?>
    </body>
    </html>

  2. #2
    nessuno mi sa dare una qualche info su come fare a realizzare questa cosa?

  3. #3
    nessuno sa come fare?

  4. #4
    possibile che non esista una funzione che faccia al caso mio?

  5. #5
    beh dovresti utilizzare le espressioni regolari per verificare gli URL e poi, tramite delle richieste di tipo HEAD verificare il content-type dell'url e decidere quindi cosa far visualizzare (un link, una thumb e cosi via)

    per l'operazione ti conviene mettere dentro una cartella la cache delle immagini dei link cosi li tiri fuori una sola volta e via

    PS: per semplificare l'acquiisizione delle immagini ti consiglio di settare il referer sulla root del sito cosi salti i controlli non troppo evoluti sull'hot linking delle immagini
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  6. #6
    Originariamente inviato da daniele_dll
    beh dovresti utilizzare le espressioni regolari per verificare gli URL e poi, tramite delle richieste di tipo HEAD verificare il content-type dell'url e decidere quindi cosa far visualizzare (un link, una thumb e cosi via)

    per l'operazione ti conviene mettere dentro una cartella la cache delle immagini dei link cosi li tiri fuori una sola volta e via

    PS: per semplificare l'acquiisizione delle immagini ti consiglio di settare il referer sulla root del sito cosi salti i controlli non troppo evoluti sull'hot linking delle immagini
    innanzitutto io per la chat non uso database ,ma foglio di testo e poi quello che hai scritto è arabo per me che non conosco bene il php, se mi puoi spiegare come posso fare ti ringrazio.

  7. #7
    Originariamente inviato da giulio3x
    innanzitutto io per la chat non uso database ,ma foglio di testo e poi quello che hai scritto è arabo per me che non conosco bene il php, se mi puoi spiegare come posso fare ti ringrazio.
    io non ho parlato di database

    comunque, questo è quello che devi fare nella pagina che riceve il testo da visualizzare:
    - utilizzi le funzioni preg_* ( www.php.net/preg nello specifico www.php.net/preg_match_all ) per individuare gli indirizzi (ad es quelli che iniziano per http o https e finiscono uno spazio dopo)
    - una volta individuati gli url hai due sistemi e quello più semplice è verificare se la stringa termina con un .jpg, .png o .gif ... ovviamente questo escluderà a priori le immagini dinamiche generate tramite php ... che gestiresti tranquillamente con il metodo più avanzato ma mi sa che è troppo complesso
    - una volta che sai che quel dato indirizzo termina con .png/.jpg/.gif/.jpeg non devi fare altro che usare $contenutoImmagine = file_get_contets($indirizzo); e scrivere il contenuto su un file che poi vai a richiamare tramite html
    - una volta acquisito e scritto il file lo apri con le gd ( www.php.net/gd ) e lo ridimensioni in modo che non compaiano immagini di qualsiasi dimensioni nella chat salvando l'immagine ridimensionata in una cartella con un hash md5/sha1 o con lo stesso nome ... o comunque in un modo che puoi utilizzare per sapere se è quella l'immagine associata all'url
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #8
    guarda io ho provato a buttare giu alcune righe ma sono negato: mi puoi aiutare?

    il file sarebbe venuto così ma è sbagliato sicuro!

    Codice PHP:
    <html>
    <head>
    <title>Messaggi degli utenti</title>
    <?php
    include("config.php");
    echo 
    "<meta http-equiv=\"refresh\" content=\"$time_refresh\">";
    ?>
    </head>
    <body bgcolor="white">
    <?php
    //Creo l'array dove inserirò le informazioni
    $rows_utenti_info = array();
    //Leggo il file utenti
    $rows_utenti=file($file_reg);
    foreach(
    $rows_utenti AS $v
      { 
       
    $tmp explode('|'$v);
      
    $rows_utenti_info[$tmp[0]]['citta'] = $tmp[6];
        
    $rows_utenti_info[$tmp[0]]['provincia'] = $tmp[5];

     
    if (!(
    file_exists($file_mess))) {
        
    $fpw fopen($file_mess,"w"); fclose($fpw);
    }

    $rows_file=file($file_mess);
    $rows_file_ord=array_reverse($rows_file);
    $count=count($rows_file_ord);
    for (
    $i=0;($i<$count && $i<$num_messag);$i++)
    {
        
    $dati_utente=explode("|",$rows_file_ord[$i]);
        
    $nick=$dati_utente[0];
        
    eregi("\[(.*)\] \[(.*)\] (.*)"$nick$regnick); 
        
    $nick_orig=$regnick[3];
        
    $msg=$dati_utente[1];
        
    $nick=stripslashes($nick);
        
    $msg=stripslashes($msg);
        
    $nick str_replace('[em1]','[img]emoticons/em1.gif[/img]',$nick);
        
    $msg str_replace('[em1]','[img]emoticons/em1.gif[/img]',$msg);
        
    int preg_match_all string $jpg$gif$bmp);
        
    $contenutoImmagine file_get_contets($indirizzo);
        array 
    getimagesize string $filename [, array &$imageinfo ] )
        
        for (
    $x=1;$x<42\;$x++)
        {
            
    $img="em".$x;
            
    $img2="[".$img."]";
            
    $path="<img src=\"emoticons/$img.gif\">";
            
    $msg str_replace("$img2","$path",$msg);
        }
        for (
    $x=1;$x<42;$x++)
        {
            
    $img="em".$x;
            
    $img2="[".$img."]";
            
    $path="<img src=\"emoticons/$img.gif\">";
            
    $nick str_replace("$img2","$path",$nick);
        }
        
        echo 
    "[b]<font face=\"verdana\" size=\"2\" color=\"#000000\"><a title=\"".$rows_utenti_info[$nick_orig]['provincia']." (".$rows_utenti_info[$nick_orig]['citta'].")\">$nick</a></font>: [/b]"."<font face=\"verdana\" size=\"2\">".$msg."</font>
    "
    ;
    }
    ?>
    </body>
    </html>

  9. #9
    daniele_dll help me, o qualun'altro mi aiutino a buttare giù il codice che non ce la faccio da solo

  10. #10

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.