• User Attivo

    Creare form

    Ciao, ho questo script che fa un conteggio dei vari social di un determinato sito, solo che è statico. Mi spiego meglio, non è un form dove ogni utente puo controllare il proprio sito, ma si imposta fisso l'url e viene il conteggio.

    Io vorrei per l'appunto creare un form di richiesta, dove si inserisce l'url e vengono rilasciati i dati.

    Incollo i due file:

    primo file:

    class shareCount {private $url,$timeout;
    function __construct($url,$timeout=10) {
    $this->url=rawurlencode($url);
    $this->timeout=$timeout;
    }
    function get_tweets() { 
    $json_string = $this->file_get_contents_curl('http://urls.api.twitter.com/1/urls/count.json?url=' . $this->url);
    $json = json_decode($json_string, true);
    return isset($json['count'])?intval($json['count']):0;
    }
    function get_linkedin() { 
    $json_string = $this->file_get_contents_curl("http://www.linkedin.com/countserv/count/share?url=$this->url&format=json");
    $json = json_decode($json_string, true);
    return isset($json['count'])?intval($json['count']):0;
    }
    function get_fb() {
    $json_string = $this->file_get_contents_curl('http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls='.$this->url);
    $json = json_decode($json_string, true);
    return isset($json[0]['total_count'])?intval($json[0]['total_count']):0;
    }
    function get_plusones()  {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc");
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"'.rawurldecode($this->url).'","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
    $curl_results = curl_exec ($curl);
    curl_close ($curl);
    $json = json_decode($curl_results, true);
    return isset($json[0]['result']['metadata']['globalCounts']['count'])?intval( $json[0]['result']['metadata']['globalCounts']['count'] ):0;
    }
    function get_stumble() {
    $json_string = $this->file_get_contents_curl('http://www.stumbleupon.com/services/1.01/badge.getinfo?url='.$this->url);
    $json = json_decode($json_string, true);
    return isset($json['result']['views'])?intval($json['result']['views']):0;
    }
    function get_delicious() {
    $json_string = $this->file_get_contents_curl('http://feeds.delicious.com/v2/json/urlinfo/data?url='.$this->url);
    $json = json_decode($json_string, true);
    return isset($json[0]['total_posts'])?intval($json[0]['total_posts']):0;
    }
    function get_pinterest() {
    $return_data = $this->file_get_contents_curl('http://api.pinterest.com/v1/urls/count.json?url='.$this->url);
    $json_string = preg_replace('/^receiveCount\((.*)\)$/', "\\1", $return_data);
    $json = json_decode($json_string, true);
    return isset($json['count'])?intval($json['count']):0;
    }
    private function file_get_contents_curl($url){
    $ch=curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
    $cont = curl_exec($ch);
    if(curl_error($ch))
    {
    die(curl_error($ch));
    }
    return $cont;
    }
    }
    

    Mentre il secondo, dove mostra il conteggio è questo:

    require("conteggio.php");$obj=new shareCount("http://www.google.com");  //Inserire un url
    echo "Tweets: ".$obj->get_tweets(); //tweet
    echo "<br>Facebook: ".$obj->get_fb(); //facebook 
    echo "<br>Linkedin: ".$obj->get_linkedin(); //linkedin
    echo "<br>Google+: ".$obj->get_plusones(); //google
    echo "<br>Delicious: ".$obj->get_delicious(); //delicious
    echo "<br>StumbleUpon: ".$obj->get_stumble(); //Stumbleupon
    echo "<br>Pinterest: ".$obj->get_pinterest(); //pinterest
    
    

    Grazie mille a chi mi vorrà aiutare,
    Marco


  • User Attivo

    Per risolvere il problema è necessario acquisire l'URL e quindi processare i dati nel secondo script (per semplicità lo chiamerò giustappunto secondo-script.php) che inizia con la riga:

    [PHP]require("conteggio.php");$obj=new shareCount("http://www.google.com"); //Inserire un url[/PHP]

    che dovrà essere trasformata con queste:

    [PHP]require("conteggio.php");
    if (isset($_POST['url'])) $obj=new shareCount($_POST['url']);[/PHP]

    Il form sarà semplicemente:

    [HTML]<form action="secondo-script.php" method="post" name="conteggio_social">
    URL: <input name="url" type="text"><br>
    <input type="sumit" value="Ricerca">
    </form>[/HTML]

    Buon lavoro.


  • User Attivo

    Mille grazie, sei stato gentilissimo!
    Marco


  • User Attivo

    Prego 🙂