• User Attivo

    Io, personalmente, ti consiglio di usare facebook stesso per salvare il conteggio usando: ```
    http://graph.facebook.com/http://example.com

    
    Questa è una possibilità, magari ce ne sono di più funzionali...
    
    Ciao, Simone.

  • User Attivo

    Ciao,scusami non ho capito tramite questi valori ad esempio

    {
    "id": "indirizzo sito",
    "shares": 4,
    "comments": 1
    }come recuperare il valore di shares....in pratica a me servono i dati in modo da poter mostrare alla fine nel mio sito i link piu' condivisi....quindi non devo recuperare solo shares ma anche altri dati affinche poi posso mostrare questa sorta di classifica


  • User Attivo

    Ho scritto un piccolo programmino (non fare caso al mio stile un po' naif) in PHP che prende gli shares da graph di facebook:

    
    <?php
    $dati = file_get_contents('http://graph.facebook.com/http://example.com');
    $explode = explode(",", $dati);
    $shares = explode('":', $explode[1]);
    $shares = str_replace('}','',$shares[1]);
    echo $shares;
    ?>
    
    

    Che nel caso di example.com $shares vale (al momento) 56504.

    Tu puoi inserire un codice simile (dopo averlo adattato alle tue necessità) all'inizio delle tue varie pagine impostando automaticamente tramite PHP l'url della pagina al posto di http://example.com. Poi puoi fare quello che vuoi con la variabile $shares: aggiornarla ogni tot, salvarla nel database, scriverla su un file, in base a quello che ci devi fare.

    Ad esempio, se vuoi fare un elenco puoi salvarla sul database insieme all'url e al titolo una tabella che ha tre campi. Poi lì la personalizzi come meglio credi.

    Non so se esistono modi più rapidi per prendere il numero degli shares adatti alle tue esigenze, la mia è comunque solo un'ipotesi di lavoro.

    Simone.


  • User Attivo

    Scusa,è possibile tramite questa funzione di facebook recuperare anche l immagine ???


  • User Attivo

    Se i link sono sul tuo sito non puoi prenderla direttamente da lì?


  • User Attivo

    si sono direttamente sul mio sito,ma come faccio a recuperare il nome dell immagine relativa a quel link?


  • User Attivo

    Aggiungo...siccome ad ogni link tramite questo tag
    [HTML]<link rel="image_src" href="indirizzosito/imaagini/prova.gif" />
    [/HTML]
    ho fatto in modo di dargli un immagine univoca, dovrei recuperare dalla pagina in questione il contenuto compreso nel tag qui sopra piu' precisamente ciò che è compreso in href


  • User Attivo

    Non ho capito un altra cosa la variabile $shares si andrebbe ad aggiornare nel mio database ogni qualvolta viene condiviso quell url??


  • User Attivo

    Usi un cms?
    Ipotizzando che tu usi un CMS, verrebbe qualcosa del genere:

    <?php
    $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //Salva l'url della pagina
    $dati = file_get_contents('http://graph.facebook.com/'.$url); //Prende i dati relativi all'url in questione
    $explode = explode(",", $dati); 
    $shares = explode('":', $explode[1]); 
    $shares = str_replace('}','',$shares[1]); //Otteniamo il numero di condivisioni
    preg_match("<link rel=\"image_src\" href=\"(.*?)\" />", $content, $match); //Otteniamo l'url dell'immagine di default $content va sostituita con la variabile che contiene il tag
    $image=$match[1];
    echo "L'indirizzo: $url è stato condiviso su Facebook $shares volte. Immagine: $image"; //Ora abbiamo le tre variabili che possono essere usate come vogliamo
    //Da qui si può salvare nel database
    ?>
    
    ```Che andrebbe messo alla fine del codice PHP che scrive i contenuti.
    Devi sostituire $content con la variabile dove è il tag link rel.
    Ogni volta che un utente accede ad una pagina questo codice preleva la url, gli shares della pagina in questione e l'immagine di default, rispettivamente salvati nelle variabili $url, $shares e $image che poi potrai salvare in un database MYSQL per ottenere una "classifica" tramite quest'ultimo dei link più condivisi.
    
    Come frequenza di aggiornamento non è male.
     
    Schematizzando:
    L'utente accede ad una pagina -> Il codice preleva i dati -> I dati poi possono essere salvati sul database -> Dal database può essere creata una lista che poi può essere fatta visualizzare
    
    Ovviamente la parte del database la devi scrivere tu.
    
    Spero sia una buona soluzione e di essere stato chiaro.

  • User Attivo

    Nulla non mi recupera l immagine...
    Ho inserito questo codice per recuperare il tag link rel
    [php]
    $content="<link rel="image_src" href="indirizzomiosito/$foto_link"/>";
    [/php]


  • User Attivo

    Ecco un esempio:
    [php]
    <?php
    $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //Salva l'url della pagina
    $dati = file_get_contents('http://graph.facebook.com/'.$url); //Prende i dati relativi all'url in questione
    if (strstr($dati,'shares'))
    {
    $explode = explode(",", $dati);
    $shares = explode('":', $explode[1]);
    $shares = str_replace('}','',$shares[1]); //Otteniamo il numero di condivisioni
    }
    else {$shares= 0;}
    $content = '<html><head><link rel="image_src" href="http://www.example.com/prova.gif" /></head><body>Testo<br /><div style="z-index:3" class="smallfont" align="center">SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.</div><br /><div style="z-index:3" class="smallfont" align="center">SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.</div><br /><div style="z-index:3" class="smallfont" align="center">SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.</div></body></html>';
    preg_match("<link rel="image_src" href="(.*?)" />", $content, $match); //Otteniamo l'url dell'immagine di default $content va sostituita con la variabile che contiene il tag
    $image=$match[1];
    echo "L'indirizzo: $url è stato condiviso su Facebook $shares volte. Immagine: $image"; //Ora abbiamo le tre variabili che possono essere usate come vogliamo
    //Da qui si può salvare nel database
    ?>
    [/php]Che restituisce:
    L'indirizzo: [noparse]http://www.example.org/script/prova.php è stato condiviso su Facebook 0 volte. Immagine: http://www.example.com/prova.gif[/noparse]


  • User Attivo

    Ciao,ora funziona Grazie,praticamente facendo cosi' ogni qualvolta un utente visita quella pagina viene scritto un nuovo record nel database,quindi se un utente visita 10 volte la pagina viene scritto 10 volte quel record....se magari imposto un controllo sull ip potrei evitare questa cosa giusto??Ovvero la scrittura di piu' volte dello stesso record da parte dello stesso utente,giusto?


  • User Attivo

    Si, puoi farlo, poi dipende da ogni quanto vuoi aggiornare, da quante visite hai ecc. vedi tu, insomma.


  • User Attivo

    tecnicamente sarebbe possibile fare questa cosa..??Ovvero se quell ip ha già visitato quel link aggiorna l ultimo record relativo a quel link e a quell ip...possibile???


  • User Attivo

    Scusa ma non ho ben capito la tua domanda. Potresti riformularla in modo più chiaro?


  • User Attivo

    Cioè,se per esempio un ip ha già visitato quel link invece di scrivere un altro record aggiornare l ultimo record relatico a quel link e a quell ip


  • User Attivo

    Ma per ogni visita tu dovresti fare in modo che aggiorna sul database, e non che crea un nuovo record!


  • User Attivo

    quinndi dovrei usare UPDATE invece che insert,giusto??
    [PHP]

    $image=$match[1];
    echo "L'indirizzo: $url è stato condiviso su Facebook $shares volte. Immagine: $image"; //Ora abbiamo le tre variabili che possono essere usate come vogliamo
    //Da qui si può salvare nel database

    //Se quell ip non ha ancora visitato quell utente Invio i dati al database
    $query23 = "INSERT into condivisi (url,shares,image) VALUES ('$url','$shares','$image')";
    $result = @mysql_query($query23) or die (mysql_error());
    [/PHP]

    Non va bene cosi'


  • User Attivo

    Quale è il tuo problema?


  • User Attivo

    Scusami per aggiornare quel determinato link devo recuperare l url che si sta visitando e c'è l ho tramite la variabile $url,poi devo fare una query controllare che quel link esista già...se esiste riscriverlo giusto?A questo punto il controllo sull ip è superfluo giusto?