Visualizzazione risultati 1 fino 3 di 3

Discussione: estrarre dati da file JSON con una mia classe in PHP

  1. #1
    Guest

    Angry estrarre dati da file JSON con una mia classe in PHP

    Ciao,

    Vorrei segnalare agli admin di altervista.org che risulta del tutto impossibile estrarre dei dati da un file JSON di questo sito http://ipinfo.io/developers che rende disponibile appunto il JSON, per ricavare da un IP varie info.

    Ho sviluppato una classe PHP, che in locale (con Xampp, per capirci) funziona perfettamente. Il problema è quando la metto online, in Production qui sul mio sito, che NON funziona. A video, non vedo errori neanche istanziando la classe ed accedendo ad uno dei metodi con var_dump(). Ottengo solo un bel NULL!!! E ci metto pure :
    error_reporting(E_ALL);

    Sottolineo, come ho sbloccato da parecchio le connessioni Server to Server, ed infatti ad es. questa mia pagina usa un'altra API, resa disponibile da un altro sito per estrarre i dati da un altro JSON file sempre tramite cURL, e funziona perfettamente:

    http://newbielinux.altervista.org/geocoding.php

    Pertanto vorrei chiedere agli admin di altervista.org se per caso invece il sito che ho citato all'inizio, non viene da loro bloccato in qualche modo?


    Avevo infatti in precedenza provato a recuperare il JSON dal sito, usando file_get_contents() ovvero così:

    Codice PHP:
    function ip_details($ip)
    {
    $json = file_get_contents("http://ipinfo.io/{$ip}");
    $details = json_decode($json);
    return
    $details;
    }

    $details = ip_details('8.8.8.8');

    echo
    $details->ip . '<br />';
    echo
    $details->city . '<br />';
    echo
    $details->region . '<br />';
    echo
    $details->country . '<br />';
    echo
    $details->loc . '<br />';
    echo
    $details->hostname . '<br />';
    echo
    $details->org . '<br />';
    echo
    $details->postal . '<br />';
    che in locale, manco a dirlo, funziona perfettamente!.

    Allora mi sono creato una classe ricorrendo alle cURL, ma anche qui, ripeto NON ottengo nulla.

    Ecco la mia classe:

    Codice PHP:
    class Geolocalize

    {
    public
    $host = 'http://ipinfo.io/{IP}';

    public
    $ip;
    public
    $city;
    public
    $region;
    public
    $country;
    public
    $loc;
    public
    $hostname;
    public
    $org;
    public
    $postal;

    public function
    __construct($ip)
    {
    $host = str_replace('{IP}', $ip, $this->host);

    $response = $this->fetch($host);

    // decode the JSON into an associative array, setting the option true
    $data = json_decode($response, true);

    //set the vars
    $this->ip = $data['ip'];
    $this->city = $data['city'];
    $this->region = $data['region'];
    $this->country= $data['country'];
    $this->loc = $data['loc'];
    $this->hostname = $data['hostname'];
    $this->org = $data['org'];
    $this->postal = $data['postal'];
    }

    public function
    fetch($host)
    {

    if (
    function_exists('curl_init') )
    {
    // use cURL to fetch data
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $host);

    // if deactivated (with 0) you see the json from the API
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $response = curl_exec($ch);

    curl_close ($ch);
    }
    else if (
    ini_get('allow_url_fopen') )
    {
    //fall back to fopen()
    $response = file_get_contents($host, 'r');
    }

    return
    $response;
    }

    }
    e la uso, poi, in un altro mio file, in questo modo:

    Codice PHP:
    error_reporting(E_ALL);

    require_once
    'geo.class.php';

    $geo = new Geolocalize('74.125.71.138');

    echo
    var_dump($geo->ip) . '<br />';
    echo
    $geo->city . '<br />';
    echo
    $geo->region . '<br />';
    echo
    $geo->country . '<br />';
    echo
    $geo->loc . '<br />';
    echo
    $geo->hostname . '<br />';
    echo
    $geo->org . '<br />';
    echo
    $geo->postal . '<br />';
    Se qualche admin mi potesse aiutare, nel capire perché il sito http://ipinfo.io/developers risulta del tutto inutilizzabile (il loro JSON, intendo) mi farebbe davvero un gran favore.

    Non vedo assolutamente, ripeto, errori nel codice qui inserito....perciò non saprei davvero.

    Grazie e ciao.
    Ultima modifica di newbielinux : 22-12-2014 alle ore 22.21.35

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Le connessioni verso server esterni sono limitate attraverso una white list.
    Se vuoi rimuovere il limite, puoi farlo dal pannello di controllo di altervista inviando un semplice sms (maggiori istruzioni le trovi lì).

  3. #3
    Guest

    Predefinito

    e meno male che all'inizio del mio post avevo scritto quanto segue:

    Sottolineo, come ho sbloccato da parecchio le connessioni Server to Server, ed infatti ad es. questa mia pagina usa un'altra API, resa disponibile da un altro sito per estrarre i dati da un altro JSON file sempre tramite cURL, e funziona perfettamente:

    http://newbielinux.altervista.org/geocoding.php

    Saranno due anni buoni che ho rimosso il limite!!!

    Il problema invece è proprio nella connessione al sito: http://ipinfo.io/ che per qualche motivo ARCANO viene bloccato dai server di altervista.org

    Vorrei che qualche admin mi delucidasse in merito per favore!.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •